From b818bb98b84af804293385e9c029e8d1a005db1d Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 29 Nov 2023 15:00:17 -0800 Subject: [PATCH 01/71] start adding new side effect structs --- circuits/cpp/src/aztec3/circuits/abis/packers.hpp | 6 ++++++ yarn-project/aztec-nr/aztec/src/constants_gen.nr | 3 +++ yarn-project/circuits.js/src/constants.gen.ts | 3 +++ .../src/contracts/test_contract/src/interface.nr | 9 +++++++-- .../src/crates/types/src/abis/call_context.nr | 5 +++++ .../crates/types/src/abis/combined_accumulated_data.nr | 2 ++ 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/circuits/cpp/src/aztec3/circuits/abis/packers.hpp b/circuits/cpp/src/aztec3/circuits/abis/packers.hpp index 894481245a6..963433015c4 100644 --- a/circuits/cpp/src/aztec3/circuits/abis/packers.hpp +++ b/circuits/cpp/src/aztec3/circuits/abis/packers.hpp @@ -132,6 +132,9 @@ struct GeneratorIndexPacker { int GLOBAL_VARIABLES = GeneratorIndex::GLOBAL_VARIABLES; int PARTIAL_ADDRESS = GeneratorIndex::PARTIAL_ADDRESS; int BLOCK_HASH = GeneratorIndex::BLOCK_HASH; + int SIDE_EFFECT = GeneratorIndex::SIDE_EFFECT; + int SIDE_EFFECT_LINKED_TO_NOTE_HASH = GeneratorIndex::SIDE_EFFECT_LINKED_TO_NOTE_HASH; + int SIDE_EFFECT_WITH_RANGE= GeneratorIndex::SIDE_EFFECT_WITH_RANGE; int TX_REQUEST = GeneratorIndex::TX_REQUEST; int SIGNATURE_PAYLOAD = GeneratorIndex::SIGNATURE_PAYLOAD; int VK = GeneratorIndex::VK; @@ -170,6 +173,9 @@ struct GeneratorIndexPacker { GLOBAL_VARIABLES, PARTIAL_ADDRESS, BLOCK_HASH, + SIDE_EFFECT, + SIDE_EFFECT_LINKED_TO_NOTE_HASH, + SIDE_EFFECT_WITH_RANGE, TX_REQUEST, SIGNATURE_PAYLOAD, VK, diff --git a/yarn-project/aztec-nr/aztec/src/constants_gen.nr b/yarn-project/aztec-nr/aztec/src/constants_gen.nr index 368810a0a42..40a277f6b6a 100644 --- a/yarn-project/aztec-nr/aztec/src/constants_gen.nr +++ b/yarn-project/aztec-nr/aztec/src/constants_gen.nr @@ -167,6 +167,9 @@ global GENERATOR_INDEX__SIGNED_TX_REQUEST = 25; global GENERATOR_INDEX__GLOBAL_VARIABLES = 26; global GENERATOR_INDEX__PARTIAL_ADDRESS = 27; global GENERATOR_INDEX__BLOCK_HASH = 28; +global GENERATOR_INDEX__SIDE_EFFECT = 29; +global GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH = 30; +global GENERATOR_INDEX__SIDE_EFFECT_WITH_RANGE = 31; // Indices with size ≤ 16 global GENERATOR_INDEX__TX_REQUEST = 33; global GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 3cbbab21121..162ade58795 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -105,6 +105,9 @@ export enum GeneratorIndex { GLOBAL_VARIABLES = 26, PARTIAL_ADDRESS = 27, BLOCK_HASH = 28, + SIDE_EFFECT = 29, + SIDE_EFFECT_LINKED_TO_NOTE_HASH = 30, + SIDE_EFFECT_WITH_RANGE = 31, TX_REQUEST = 33, SIGNATURE_PAYLOAD = 34, VK = 41, diff --git a/yarn-project/noir-contracts/src/contracts/test_contract/src/interface.nr b/yarn-project/noir-contracts/src/contracts/test_contract/src/interface.nr index 65cf52e96b5..1bb62e9f3f6 100644 --- a/yarn-project/noir-contracts/src/contracts/test_contract/src/interface.nr +++ b/yarn-project/noir-contracts/src/contracts/test_contract/src/interface.nr @@ -1,5 +1,5 @@ /* Autogenerated file, do not edit! */ - + use dep::std; use dep::aztec::context::{ PrivateContext, PublicContext }; use dep::aztec::constants_gen::RETURN_VALUES_LENGTH; @@ -26,6 +26,7 @@ struct ManyNotesADeepStructTestCodeGenStruct { secret_hash: Field, } + // Interface for calling Test functions from a private context struct TestPrivateContextInterface { address: Field, @@ -241,6 +242,9 @@ impl TestPrivateContextInterface { } } + + + // Interface for calling Test functions from a public context struct TestPublicContextInterface { @@ -326,4 +330,5 @@ impl TestPublicContextInterface { } } - + + diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr index 37259a7e675..e1d8c59d3e0 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr @@ -12,6 +12,8 @@ struct CallContext{ is_delegate_call : bool, is_static_call : bool, is_contract_deployment : bool, + + start_side_effect_counter : Field, // maybe an int? but seems unlikely to overflow } impl CallContext { @@ -24,6 +26,7 @@ impl CallContext { self.is_delegate_call as Field, self.is_static_call as Field, self.is_contract_deployment as Field, + self.start_side_effect_counter, ], constants_gen::GENERATOR_INDEX__CALL_CONTEXT) } @@ -35,6 +38,7 @@ impl CallContext { assert(self.is_delegate_call == false); assert(self.is_static_call == false); assert(self.is_contract_deployment == false); + assert(self.start_side_effect_counter == 0); } fn eq(self, call_context: CallContext) -> bool { @@ -45,5 +49,6 @@ impl CallContext { & (call_context.is_delegate_call == self.is_delegate_call) & (call_context.is_static_call == self.is_static_call) & (call_context.is_contract_deployment == self.is_contract_deployment) + & (call_context.start_side_effect_counter== self.start_side_effect_counter) } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr index 6d39c700d92..74c54ab274d 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr @@ -32,6 +32,8 @@ struct CombinedAccumulatedData { new_commitments: [Field; MAX_NEW_COMMITMENTS_PER_TX], new_nullifiers: [Field; MAX_NEW_NULLIFIERS_PER_TX], + + // TODO: delete nullified_commitments when we do incremental squashes nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], private_call_stack: [CallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX], From c97cb48825900a63f613f302a99d1eb77ff395aa Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Sat, 2 Dec 2023 19:36:35 -0800 Subject: [PATCH 02/71] start changing Field to SideEffect{LinkedToNoteHash} --- .../circuits.js/src/structs/call_request.ts | 22 +++++++++++++--- .../crates/public-kernel-lib/src/common.nr | 14 +++++++---- .../src/crates/types/src/abis.nr | 1 + .../src/crates/types/src/abis/call_context.nr | 2 +- .../src/crates/types/src/abis/call_request.nr | 6 +++++ .../src/abis/combined_accumulated_data.nr | 25 ++++++++++--------- .../src/abis/private_circuit_public_inputs.nr | 9 ++++--- .../src/abis/public_circuit_public_inputs.nr | 14 ++++++++--- 8 files changed, 64 insertions(+), 29 deletions(-) diff --git a/yarn-project/circuits.js/src/structs/call_request.ts b/yarn-project/circuits.js/src/structs/call_request.ts index da7e3304206..503049e6332 100644 --- a/yarn-project/circuits.js/src/structs/call_request.ts +++ b/yarn-project/circuits.js/src/structs/call_request.ts @@ -83,6 +83,14 @@ export class CallRequest { * The call context of the contract calling the function. */ public callerContext: CallerContext, + /** + * The call context of the contract calling the function. + */ + public startSideEffectCounter: Fr, + /** + * The call context of the contract calling the function. + */ + public endSideEffectCounter: Fr, ) {} toBuffer() { @@ -96,7 +104,13 @@ export class CallRequest { */ public static fromBuffer(buffer: Buffer | BufferReader) { const reader = BufferReader.asReader(buffer); - return new CallRequest(Fr.fromBuffer(reader), reader.readObject(AztecAddress), reader.readObject(CallerContext)); + return new CallRequest( + Fr.fromBuffer(reader), + reader.readObject(AztecAddress), + reader.readObject(CallerContext), + new Fr(0), + new Fr(0), + ); } isEmpty() { @@ -108,14 +122,16 @@ export class CallRequest { * @returns A new instance of CallRequest with zero hash, caller contract address and caller context. */ public static empty() { - return new CallRequest(Fr.ZERO, AztecAddress.ZERO, CallerContext.empty()); + return new CallRequest(Fr.ZERO, AztecAddress.ZERO, CallerContext.empty(), new Fr(0), new Fr(0)); } equals(callRequest: CallRequest) { return ( callRequest.hash.equals(this.hash) && callRequest.callerContractAddress.equals(this.callerContractAddress) && - callRequest.callerContext.equals(this.callerContext) + callRequest.callerContext.equals(this.callerContext) && + callRequest.startSideEffectCounter.equals(this.startSideEffectCounter) && + callRequest.endSideEffectCounter.equals(this.endSideEffectCounter) && ); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 8bd199879b5..9d9419b76d4 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -11,6 +11,7 @@ use dep::types::{ public_circuit_public_inputs::PublicCircuitPublicInputs, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, + side_effect::SideEffect, }, address::Address, contrakt::{ @@ -63,8 +64,8 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, circuit_outpu // functions within this circuit: let start = previous_kernel.public_inputs.end; - circuit_outputs.end.new_commitments = array_to_bounded_vec(start.new_commitments); - circuit_outputs.end.new_nullifiers = array_to_bounded_vec(start.new_nullifiers); + circuit_outputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_zero(), SideEffect::zero()); + circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffect| c.is_zero(), SideEffect::zero()); circuit_outputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); circuit_outputs.end.public_call_stack = struct_array_to_bounded_vec(start.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -86,8 +87,11 @@ fn perform_static_call_checks(public_call: PublicCallData){ let public_inputs = public_call.call_stack_item.public_inputs; if public_inputs.call_context.is_static_call { // No state changes are allowed for static calls: - assert(is_empty_array(public_inputs.new_commitments), "new_commitments must be empty for static calls"); - assert(is_empty_array(public_inputs.new_nullifiers), "new_nullifiers must be empty for static calls"); + let new_commitments_length = struct_array_length(public_inputs.new_commitments, |r: SideEffect| r.is_zero()); + assert(new_commitments_length == 0, "new_commitments must be empty for static calls"); + + let new_nullifiers_length = struct_array_length(public_inputs.new_nullifiers, |r: SideEffect| r.is_zero()); + assert(new_nullifiers_length == 0, "new_nullifiers must be empty for static calls"); let update_requests_length = struct_array_length(public_inputs.contract_storage_update_requests, |r: StorageUpdateRequest| r.is_empty()); assert(update_requests_length == 0, "No contract storage update requests are allowed for static calls"); @@ -202,7 +206,7 @@ fn propagate_new_nullifiers(public_call: PublicCallData, circuit_outputs : &mut // Enhance commitments and nullifiers with domain separation whereby domain is the contract. let mut siloed_new_nullifiers : BoundedVec = BoundedVec::new(0); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { - let new_nullifier = new_nullifiers[i]; + let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { siloed_new_nullifiers.push(silo_nullifier(storage_contract_address, new_nullifier)); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis.nr index 8fd4ee28109..454a7b693f1 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis.nr @@ -29,3 +29,4 @@ mod public_call_data; mod public_circuit_public_inputs; mod private_circuit_public_inputs; +mod side_effect; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr index e1d8c59d3e0..ae2fceeb2f2 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr @@ -13,7 +13,7 @@ struct CallContext{ is_static_call : bool, is_contract_deployment : bool, - start_side_effect_counter : Field, // maybe an int? but seems unlikely to overflow + start_side_effect_counter : Field, // maybe an int? } impl CallContext { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_request.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_request.nr index 9c6737c9e3e..1b09c82c3dd 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_request.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_request.nr @@ -27,6 +27,8 @@ struct CallRequest { hash: Field, caller_contract_address: Address, caller_context: CallerContext, + start_side_effect_counter: Field, + end_side_effect_counter: Field, } impl CallRequest { @@ -35,6 +37,8 @@ impl CallRequest { hash: 0, caller_contract_address: Address::zero(), caller_context: dep::std::unsafe::zeroed(), + start_side_effect_counter: 0, + end_side_effect_counter: 0, } } @@ -46,5 +50,7 @@ impl CallRequest { (call_request.hash == self.hash) & (call_request.caller_contract_address.eq(self.caller_contract_address)) & (call_request.caller_context.eq(self.caller_context)) + & (call_request.start_side_effect_counter == self.start_side_effect_counter) + & (call_request.end_side_effect_counter == self.end_side_effect_counter) } } \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr index 74c54ab274d..8b00f0019ce 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr @@ -5,10 +5,11 @@ use crate::{ optionally_revealed_data::OptionallyRevealedData, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, + side_effect::SideEffect, }, hash::NUM_FIELDS_PER_SHA256, mocked::AggregationObject, - utils::bounded_vec::BoundedVec, + utils::bounded_vec::BoundedVec }; use dep::aztec::constants_gen::{ MAX_READ_REQUESTS_PER_TX, @@ -27,13 +28,13 @@ use dep::aztec::constants_gen::{ struct CombinedAccumulatedData { aggregation_object: AggregationObject, - read_requests: [Field; MAX_READ_REQUESTS_PER_TX], - pending_read_requests: [Field; MAX_PENDING_READ_REQUESTS_PER_TX], + read_requests: [SideEffect; MAX_READ_REQUESTS_PER_TX], + pending_read_requests: [SideEffect; MAX_PENDING_READ_REQUESTS_PER_TX], - new_commitments: [Field; MAX_NEW_COMMITMENTS_PER_TX], - new_nullifiers: [Field; MAX_NEW_NULLIFIERS_PER_TX], + new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], + new_nullifiers: [SideEffect; MAX_NEW_NULLIFIERS_PER_TX], - // TODO: delete nullified_commitments when we do incremental squashes + // TODO: delete nullified_commitments when (if?) we do incremental squashes nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], private_call_stack: [CallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX], @@ -60,8 +61,8 @@ struct CombinedAccumulatedData { struct FinalAccumulatedData { aggregation_object: AggregationObject, - new_commitments: [Field; MAX_NEW_COMMITMENTS_PER_TX], - new_nullifiers: [Field; MAX_NEW_NULLIFIERS_PER_TX], + new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], + new_nullifiers: [SideEffect; MAX_NEW_NULLIFIERS_PER_TX], nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], // For pending nullifiers, we have: @@ -86,11 +87,11 @@ struct FinalAccumulatedData { struct CombinedAccumulatedDataBuilder { aggregation_object: AggregationObject, - read_requests: BoundedVec, - pending_read_requests: BoundedVec, + read_requests: BoundedVec, + pending_read_requests: BoundedVec, - new_commitments: BoundedVec, - new_nullifiers: BoundedVec, + new_commitments: BoundedVec, + new_nullifiers: BoundedVec, nullified_commitments: BoundedVec, private_call_stack: BoundedVec, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index 12bb26c95ad..6c68236025f 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -2,6 +2,7 @@ use crate::{ abis::{ call_context::CallContext, historical_block_data::HistoricalBlockData, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, contrakt::deployment_data::ContractDeploymentData, hash::NUM_FIELDS_PER_SHA256, @@ -27,11 +28,11 @@ struct PrivateCircuitPublicInputs { args_hash: Field, return_values: [Field; RETURN_VALUES_LENGTH], - read_requests: [Field; MAX_READ_REQUESTS_PER_CALL], - pending_read_requests: [Field; MAX_PENDING_READ_REQUESTS_PER_CALL], + read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL], + pending_read_requests: [SideEffect; MAX_PENDING_READ_REQUESTS_PER_CALL], - new_commitments: [Field; MAX_NEW_COMMITMENTS_PER_CALL], - new_nullifiers: [Field; MAX_NEW_NULLIFIERS_PER_CALL], + new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], + new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_CALL], private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index 98370a90c2c..57e2454e069 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -12,6 +12,7 @@ use crate::{ abis::{ call_context::CallContext, historical_block_data::HistoricalBlockData, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::Address, contrakt::{ @@ -32,8 +33,8 @@ struct PublicCircuitPublicInputs{ contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL], public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], - new_commitments: [Field; MAX_NEW_COMMITMENTS_PER_CALL], - new_nullifiers: [Field; MAX_NEW_NULLIFIERS_PER_CALL], + new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], + new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256], @@ -61,8 +62,13 @@ impl PublicCircuitPublicInputs{ inputs.push(self.contract_storage_reads[i].hash()); } inputs.push_array(self.public_call_stack_hashes); - inputs.push_array(self.new_commitments); - inputs.push_array(self.new_nullifiers); + + for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ + inputs.push(self.new_commitments[i].hash()); + } + for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ + inputs.push(self.new_nullifiers[i].hash()); + } inputs.push_array(self.new_l2_to_l1_msgs); inputs.push_array(self.unencrypted_logs_hash); inputs.push(self.unencrypted_log_preimages_length); From 411b0dc234db5f2abe76f5eb7baf86e495b61e15 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Sun, 3 Dec 2023 18:23:35 -0800 Subject: [PATCH 03/71] start revert of pending_read_requests --- yarn-project/circuits.js/src/constants.gen.ts | 8 +- .../src/abis/combined_accumulated_data.nr | 11 ++- .../src/abis/private_circuit_public_inputs.nr | 18 +++- .../src/crates/types/src/abis/side_effect.nr | 91 +++++++++++++++++++ 4 files changed, 113 insertions(+), 15 deletions(-) create mode 100644 yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 162ade58795..a163de9d4d7 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -10,7 +10,6 @@ export const MAX_NEW_L2_TO_L1_MSGS_PER_CALL = 2; export const MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL = 16; export const MAX_PUBLIC_DATA_READS_PER_CALL = 16; export const MAX_READ_REQUESTS_PER_CALL = 32; -export const MAX_PENDING_READ_REQUESTS_PER_CALL = 32; export const MAX_NEW_COMMITMENTS_PER_TX = 64; export const MAX_NEW_NULLIFIERS_PER_TX = 64; export const MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX = 8; @@ -21,7 +20,6 @@ export const MAX_PUBLIC_DATA_READS_PER_TX = 16; export const MAX_NEW_CONTRACTS_PER_TX = 1; export const MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX = 4; export const MAX_READ_REQUESTS_PER_TX = 128; -export const MAX_PENDING_READ_REQUESTS_PER_TX = 128; export const NUM_ENCRYPTED_LOGS_HASHES_PER_TX = 1; export const NUM_UNENCRYPTED_LOGS_HASHES_PER_TX = 1; export const NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP = 16; @@ -59,15 +57,15 @@ export const CALL_CONTEXT_LENGTH = 7; export const HISTORIC_BLOCK_DATA_LENGTH = 7; export const FUNCTION_DATA_LENGTH = 4; export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 155; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 123; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 142; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; -export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; +export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 129; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 144; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 112 + 32 + 16 + 16 * 2; // adding side effect counters export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr index 8b00f0019ce..97788027496 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr @@ -5,7 +5,7 @@ use crate::{ optionally_revealed_data::OptionallyRevealedData, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, - side_effect::SideEffect, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, hash::NUM_FIELDS_PER_SHA256, mocked::AggregationObject, @@ -32,9 +32,9 @@ struct CombinedAccumulatedData { pending_read_requests: [SideEffect; MAX_PENDING_READ_REQUESTS_PER_TX], new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], - new_nullifiers: [SideEffect; MAX_NEW_NULLIFIERS_PER_TX], + new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_TX], - // TODO: delete nullified_commitments when (if?) we do incremental squashes + // TODO: delete nullified_commitments nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], private_call_stack: [CallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX], @@ -62,7 +62,8 @@ struct FinalAccumulatedData { aggregation_object: AggregationObject, new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], - new_nullifiers: [SideEffect; MAX_NEW_NULLIFIERS_PER_TX], + new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_TX], + // TODO: delete nullified_commitments nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], // For pending nullifiers, we have: @@ -91,7 +92,7 @@ struct CombinedAccumulatedDataBuilder { pending_read_requests: BoundedVec, new_commitments: BoundedVec, - new_nullifiers: BoundedVec, + new_nullifiers: BoundedVec, nullified_commitments: BoundedVec, private_call_stack: BoundedVec, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index 6c68236025f..bc110692a4e 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -29,12 +29,13 @@ struct PrivateCircuitPublicInputs { return_values: [Field; RETURN_VALUES_LENGTH], read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL], - pending_read_requests: [SideEffect; MAX_PENDING_READ_REQUESTS_PER_CALL], new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], + // todo: add the notehash to these, for squashing new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_CALL], + // todo: include counters as part of the hash? private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], @@ -62,10 +63,17 @@ impl PrivateCircuitPublicInputs { fields.push(self.call_context.hash()); fields.push(self.args_hash); fields.push_array(self.return_values); - fields.push_array(self.read_requests); - fields.push_array(self.pending_read_requests); - fields.push_array(self.new_commitments); - fields.push_array(self.new_nullifiers); + + // don't think there's map/flatmap in noir? + for i in 0..MAX_READ_REQUESTS_PER_CALL{ + fields.push_array(self.read_requests[i].to_field_array()); + } + for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ + fields.push_array(self.new_commitments[i].to_field_array()); + } + for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ + fields.push_array(self.new_nullifiers[i].to_field_array()); + } fields.push_array(self.nullified_commitments); fields.push_array(self.private_call_stack_hashes); fields.push_array(self.public_call_stack_hashes); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr new file mode 100644 index 00000000000..9054ebd3ac4 --- /dev/null +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -0,0 +1,91 @@ +use dep::aztec::constants_gen::{GENERATOR_INDEX__SIDE_EFFECT, GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH}; + +struct SideEffect{ + value: Field, + // counter is called "side_effect_counter" in david's PR + counter: Field, +} + +impl SideEffect { + pub fn hash(self) -> Field { + dep::std::hash::pedersen_hash_with_separator([ + self.value, + self.counter, + ], GENERATOR_INDEX__SIDE_EFFECT) + } + + pub fn assert_is_zero(self){ + assert(self.is_zero()); + } + + fn is_zero(self) -> bool { + (self.value == 0) + & (self.counter == 0) + } + + fn eq(self, side_effect: SideEffect) -> bool { + (self.value == side_effect.value) + & (self.counter == side_effect.counter) + } + + fn zero() -> SideEffect { + SideEffect { + value: 0, + counter: 0, + } + } + + fn to_field_array(self) -> [Field; 2] { + [self.value, self.counter] + } +} + +struct SideEffectLinkedToNoteHash{ + value: Field, + note_hash: Field, + counter: Field, +} + +impl SideEffectLinkedToNoteHash{ + pub fn hash(self) -> Field { + dep::std::hash::pedersen_hash_with_separator([ + self.value, + self.note_hash, + self.counter, + ], GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH) + } + + pub fn assert_is_zero(self){ + assert(self.is_zero()); + } + + pub fn is_zero(self) -> bool { + (self.value == 0) + & (self.note_hash == 0) + & (self.counter == 0) + } + + fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool { + (self.value == side_effect.value) + & (self.note_hash == side_effect.note_hash) + & (self.counter == side_effect.counter) + } + + fn zero() -> SideEffectLinkedToNoteHash { + SideEffectLinkedToNoteHash { + value: 0, + note_hash: 0, + counter: 0, + } + } + + fn to_field_array(self) -> [Field; 3] { + [self.value, self.note_hash, self.counter] + } +} + +// for nested calls - keep track of their side effect start/end, and verify +// that the start value is equal to what is passed in, and then resume +// outer call side effect counting using the returned end value +// we deviate from original implementation - no SideEffectWithRange, but now +// modify the CallRequest to include start/end counters directly From cc3428129bc13892b19f787b10e80741e2cae095 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Sun, 3 Dec 2023 18:51:34 -0800 Subject: [PATCH 04/71] update commitment/nullifier propogation --- .../crates/public-kernel-lib/src/common.nr | 29 +++++++++++++------ .../src/abis/private_circuit_public_inputs.nr | 2 +- .../src/abis/public_circuit_public_inputs.nr | 1 + .../src/crates/types/src/abis/side_effect.nr | 14 ++++----- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 9d9419b76d4..0c3f8068dc9 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -11,7 +11,7 @@ use dep::types::{ public_circuit_public_inputs::PublicCircuitPublicInputs, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, - side_effect::SideEffect, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::Address, contrakt::{ @@ -35,7 +35,6 @@ use dep::aztec::constants_gen::{ MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_PUBLIC_DATA_READS_PER_CALL, - MAX_READ_REQUESTS_PER_CALL, }; // Validates inputs to the kernel circuit that are common to all invocation scenarios. @@ -65,7 +64,7 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, circuit_outpu let start = previous_kernel.public_inputs.end; circuit_outputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_zero(), SideEffect::zero()); - circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffect| c.is_zero(), SideEffect::zero()); + circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_zero(), SideEffectLinkedToNoteHash::zero()); circuit_outputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); circuit_outputs.end.public_call_stack = struct_array_to_bounded_vec(start.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -90,7 +89,7 @@ fn perform_static_call_checks(public_call: PublicCallData){ let new_commitments_length = struct_array_length(public_inputs.new_commitments, |r: SideEffect| r.is_zero()); assert(new_commitments_length == 0, "new_commitments must be empty for static calls"); - let new_nullifiers_length = struct_array_length(public_inputs.new_nullifiers, |r: SideEffect| r.is_zero()); + let new_nullifiers_length = struct_array_length(public_inputs.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_zero()); assert(new_nullifiers_length == 0, "new_nullifiers must be empty for static calls"); let update_requests_length = struct_array_length(public_inputs.contract_storage_update_requests, |r: StorageUpdateRequest| r.is_empty()); @@ -189,11 +188,16 @@ fn propagate_new_commitments(public_call: PublicCallData, circuit_outputs : &mut let new_commitments = public_call.call_stack_item.public_inputs.new_commitments; let storage_contract_address = public_call_public_inputs.call_context.storage_contract_address; - let mut siloed_new_commitments : BoundedVec = BoundedVec::new(0); + let mut siloed_new_commitments : BoundedVec = BoundedVec::new(SideEffect::zero()); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL { - let new_commitment = new_commitments[i]; + let new_commitment = new_commitments[i].value; if new_commitment != 0 { - siloed_new_commitments.push(silo_commitment(storage_contract_address, new_commitment)); + let siloed_new_commitment = silo_commitment(storage_contract_address, new_commitment); + siloed_new_commitments.push(SideEffect{ + value: siloed_new_commitment, + counter: new_commitments[i].counter, + + }); } } circuit_outputs.end.new_commitments.push_vec(siloed_new_commitments); @@ -204,11 +208,18 @@ fn propagate_new_nullifiers(public_call: PublicCallData, circuit_outputs : &mut let storage_contract_address = public_call.call_stack_item.public_inputs.call_context.storage_contract_address; // Enhance commitments and nullifiers with domain separation whereby domain is the contract. - let mut siloed_new_nullifiers : BoundedVec = BoundedVec::new(0); + let mut siloed_new_nullifiers : BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { - siloed_new_nullifiers.push(silo_nullifier(storage_contract_address, new_nullifier)); + let siloed_new_nullifier = silo_nullifier(storage_contract_address, new_nullifier); + siloed_new_nullifiers.push( + SideEffectLinkedToNoteHash{ + value: siloed_new_nullifier, + counter: new_nullifiers[i].counter, + note_hash: new_nullifiers[i].note_hash, + }); + } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index bc110692a4e..4dff28861ac 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -15,7 +15,6 @@ use dep::aztec::{ MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, RETURN_VALUES_LENGTH, @@ -66,6 +65,7 @@ impl PrivateCircuitPublicInputs { // don't think there's map/flatmap in noir? for i in 0..MAX_READ_REQUESTS_PER_CALL{ + // could also just push the hash, but probably not worth extra constraints? fields.push_array(self.read_requests[i].to_field_array()); } for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index 57e2454e069..b2d23beec2c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -32,6 +32,7 @@ struct PublicCircuitPublicInputs{ contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL], contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL], + // todo: add sideeffect ranges for the input to these hashes public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index 9054ebd3ac4..76a9c10fed4 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -18,24 +18,24 @@ impl SideEffect { assert(self.is_zero()); } - fn is_zero(self) -> bool { + pub fn is_zero(self) -> bool { (self.value == 0) & (self.counter == 0) } - fn eq(self, side_effect: SideEffect) -> bool { + pub fn eq(self, side_effect: SideEffect) -> bool { (self.value == side_effect.value) & (self.counter == side_effect.counter) } - fn zero() -> SideEffect { + pub fn zero() -> SideEffect { SideEffect { value: 0, counter: 0, } } - fn to_field_array(self) -> [Field; 2] { + pub fn to_field_array(self) -> [Field; 2] { [self.value, self.counter] } } @@ -65,13 +65,13 @@ impl SideEffectLinkedToNoteHash{ & (self.counter == 0) } - fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool { + pub fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool { (self.value == side_effect.value) & (self.note_hash == side_effect.note_hash) & (self.counter == side_effect.counter) } - fn zero() -> SideEffectLinkedToNoteHash { + pub fn zero() -> SideEffectLinkedToNoteHash { SideEffectLinkedToNoteHash { value: 0, note_hash: 0, @@ -79,7 +79,7 @@ impl SideEffectLinkedToNoteHash{ } } - fn to_field_array(self) -> [Field; 3] { + pub fn to_field_array(self) -> [Field; 3] { [self.value, self.note_hash, self.counter] } } From ac0bca7943cb945e383a8c6cacea64ffad84b3a2 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Sun, 3 Dec 2023 20:01:11 -0800 Subject: [PATCH 05/71] more type changes --- .../crates/private-kernel-lib/src/common.nr | 31 ++++++---- .../src/private_kernel_init.nr | 56 +++++++++++++++---- .../src/abis/combined_accumulated_data.nr | 4 -- .../src/tests/public_call_data_builder.nr | 4 ++ 4 files changed, 68 insertions(+), 27 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 9e9422608f9..3bfaf4f5a03 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -18,6 +18,7 @@ use dep::types::{ private_circuit_public_inputs::PrivateCircuitPublicInputs, private_kernel::private_call_data::PrivateCallData, previous_kernel_data::PreviousKernelData, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::{Address, EthAddress}, contrakt::deployment_data::ContractDeploymentData, @@ -72,13 +73,13 @@ pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { // - https://discourse.aztec.network/t/spending-notes-which-havent-yet-been-inserted/180 pub fn validate_read_requests( historic_note_hash_tree_root: Field, - read_requests: [Field; MAX_READ_REQUESTS_PER_CALL], + read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL], read_request_membership_witnesses: [ReadRequestMembershipWitness; MAX_READ_REQUESTS_PER_CALL], ) { // membership witnesses must resolve to the same private data root // for every request in all kernel iterations for rr_idx in 0..MAX_READ_REQUESTS_PER_CALL { - let read_request = read_requests[rr_idx]; + let read_request = read_requests[rr_idx].value; let witness = read_request_membership_witnesses[rr_idx]; // A pending commitment is the one that is not yet added to private data tree @@ -107,9 +108,10 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, public_inputs // functions within this circuit: let start = previous_kernel.public_inputs.end; - public_inputs.end.read_requests = array_to_bounded_vec(start.read_requests); - public_inputs.end.new_commitments = array_to_bounded_vec(start.new_commitments); - public_inputs.end.new_nullifiers = array_to_bounded_vec(start.new_nullifiers); + public_inputs.end.read_requests = struct_array_to_bounded_vec(start.read_requests, |c: SideEffect| c.is_zero(), SideEffect::zero()); + + public_inputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_zero(), SideEffect::zero()); + public_inputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_zero(), SideEffectLinkedToNoteHash::zero()); public_inputs.end.nullified_commitments = array_to_bounded_vec(start.nullified_commitments); public_inputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -179,12 +181,15 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) - let mut siloed_read_requests: BoundedVec = BoundedVec::new(0); + let mut siloed_read_requests: BoundedVec = BoundedVec::new(SideEffect::new()); for i in 0..MAX_READ_REQUESTS_PER_CALL { - let read_request = read_requests[i]; + let read_request = read_requests[i].value; let witness = read_request_membership_witnesses[i]; if witness.is_transient & (read_request != 0) { // only forward transient to public inputs - siloed_read_requests.push(silo_commitment(storage_contract_address, read_request)) + siloed_read_requests.push(SideEffect{ + counter: read_requests[i].counter, + value: silo_commitment(storage_contract_address, read_request) + }) } } public_inputs.end.read_requests.push_vec(siloed_read_requests); @@ -192,11 +197,15 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // Enhance commitments and nullifiers with domain separation whereby domain is the contract. // // nullifiers - let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(0); + let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::new()); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { - let new_nullifier = new_nullifiers[i]; + let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { - siloed_new_nullifiers.push(silo_nullifier(storage_contract_address, new_nullifier)); + siloed_new_nullifiers.push(SideEffectLinkedToNoteHash{ + value: silo_nullifier(storage_contract_address, new_nullifier)) + counter: new_nullifiers[i].counter, + note_hash: new_nullifiers[i].note_hash, + }; } } public_inputs.end.new_nullifiers.push_vec(siloed_new_nullifiers); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index 7266c691924..b1727061006 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -66,7 +66,12 @@ impl PrivateKernelInputsInit { fn update_end_values(self, public_inputs: &mut KernelCircuitPublicInputsBuilder) { // Since it's the first iteration, we need to push the the tx hash nullifier into the `new_nullifiers` array - public_inputs.end.new_nullifiers.push(self.tx_request.hash()); + public_inputs.end.new_nullifiers.push(SideEffectLinkedToNoteHash{ + // weird case where the value is the hash already... so duplicate the value for "note_hash" or leave as 0? + value: self.tx_request.hash(), + note_hash: self.tx_request.hash(), + counter: 0, + }); // Push an empty nullified commitment too since each nullifier must // be paired with a nonzero (real or "empty") nullified commitment @@ -248,7 +253,13 @@ mod tests { fn input_validation_malformed_arrays_return_values() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.return_values.push_array([0, 9123]); + builder.private_call.public_inputs.return_values.push_array([SideEffect{ + value: 0, + counter: 0}, + SideEffect{ + value: 9123, + counter: 1 + }]); builder.failed(); } @@ -257,7 +268,13 @@ mod tests { fn input_validation_malformed_arrays_read_requests() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.read_requests.push_array([0, 9123]); + builder.private_call.public_inputs.read_requests.push_array([SideEffect{ + value: 0, + counter: 0}, + SideEffect{ + value: 9123, + counter: 1 + }]); builder.failed(); } @@ -266,7 +283,13 @@ mod tests { fn input_validation_malformed_arrays_commitments() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.new_commitments.push_array([0, 9123]); + builder.private_call.public_inputs.new_commitments.push_array([SideEffect{ + value: 0, + counter: 0}, + SideEffect{ + value: 9123, + counter: 1 + }]); builder.failed(); } @@ -275,7 +298,16 @@ mod tests { fn input_validation_malformed_arrays_nullifiers() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.new_nullifiers.push_array([0, 9123]); + builder.private_call.public_inputs.new_nullifiers.push_array([SideEffectLinkedToNoteHash{ + value: 0, + note_hash: 0, + counter: 0, + }, + SideEffectLinkedToNoteHash{ + value: 9123, + note_hash: 0, + counter: 1, + }]); builder.failed(); } @@ -500,7 +532,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), 0); @@ -516,7 +548,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), 0); @@ -532,7 +564,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), 0); @@ -548,7 +580,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), 0); @@ -564,7 +596,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), 1); @@ -581,7 +613,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), 1); @@ -597,7 +629,7 @@ mod tests { validate_no_new_deployed_contract(public_inputs); // Check the first nullifier is hash of the signed tx request - assert_eq(public_inputs.end.new_nullifiers[0], builder.tx_request.hash()); + assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded assert_eq(array_length(public_inputs.end.read_requests), MAX_READ_REQUESTS_PER_CALL); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr index 97788027496..dfd576a1f25 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr @@ -29,7 +29,6 @@ struct CombinedAccumulatedData { aggregation_object: AggregationObject, read_requests: [SideEffect; MAX_READ_REQUESTS_PER_TX], - pending_read_requests: [SideEffect; MAX_PENDING_READ_REQUESTS_PER_TX], new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_TX], @@ -89,7 +88,6 @@ struct CombinedAccumulatedDataBuilder { aggregation_object: AggregationObject, read_requests: BoundedVec, - pending_read_requests: BoundedVec, new_commitments: BoundedVec, new_nullifiers: BoundedVec, @@ -122,7 +120,6 @@ impl CombinedAccumulatedDataBuilder { aggregation_object: self.aggregation_object, read_requests: self.read_requests.storage, - pending_read_requests: self.pending_read_requests.storage, new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, @@ -150,7 +147,6 @@ impl CombinedAccumulatedDataBuilder { pub fn to_final(self) -> FinalAccumulatedData { assert_eq(self.read_requests.len, 0, "Final accumulated data: read requests not empty"); - assert_eq(self.pending_read_requests.len, 0, "Final accumulated data: pending read requests not empty"); assert_eq(self.public_data_update_requests.len, 0, "Final accumulated data: public data update requests not empty"); assert_eq(self.public_data_reads.len, 0, "Final accumulated data: public data reads not empty"); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr index fdf4678b161..e9194cc7345 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr @@ -113,6 +113,10 @@ impl PublicCallDataBuilder { hash, caller_contract_address: self.contract_address, caller_context, + // todo: real values? + start_side_effect_counter: i, + end_side_effect_counter: i + 1, + }; self.public_inputs.public_call_stack_hashes.push(hash); self.public_call_stack.push(call_request); From 4bec7cdde72a059b3c7f30b9ff8b0c49af184cbc Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 5 Dec 2023 12:41:59 -0800 Subject: [PATCH 06/71] start changing context.nr --- yarn-project/aztec-nr/aztec/src/context.nr | 6 ------ 1 file changed, 6 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 3efe8bda4ac..b07ea155fc9 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -60,7 +60,6 @@ struct PrivateContext { return_values : BoundedVec, read_requests: BoundedVec, - pending_read_requests: BoundedVec, new_commitments: BoundedVec, new_nullifiers: BoundedVec, @@ -145,7 +144,6 @@ impl PrivateContext { args_hash: self.args_hash, return_values: self.return_values.storage, read_requests: self.read_requests.storage, - pending_read_requests: self.pending_read_requests.storage, new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, nullified_commitments: self.nullified_commitments.storage, @@ -168,10 +166,6 @@ impl PrivateContext { self.read_requests.push(read_request); } - pub fn push_pending_read_request(&mut self, pending_read_request: Field) { - self.pending_read_requests.push(pending_read_request); - } - pub fn push_new_note_hash(&mut self, note_hash: Field) { self.new_commitments.push(note_hash); } From 976a30594ea869f1933774f519fc8959a23c8bad Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 5 Dec 2023 13:47:21 -0800 Subject: [PATCH 07/71] start updating circuits struct --- yarn-project/aztec-nr/aztec/src/context.nr | 3 - yarn-project/circuits.js/src/abis/abis.ts | 5 +- yarn-project/circuits.js/src/constants.gen.ts | 2 +- .../circuits.js/src/structs/call_request.ts | 12 +++- .../src/structs/call_stack_item.ts | 7 ++- yarn-project/circuits.js/src/structs/index.ts | 45 +++++++------- .../kernel/combined_accumulated_data.ts | 51 ++++++++------- .../structs/private_circuit_public_inputs.ts | 31 ++++------ .../src/structs/public_call_request.ts | 2 +- .../circuits.js/src/tests/factories.ts | 62 +++++++++++++++---- .../src/integration_l1_publisher.test.ts | 10 +-- 11 files changed, 135 insertions(+), 95 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index b07ea155fc9..557a67ea0be 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -8,7 +8,6 @@ use crate::constants_gen::{ MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_READ_REQUESTS_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH, }; @@ -86,7 +85,6 @@ impl PrivateContext { return_values: BoundedVec::new(0), read_requests: BoundedVec::new(0), - pending_read_requests: BoundedVec::new(0), new_commitments: BoundedVec::new(0), new_nullifiers: BoundedVec::new(0), @@ -272,7 +270,6 @@ impl PrivateContext { args_hash: fields[12], return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 13), read_requests: arr_copy_slice(fields, [0; MAX_READ_REQUESTS_PER_CALL], 17), - pending_read_requests: arr_copy_slice(fields, [0; MAX_READ_REQUESTS_PER_CALL], 49), new_commitments: arr_copy_slice(fields, [0; MAX_NEW_COMMITMENTS_PER_CALL], 81), new_nullifiers: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 97), nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 113), diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index dd249bbb5d6..dc6a3344cbb 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -520,7 +520,6 @@ function computePrivateInputsHash(input: PrivateCircuitPublicInputs) { input.argsHash.toBuffer(), ...input.returnValues.map(fr => fr.toBuffer()), ...input.readRequests.map(fr => fr.toBuffer()), - ...input.pendingReadRequests.map(fr => fr.toBuffer()), ...input.newCommitments.map(fr => fr.toBuffer()), ...input.newNullifiers.map(fr => fr.toBuffer()), ...input.nullifiedCommitments.map(fr => fr.toBuffer()), @@ -543,7 +542,9 @@ function computePrivateInputsHash(input: PrivateCircuitPublicInputs) { input.version.toBuffer(), ]; if (toHash.length != PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH) { - throw new Error('Incorrect number of input fields when hashing PrivateCircuitPublicInputs'); + throw new Error( + `Incorrect number of input fields when hashing PrivateCircuitPublicInputs ${toHash.length}, ${PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH}`, + ); } return pedersenHash(toHash, GeneratorIndex.PRIVATE_CIRCUIT_PUBLIC_INPUTS); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index a163de9d4d7..47325fdd321 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -65,7 +65,7 @@ export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 129; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 112 + 32 + 16 + 16 * 2; // adding side effect counters +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 112; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/circuits.js/src/structs/call_request.ts b/yarn-project/circuits.js/src/structs/call_request.ts index 503049e6332..357aead7679 100644 --- a/yarn-project/circuits.js/src/structs/call_request.ts +++ b/yarn-project/circuits.js/src/structs/call_request.ts @@ -114,7 +114,13 @@ export class CallRequest { } isEmpty() { - return this.hash.isZero() && this.callerContractAddress.isZero() && this.callerContext.isEmpty(); + return ( + this.hash.isZero() && + this.callerContractAddress.isZero() && + this.callerContext.isEmpty() && + this.startSideEffectCounter.isZero() && + this.endSideEffectCounter.isZero() + ); } /** @@ -129,9 +135,9 @@ export class CallRequest { return ( callRequest.hash.equals(this.hash) && callRequest.callerContractAddress.equals(this.callerContractAddress) && - callRequest.callerContext.equals(this.callerContext) && + callRequest.callerContext.equals(this.callerContext) && callRequest.startSideEffectCounter.equals(this.startSideEffectCounter) && - callRequest.endSideEffectCounter.equals(this.endSideEffectCounter) && + callRequest.endSideEffectCounter.equals(this.endSideEffectCounter) ); } } diff --git a/yarn-project/circuits.js/src/structs/call_stack_item.ts b/yarn-project/circuits.js/src/structs/call_stack_item.ts index 9e1a67857a2..76a90b43c2e 100644 --- a/yarn-project/circuits.js/src/structs/call_stack_item.ts +++ b/yarn-project/circuits.js/src/structs/call_stack_item.ts @@ -1,4 +1,5 @@ import { AztecAddress } from '@aztec/foundation/aztec-address'; +import { Fr } from '@aztec/foundation/fields'; import { computePrivateCallStackItemHash, computePublicCallStackItemHash } from '../abis/abis.js'; import { serializeToBuffer } from '../utils/serialize.js'; @@ -77,7 +78,8 @@ export class PrivateCallStackItem { const callerContext = callContext.isDelegateCall ? new CallerContext(callContext.msgSender, callContext.storageContractAddress) : CallerContext.empty(); - return new CallRequest(this.hash(), callContext.msgSender, callerContext); + // todo: populate side effect counters correctly + return new CallRequest(this.hash(), callContext.msgSender, callerContext, Fr.ZERO, Fr.ZERO); } } @@ -147,6 +149,7 @@ export class PublicCallStackItem { const callerContext = callContext.isDelegateCall ? new CallerContext(callContext.msgSender, callContext.storageContractAddress) : CallerContext.empty(); - return new CallRequest(this.hash(), callContext.msgSender, callerContext); + // todo: populate side effect counters correctly + return new CallRequest(this.hash(), callContext.msgSender, callerContext, Fr.ZERO, Fr.ZERO); } } diff --git a/yarn-project/circuits.js/src/structs/index.ts b/yarn-project/circuits.js/src/structs/index.ts index c8ed1585aea..b9c94af8afb 100644 --- a/yarn-project/circuits.js/src/structs/index.ts +++ b/yarn-project/circuits.js/src/structs/index.ts @@ -1,37 +1,38 @@ -export * from './global_variables.js'; -export * from './rollup/base_rollup.js'; -export * from './rollup/merge_rollup.js'; -export * from './rollup/root_rollup.js'; -export * from './rollup/append_only_tree_snapshot.js'; -export * from './rollup/base_or_merge_rollup_public_inputs.js'; -export * from './rollup/previous_rollup_data.js'; +export * from '@aztec/foundation/eth-address'; +export * from './aggregation_object.js'; export * from './call_context.js'; +export * from './call_request.js'; +export * from './call_stack_item.js'; +export * from './complete_address.js'; export * from './function_data.js'; -export * from './kernel/private_kernel.js'; -export * from './kernel/public_kernel.js'; +export * from './function_leaf_preimage.js'; +export * from './global_variables.js'; export * from './kernel/combined_accumulated_data.js'; export * from './kernel/combined_constant_data.js'; export * from './kernel/historic_block_data.js'; export * from './kernel/previous_kernel_data.js'; +export * from './kernel/private_kernel.js'; export * from './kernel/public_inputs.js'; export * from './kernel/public_inputs_final.js'; +export * from './kernel/public_kernel.js'; +export * from './membership_witness.js'; export * from './private_circuit_public_inputs.js'; +export * from './proof.js'; +export * from './public_call_request.js'; export * from './public_circuit_public_inputs.js'; -export * from './call_request.js'; -export * from './call_stack_item.js'; +export * from './read_request_membership_witness.js'; +export * from './rollup/append_only_tree_snapshot.js'; +export * from './rollup/base_or_merge_rollup_public_inputs.js'; +export * from './rollup/base_rollup.js'; +export * from './rollup/merge_rollup.js'; +export * from './rollup/previous_rollup_data.js'; +export * from './rollup/root_rollup.js'; export * from './shared.js'; -export * from './proof.js'; -export * from './tx_request.js'; +export * from './side_effects.js'; export * from './tx_context.js'; +export * from './tx_request.js'; export * from './verification_key.js'; -export * from './function_leaf_preimage.js'; -export * from './aggregation_object.js'; -export * from './membership_witness.js'; -export * from './read_request_membership_witness.js'; -export * from './public_call_request.js'; -export * from './complete_address.js'; -export * from '@aztec/foundation/eth-address'; -export * from '@aztec/foundation/fields'; -export * from '@aztec/foundation/aztec-address'; export { FunctionSelector } from '@aztec/foundation/abi'; +export * from '@aztec/foundation/aztec-address'; +export * from '@aztec/foundation/fields'; diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index 4f84c10ff55..53d9712c847 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -7,7 +7,6 @@ import { MAX_NEW_L2_TO_L1_MSGS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX, - MAX_PENDING_READ_REQUESTS_PER_TX, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, @@ -18,7 +17,15 @@ import { import { makeTuple } from '../../index.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { CallRequest } from '../call_request.js'; -import { AggregationObject, AztecAddress, EthAddress, Fr, FunctionData } from '../index.js'; +import { + AggregationObject, + AztecAddress, + EthAddress, + Fr, + FunctionData, + SideEffect, + SideEffectLinkedToNoteHash, +} from '../index.js'; /** * The information assembled after the contract deployment was processed by the private kernel circuit. @@ -292,19 +299,15 @@ export class CombinedAccumulatedData { /** * All the read requests made in this transaction. */ - public readRequests: Tuple, - /** - * All the read requests made in this transaction. - */ - public pendingReadRequests: Tuple, + public readRequests: Tuple, /** * The new commitments made in this transaction. */ - public newCommitments: Tuple, + public newCommitments: Tuple, /** * The new nullifiers made in this transaction. */ - public newNullifiers: Tuple, + public newNullifiers: Tuple, /** * The commitments which are nullified by a nullifier in the above list. For pending nullifiers, we have: * nullifiedCommitments[j] != 0 if and only if newNullifiers[j] nullifies nullifiedCommitments[j] @@ -362,7 +365,6 @@ export class CombinedAccumulatedData { return serializeToBuffer( this.aggregationObject, this.readRequests, - this.pendingReadRequests, this.newCommitments, this.newNullifiers, this.nullifiedCommitments, @@ -393,10 +395,9 @@ export class CombinedAccumulatedData { const reader = BufferReader.asReader(buffer); return new CombinedAccumulatedData( reader.readObject(AggregationObject), - reader.readArray(MAX_READ_REQUESTS_PER_TX, Fr), - reader.readArray(MAX_PENDING_READ_REQUESTS_PER_TX, Fr), - reader.readArray(MAX_NEW_COMMITMENTS_PER_TX, Fr), - reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, Fr), + reader.readArray(MAX_READ_REQUESTS_PER_TX, SideEffect), + reader.readArray(MAX_NEW_COMMITMENTS_PER_TX, SideEffect), + reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, Fr), reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), @@ -415,8 +416,7 @@ export class CombinedAccumulatedData { static fromFinalAccumulatedData(finalData: FinalAccumulatedData): CombinedAccumulatedData { return new CombinedAccumulatedData( finalData.aggregationObject, - makeTuple(MAX_READ_REQUESTS_PER_TX, Fr.zero), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_TX, Fr.zero), + makeTuple(MAX_READ_REQUESTS_PER_TX, SideEffect.empty), finalData.newCommitments, finalData.newNullifiers, finalData.nullifiedCommitments, @@ -446,10 +446,9 @@ export class CombinedAccumulatedData { static empty() { return new CombinedAccumulatedData( AggregationObject.makeFake(), - makeTuple(MAX_READ_REQUESTS_PER_TX, Fr.zero), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_TX, Fr.zero), - makeTuple(MAX_NEW_COMMITMENTS_PER_TX, Fr.zero), - makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero), + makeTuple(MAX_READ_REQUESTS_PER_TX, SideEffect.empty), + makeTuple(MAX_NEW_COMMITMENTS_PER_TX, SideEffect.empty), + makeTuple(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), @@ -479,11 +478,11 @@ export class FinalAccumulatedData { /** * The new commitments made in this transaction. */ - public newCommitments: Tuple, + public newCommitments: Tuple, /** * The new nullifiers made in this transaction. */ - public newNullifiers: Tuple, + public newNullifiers: Tuple, /** * The commitments which are nullified by a nullifier in the above list. For pending nullifiers, we have: * nullifiedCommitments[j] != 0 if and only if newNullifiers[j] nullifies nullifiedCommitments[j] @@ -560,8 +559,8 @@ export class FinalAccumulatedData { const reader = BufferReader.asReader(buffer); return new FinalAccumulatedData( reader.readObject(AggregationObject), - reader.readArray(MAX_NEW_COMMITMENTS_PER_TX, Fr), - reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, Fr), + reader.readArray(MAX_NEW_COMMITMENTS_PER_TX, SideEffect), + reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, Fr), reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), @@ -587,8 +586,8 @@ export class FinalAccumulatedData { static empty() { return new FinalAccumulatedData( AggregationObject.makeFake(), - makeTuple(MAX_NEW_COMMITMENTS_PER_TX, Fr.zero), - makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero), + makeTuple(MAX_NEW_COMMITMENTS_PER_TX, SideEffect.empty), + makeTuple(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index 11dd3c26d39..283942fabd1 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -6,7 +6,6 @@ import { MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_READ_REQUESTS_PER_CALL, @@ -16,7 +15,7 @@ import { import { FieldsOf, makeTuple } from '../utils/jsUtils.js'; import { serializeToBuffer } from '../utils/serialize.js'; import { CallContext } from './call_context.js'; -import { HistoricBlockData } from './index.js'; +import { HistoricBlockData, SideEffect, SideEffectLinkedToNoteHash } from './index.js'; import { ContractDeploymentData } from './tx_context.js'; /** @@ -40,19 +39,15 @@ export class PrivateCircuitPublicInputs { /** * Read requests created by the corresponding function call. */ - public readRequests: Tuple, - /** - * Pending read requests created by the corresponding function call. - */ - public pendingReadRequests: Tuple, + public readRequests: Tuple, /** * New commitments created by the corresponding function call. */ - public newCommitments: Tuple, + public newCommitments: Tuple, /** * New nullifiers created by the corresponding function call. */ - public newNullifiers: Tuple, + public newNullifiers: Tuple, /** * The commitments those were nullified by the above newNullifiers. */ @@ -124,10 +119,9 @@ export class PrivateCircuitPublicInputs { CallContext.empty(), Fr.ZERO, makeTuple(RETURN_VALUES_LENGTH, Fr.zero), - makeTuple(MAX_READ_REQUESTS_PER_CALL, Fr.zero), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_CALL, Fr.zero), - makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, Fr.zero), - makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, Fr.zero), + makeTuple(MAX_READ_REQUESTS_PER_CALL, SideEffect.empty), + makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, SideEffect.empty), + makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, Fr.zero), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, Fr.zero), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr.zero), @@ -145,14 +139,16 @@ export class PrivateCircuitPublicInputs { isEmpty() { const isFrArrayEmpty = (arr: Fr[]) => isArrayEmpty(arr, item => item.isZero()); + const isSideEffectArrayEmpty = (arr: SideEffect[]) => isArrayEmpty(arr, item => item.isEmpty()); + const isSideEffectLinkedArrayEmpty = (arr: SideEffectLinkedToNoteHash[]) => + isArrayEmpty(arr, item => item.isEmpty()); return ( this.callContext.isEmpty() && this.argsHash.isZero() && isFrArrayEmpty(this.returnValues) && - isFrArrayEmpty(this.readRequests) && - isFrArrayEmpty(this.pendingReadRequests) && - isFrArrayEmpty(this.newCommitments) && - isFrArrayEmpty(this.newNullifiers) && + isSideEffectArrayEmpty(this.readRequests) && + isSideEffectArrayEmpty(this.newCommitments) && + isSideEffectLinkedArrayEmpty(this.newNullifiers) && isFrArrayEmpty(this.nullifiedCommitments) && isFrArrayEmpty(this.privateCallStackHashes) && isFrArrayEmpty(this.publicCallStackHashes) && @@ -179,7 +175,6 @@ export class PrivateCircuitPublicInputs { fields.argsHash, fields.returnValues, fields.readRequests, - fields.pendingReadRequests, fields.newCommitments, fields.newNullifiers, fields.nullifiedCommitments, diff --git a/yarn-project/circuits.js/src/structs/public_call_request.ts b/yarn-project/circuits.js/src/structs/public_call_request.ts index b8cb2cacd50..cdc35701067 100644 --- a/yarn-project/circuits.js/src/structs/public_call_request.ts +++ b/yarn-project/circuits.js/src/structs/public_call_request.ts @@ -111,7 +111,7 @@ export class PublicCallRequest { const callerContext = this.callContext.isDelegateCall ? new CallerContext(this.callContext.msgSender, this.callContext.storageContractAddress) : CallerContext.empty(); - return new CallRequest(item.hash(), callerContractAddress, callerContext); + return new CallRequest(item.hash(), callerContractAddress, callerContext, Fr.ZERO, Fr.ZERO); } /** diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 3df6e72dccd..f522787220e 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -42,8 +42,6 @@ import { MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NULLIFIERS_PER_TX, MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX, - MAX_PENDING_READ_REQUESTS_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_TX, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, @@ -91,6 +89,8 @@ import { RollupTypes, RootRollupInputs, RootRollupPublicInputs, + SideEffect, + SideEffectLinkedToNoteHash, TxContext, TxRequest, VK_TREE_HEIGHT, @@ -102,6 +102,24 @@ import { } from '../index.js'; import { GlobalVariables } from '../structs/global_variables.js'; +/** + * Creates an arbitrary side effect object with the given seed. + * @param seed - The seed to use for generating the object. + * @returns A side effect object. + */ +export function makeNewSideEffect(seed: number): SideEffect { + return new SideEffect(fr(seed), fr(seed + 1)); +} + +/** + * Creates an arbitrary side effect object (linked to a note hash) with the given seed. + * @param seed - The seed to use for generating the object. + * @returns A side effect object. + */ +export function makeNewSideEffectLinkedToNoteHash(seed: number): SideEffectLinkedToNoteHash { + return new SideEffectLinkedToNoteHash(fr(seed), fr(seed + 1), fr(seed + 2)); +} + /** * Creates an arbitrary tx context with the given seed. * @param seed - The seed to use for generating the tx context. @@ -212,10 +230,9 @@ export function makeAccumulatedData(seed = 1, full = false): CombinedAccumulated return new CombinedAccumulatedData( makeAggregationObject(seed), - tupleGenerator(MAX_READ_REQUESTS_PER_TX, fr, seed + 0x80), - tupleGenerator(MAX_PENDING_READ_REQUESTS_PER_TX, fr, seed + 0x80), - tupleGenerator(MAX_NEW_COMMITMENTS_PER_TX, fr, seed + 0x100), - tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x200), + tupleGenerator(MAX_READ_REQUESTS_PER_TX, sideEffectFromNumber, seed + 0x80), + tupleGenerator(MAX_NEW_COMMITMENTS_PER_TX, sideEffectFromNumber, seed + 0x100), + tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x200), tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x300), tupleGenerator(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x400), tupleGenerator(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x500), @@ -241,8 +258,8 @@ export function makeFinalAccumulatedData(seed = 1, full = false): FinalAccumulat return new FinalAccumulatedData( makeAggregationObject(seed), - tupleGenerator(MAX_NEW_COMMITMENTS_PER_TX, fr, seed + 0x100), - tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x200), + tupleGenerator(MAX_NEW_COMMITMENTS_PER_TX, sideEffectFromNumber, seed + 0x100), + tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x200), tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x300), tupleGenerator(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x400), tupleGenerator(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x500), @@ -508,7 +525,7 @@ export function makeCallerContext(seed = 1): CallerContext { * @returns A call stack item. */ export function makeCallRequest(seed = 1): CallRequest { - return new CallRequest(fr(seed), makeAztecAddress(seed + 0x1), makeCallerContext(seed + 0x2)); + return new CallRequest(fr(seed), makeAztecAddress(seed + 0x1), makeCallerContext(seed + 0x2), fr(0), fr(0)); } /** @@ -593,6 +610,8 @@ export function makePublicKernelInputsWithTweak( publicCall.callStackItem.hash(), publicCall.callStackItem.publicInputs.callContext.msgSender, makeCallerContext(seed + 0x100), + Fr.ZERO, + Fr.ZERO, ); return publicKernelInputs; } @@ -667,10 +686,9 @@ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicIn ), argsHash: fr(seed + 0x100), returnValues: makeTuple(RETURN_VALUES_LENGTH, fr, seed + 0x200), - readRequests: makeTuple(MAX_READ_REQUESTS_PER_CALL, fr, seed + 0x300), - pendingReadRequests: makeTuple(MAX_PENDING_READ_REQUESTS_PER_CALL, fr, seed + 0x310), - newCommitments: makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, fr, seed + 0x400), - newNullifiers: makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, fr, seed + 0x500), + readRequests: makeTuple(MAX_READ_REQUESTS_PER_CALL, sideEffectFromNumber, seed + 0x300), + newCommitments: makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, sideEffectFromNumber, seed + 0x400), + newNullifiers: makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, sideEffectLinkedFromNumber, seed + 0x500), nullifiedCommitments: makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, fr, seed + 0x510), privateCallStackHashes: makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x600), publicCallStackHashes: makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x700), @@ -966,3 +984,21 @@ export function makeBaseRollupInputs(seed = 0): BaseRollupInputs { export function fr(n: number): Fr { return new Fr(BigInt(n)); } + +/** + * Test only. Easy to identify big endian side-effect serialize. + * @param n - The number. + * @returns The SideEffect instance. + */ +export function sideEffectFromNumber(n: number): SideEffect { + return new SideEffect(new Fr(BigInt(n)), Fr.zero()); +} + +/** + * Test only. Easy to identify big endian side-effect serialize. + * @param n - The number. + * @returns The SideEffect instance. + */ +export function sideEffectLinkedFromNumber(n: number): SideEffectLinkedToNoteHash { + return new SideEffectLinkedToNoteHash(new Fr(BigInt(n)), Fr.zero(), Fr.zero()); +} diff --git a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts index 533bf66783a..a92f2c192fc 100644 --- a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts @@ -17,10 +17,11 @@ import { MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PublicDataUpdateRequest, + SideEffectLinkedToNoteHash, makeTuple, range, } from '@aztec/circuits.js'; -import { fr, makeNewContractData, makeProof } from '@aztec/circuits.js/factories'; +import { fr, makeNewContractData, makeNewSideEffect, makeProof } from '@aztec/circuits.js/factories'; import { createEthereumChain } from '@aztec/ethereum'; import { DecoderHelperAbi, InboxAbi, OutboxAbi, RollupAbi } from '@aztec/l1-artifacts'; import { @@ -175,9 +176,10 @@ describe('L1Publisher integration', () => { const processedTx = await makeProcessedTx(tx, kernelOutput, makeProof()); - processedTx.data.end.newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, fr, seed + 0x100); - processedTx.data.end.newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x200); - processedTx.data.end.newNullifiers[processedTx.data.end.newNullifiers.length - 1] = Fr.ZERO; + processedTx.data.end.newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, makeNewSideEffect, seed + 0x100); + processedTx.data.end.newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, makeNewSideEffect, seed + 0x200); + processedTx.data.end.newNullifiers[processedTx.data.end.newNullifiers.length - 1] = + SideEffectLinkedToNoteHash.empty(); processedTx.data.end.newL2ToL1Msgs = makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x300); processedTx.data.end.newContracts = [makeNewContractData(seed + 0x1000)]; processedTx.data.end.encryptedLogsHash = to2Fields(L2Block.computeKernelLogsHash(processedTx.encryptedLogs)); From 21a24d70479c84dcb9419362ca929d8db66082e4 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 14:56:34 -0800 Subject: [PATCH 08/71] remove all pending_Read_requests --- .../abis/combined_accumulated_data.hpp | 5 -- .../cpp/src/aztec3/circuits/abis/packers.hpp | 4 +- .../abis/private_circuit_public_inputs.hpp | 18 +---- .../aztec3/circuits/kernel/private/common.cpp | 3 - .../native_private_kernel_circuit_init.cpp | 3 - circuits/cpp/src/aztec3/constants.hpp | 7 +- .../src/core/libraries/ConstantsGen.sol | 2 - .../acir-simulator/src/acvm/deserialize.ts | 2 - yarn-project/aztec-nr/aztec/src/abi.nr | 4 - .../aztec-nr/aztec/src/constants_gen.nr | 2 - .../src/integration_l1_publisher.test.ts | 14 +++- .../crates/private-kernel-lib/src/common.nr | 5 +- .../crates/public-kernel-lib/src/common.nr | 2 - .../src/abis/combined_accumulated_data.nr | 1 - .../private_circuit_public_inputs_builder.nr | 3 - .../noir-protocol-circuits/src/index.test.ts | 76 +++++++++++++------ .../src/type_conversion.ts | 10 --- .../src/types/private_kernel_init_types.ts | 2 - .../src/types/private_kernel_inner_types.ts | 2 - .../types/private_kernel_ordering_types.ts | 1 - .../public_kernel_private_previous_types.ts | 1 - .../public_kernel_public_previous_types.ts | 1 - .../src/types/rollup_base_types.ts | 1 - .../src/kernel_prover/kernel_prover.test.ts | 15 ++-- .../pxe/src/kernel_prover/kernel_prover.ts | 13 ++-- 25 files changed, 85 insertions(+), 112 deletions(-) diff --git a/circuits/cpp/src/aztec3/circuits/abis/combined_accumulated_data.hpp b/circuits/cpp/src/aztec3/circuits/abis/combined_accumulated_data.hpp index afe3f1cea3a..e3e2800a69c 100644 --- a/circuits/cpp/src/aztec3/circuits/abis/combined_accumulated_data.hpp +++ b/circuits/cpp/src/aztec3/circuits/abis/combined_accumulated_data.hpp @@ -31,7 +31,6 @@ template struct CombinedAccumulatedData { AggregationObject aggregation_object{}; std::array read_requests{}; - std::array pending_read_requests{}; std::array new_commitments{}; std::array new_nullifiers{}; @@ -61,7 +60,6 @@ template struct CombinedAccumulatedData { // for serialization, update with new fields MSGPACK_FIELDS(aggregation_object, read_requests, - pending_read_requests, new_commitments, new_nullifiers, nullified_commitments, @@ -100,7 +98,6 @@ template struct CombinedAccumulatedData { }, to_ct(read_requests), - to_ct(pending_read_requests), to_ct(new_commitments), to_ct(new_nullifiers), @@ -141,7 +138,6 @@ template struct CombinedAccumulatedData { }, to_nt(read_requests), - to_nt(pending_read_requests), to_nt(new_commitments), to_nt(new_nullifiers), @@ -172,7 +168,6 @@ template struct CombinedAccumulatedData { aggregation_object.add_proof_outputs_as_public_inputs(); set_array_public(read_requests); - set_array_public(pending_read_requests); set_array_public(new_commitments); set_array_public(new_nullifiers); diff --git a/circuits/cpp/src/aztec3/circuits/abis/packers.hpp b/circuits/cpp/src/aztec3/circuits/abis/packers.hpp index 963433015c4..acd617e158a 100644 --- a/circuits/cpp/src/aztec3/circuits/abis/packers.hpp +++ b/circuits/cpp/src/aztec3/circuits/abis/packers.hpp @@ -27,7 +27,6 @@ struct ConstantsPacker { MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_READ_REQUESTS_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_CALL, MAX_NEW_COMMITMENTS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, @@ -37,8 +36,7 @@ struct ConstantsPacker { MAX_PUBLIC_DATA_READS_PER_TX, MAX_NEW_CONTRACTS_PER_TX, MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX, - MAX_READ_REQUESTS_PER_TX, - MAX_PENDING_READ_REQUESTS_PER_TX), + MAX_READ_REQUESTS_PER_TX), NVP(NUM_ENCRYPTED_LOGS_HASHES_PER_TX, NUM_UNENCRYPTED_LOGS_HASHES_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, diff --git a/circuits/cpp/src/aztec3/circuits/abis/private_circuit_public_inputs.hpp b/circuits/cpp/src/aztec3/circuits/abis/private_circuit_public_inputs.hpp index 5950c4be70d..e0d44de2aef 100644 --- a/circuits/cpp/src/aztec3/circuits/abis/private_circuit_public_inputs.hpp +++ b/circuits/cpp/src/aztec3/circuits/abis/private_circuit_public_inputs.hpp @@ -28,7 +28,6 @@ template class PrivateCircuitPublicInputs { std::array return_values{}; std::array read_requests{}; - std::array pending_read_requests{}; std::array new_commitments{}; std::array new_nullifiers{}; @@ -58,7 +57,6 @@ template class PrivateCircuitPublicInputs { args_hash, return_values, read_requests, - pending_read_requests, new_commitments, new_nullifiers, nullified_commitments, @@ -78,7 +76,7 @@ template class PrivateCircuitPublicInputs { { return call_context == other.call_context && args_hash == other.args_hash && return_values == other.return_values && read_requests == other.read_requests && - pending_read_requests == other.pending_read_requests && new_commitments == other.new_commitments && + new_commitments == other.new_commitments && new_nullifiers == other.new_nullifiers && nullified_commitments == other.nullified_commitments && private_call_stack == other.private_call_stack && public_call_stack == other.public_call_stack && new_l2_to_l1_msgs == other.new_l2_to_l1_msgs && encrypted_logs_hash == other.encrypted_logs_hash && @@ -106,7 +104,6 @@ template class PrivateCircuitPublicInputs { to_ct(return_values), to_ct(read_requests), - to_ct(pending_read_requests), to_ct(new_commitments), to_ct(new_nullifiers), @@ -146,7 +143,6 @@ template class PrivateCircuitPublicInputs { to_nt(return_values), to_nt(read_requests), - to_nt(pending_read_requests), to_nt(new_commitments), to_nt(new_nullifiers), @@ -185,7 +181,6 @@ template class PrivateCircuitPublicInputs { spread_arr_into_vec(return_values, inputs); spread_arr_into_vec(read_requests, inputs); - spread_arr_into_vec(pending_read_requests, inputs); spread_arr_into_vec(new_commitments, inputs); spread_arr_into_vec(new_nullifiers, inputs); @@ -236,7 +231,6 @@ template class OptionalPrivateCircuitPublicInputs { std::array return_values; std::array read_requests; - std::array pending_read_requests; std::array new_commitments; std::array new_nullifiers; @@ -264,7 +258,6 @@ template class OptionalPrivateCircuitPublicInputs { args_hash, return_values, read_requests, - pending_read_requests, new_commitments, new_nullifiers, nullified_commitments, @@ -289,7 +282,6 @@ template class OptionalPrivateCircuitPublicInputs { std::array const& return_values, std::array const& read_requests, - std::array const& pending_read_requests, std::array const& new_commitments, std::array const& new_nullifiers, @@ -315,7 +307,6 @@ template class OptionalPrivateCircuitPublicInputs { , args_hash(args_hash) , return_values(return_values) , read_requests(read_requests) - , pending_read_requests(pending_read_requests) , new_commitments(new_commitments) , new_nullifiers(new_nullifiers) , nullified_commitments(nullified_commitments) @@ -343,7 +334,6 @@ template class OptionalPrivateCircuitPublicInputs { new_inputs.return_values.fill(std::nullopt); new_inputs.read_requests.fill(std::nullopt); - new_inputs.pending_read_requests.fill(std::nullopt); new_inputs.new_commitments.fill(std::nullopt); new_inputs.new_nullifiers.fill(std::nullopt); @@ -409,7 +399,6 @@ template class OptionalPrivateCircuitPublicInputs { make_unused_array_elements_zero(builder, return_values); make_unused_array_elements_zero(builder, read_requests); - make_unused_array_elements_zero(builder, pending_read_requests); make_unused_array_elements_zero(builder, new_commitments); make_unused_array_elements_zero(builder, new_nullifiers); @@ -449,7 +438,6 @@ template class OptionalPrivateCircuitPublicInputs { set_array_public(return_values); set_array_public(read_requests); - set_array_public(pending_read_requests); set_array_public(new_commitments); set_array_public(new_nullifiers); @@ -491,7 +479,6 @@ template class OptionalPrivateCircuitPublicInputs { to_ct(return_values), to_ct(read_requests), - to_ct(pending_read_requests), to_ct(new_commitments), to_ct(new_nullifiers), @@ -533,7 +520,6 @@ template class OptionalPrivateCircuitPublicInputs { to_nt(return_values), to_nt(read_requests), - to_nt(pending_read_requests), to_nt(new_commitments), to_nt(new_nullifiers), @@ -576,7 +562,6 @@ template class OptionalPrivateCircuitPublicInputs { spread_arr_opt_into_vec(return_values, inputs); spread_arr_opt_into_vec(read_requests, inputs); - spread_arr_opt_into_vec(pending_read_requests, inputs); spread_arr_opt_into_vec(new_commitments, inputs); spread_arr_opt_into_vec(new_nullifiers, inputs); @@ -614,7 +599,6 @@ template class OptionalPrivateCircuitPublicInputs { .return_values = map(return_values, get_value), .read_requests = map(read_requests, get_value), - .pending_read_requests = map(pending_read_requests, get_value), .new_commitments = map(new_commitments, get_value), .new_nullifiers = map(new_nullifiers, get_value), diff --git a/circuits/cpp/src/aztec3/circuits/kernel/private/common.cpp b/circuits/cpp/src/aztec3/circuits/kernel/private/common.cpp index c5b993a340c..507f94b46a4 100644 --- a/circuits/cpp/src/aztec3/circuits/kernel/private/common.cpp +++ b/circuits/cpp/src/aztec3/circuits/kernel/private/common.cpp @@ -132,7 +132,6 @@ void common_validate_arrays(DummyBuilder& builder, PrivateCircuitPublicInputs { const processedTx = await makeProcessedTx(tx, kernelOutput, makeProof()); processedTx.data.end.newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, makeNewSideEffect, seed + 0x100); - processedTx.data.end.newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, makeNewSideEffect, seed + 0x200); + processedTx.data.end.newNullifiers = makeTuple( + MAX_NEW_NULLIFIERS_PER_TX, + makeNewSideEffectLinkedToNoteHash, + seed + 0x200, + ); processedTx.data.end.newNullifiers[processedTx.data.end.newNullifiers.length - 1] = SideEffectLinkedToNoteHash.empty(); processedTx.data.end.newL2ToL1Msgs = makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x300); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 3bfaf4f5a03..668f7c43668 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -53,7 +53,6 @@ pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { validate_array(app_public_inputs.return_values); validate_array(app_public_inputs.read_requests); - validate_array(app_public_inputs.pending_read_requests); validate_array(app_public_inputs.new_commitments); validate_array(app_public_inputs.new_nullifiers); validate_array(app_public_inputs.nullified_commitments); @@ -171,8 +170,6 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern let read_requests = private_call_public_inputs.read_requests; let read_request_membership_witnesses = private_call.read_request_membership_witnesses; - // don't update pending_read_requests, because those just get passed through without any change - let new_commitments = private_call_public_inputs.new_commitments; let new_nullifiers = private_call_public_inputs.new_nullifiers; let nullified_commitments = private_call_public_inputs.nullified_commitments; @@ -362,7 +359,7 @@ pub fn contract_logic(private_call : PrivateCallData, public_inputs : &mut Kerne } pub fn validate_previous_kernel_values(end: CombinedAccumulatedData) { - assert(end.new_nullifiers[0] != 0, "The 0th nullifier in the accumulated nullifier array is zero"); + assert(end.new_nullifiers[0].value != 0, "The 0th nullifier in the accumulated nullifier array is zero"); } pub fn validate_call_against_request(private_call: PrivateCallData, request: CallRequest) { diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 0c3f8068dc9..a7732bef3d9 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -130,8 +130,6 @@ pub fn update_public_end_values(public_call: PublicCallData, circuit_outputs : & validate_call_requests(public_call_requests, hashes, public_call); circuit_outputs.end.public_call_stack.push_vec(public_call_requests); - // don't update pending_read_requests, because those just get passed through without any change - propagate_new_nullifiers(public_call, circuit_outputs); propagate_new_commitments(public_call, circuit_outputs); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr index dfd576a1f25..62c6dceff87 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr @@ -15,7 +15,6 @@ use dep::aztec::constants_gen::{ MAX_READ_REQUESTS_PER_TX, MAX_NEW_COMMITMENTS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, - MAX_PENDING_READ_REQUESTS_PER_TX, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_NEW_L2_TO_L1_MSGS_PER_TX, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr index 9a4f2939797..5862e7f13ff 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -20,7 +20,6 @@ use dep::aztec::{ MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, RETURN_VALUES_LENGTH, @@ -34,7 +33,6 @@ struct PrivateCircuitPublicInputsBuilder { return_values: BoundedVec, read_requests: BoundedVec, - pending_read_requests: BoundedVec, new_commitments: BoundedVec, new_nullifiers: BoundedVec, @@ -115,7 +113,6 @@ impl PrivateCircuitPublicInputsBuilder { return_values: self.return_values.storage, read_requests: self.read_requests.storage, - pending_read_requests: self.pending_read_requests.storage, new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, diff --git a/yarn-project/noir-protocol-circuits/src/index.test.ts b/yarn-project/noir-protocol-circuits/src/index.test.ts index 9b7671574b1..c8f2b37e12c 100644 --- a/yarn-project/noir-protocol-circuits/src/index.test.ts +++ b/yarn-project/noir-protocol-circuits/src/index.test.ts @@ -20,8 +20,6 @@ import { MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NULLIFIERS_PER_TX, MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX, - MAX_PENDING_READ_REQUESTS_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_TX, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, @@ -47,6 +45,8 @@ import { PublicDataUpdateRequest, RETURN_VALUES_LENGTH, ReadRequestMembershipWitness, + SideEffect, + SideEffectLinkedToNoteHash, TxContext, TxRequest, VK_TREE_HEIGHT, @@ -60,6 +60,10 @@ import { DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { executeInit, executeInner, executeOrdering } from './index.js'; +function _makeEmptyReadRequest() { + return makeTuple(MAX_READ_REQUESTS_PER_TX, () => SideEffect.empty()); +} + describe('Private kernel', () => { let logger: DebugLogger; beforeAll(() => { @@ -92,11 +96,18 @@ describe('Private kernel', () => { '0x25e2c017f5da1f994401e61d26be435e3cfa26efee784c6b4e947f7651bd4104', ); - const newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, () => Fr.ZERO); - newCommitments[0] = Fr.fromString('0x0aced88c953b70873e4a33dde4620dc43a709c15013c46c60d167de8e1c32315'); + const newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, () => SideEffect.empty()); + newCommitments[0] = new SideEffect( + Fr.fromString('0x0aced88c953b70873e4a33dde4620dc43a709c15013c46c60d167de8e1c32315'), + Fr.ZERO, + ); - const newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => Fr.ZERO); - newNullifiers[0] = Fr.fromString('0x03579f468b2283611cc4d7adfbb93b8a4815d93ac0b1e1d11dace012cf73c7aa'); + const newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => SideEffectLinkedToNoteHash.empty()); + newNullifiers[0] = new SideEffectLinkedToNoteHash( + Fr.fromString('0x03579f468b2283611cc4d7adfbb93b8a4815d93ac0b1e1d11dace012cf73c7aa'), + Fr.ZERO, + Fr.ZERO, + ); const nullifiedCommitments = makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => Fr.ZERO); nullifiedCommitments[0] = Fr.fromString('0x0f4240'); @@ -118,8 +129,7 @@ describe('Private kernel', () => { callContext, argsHash, makeTuple(RETURN_VALUES_LENGTH, () => Fr.ZERO), - makeTuple(MAX_READ_REQUESTS_PER_CALL, () => Fr.ZERO), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_CALL, () => Fr.ZERO), + makeTuple(MAX_READ_REQUESTS_PER_CALL, () => SideEffect.empty()), newCommitments, newNullifiers, nullifiedCommitments, @@ -177,13 +187,28 @@ describe('Private kernel', () => { ); const txContext = new TxContext(false, false, true, contractDeploymentData, Fr.ZERO, Fr.ZERO); - const newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, () => Fr.ZERO); - newCommitments[0] = Fr.fromString('0x0aced88c953b70873e4a33dde4620dc43a709c15013c46c60d167de8e1c32315'); + const newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, () => SideEffect.empty()); + newCommitments[0] = new SideEffect( + Fr.fromString('0x0aced88c953b70873e4a33dde4620dc43a709c15013c46c60d167de8e1c32315'), + Fr.ZERO, + ); - const newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => Fr.ZERO); - newNullifiers[0] = Fr.fromString('0x0faf656089e5a8d321b64f420fc008005736a0b4f0b8588891241392c82655b9'); - newNullifiers[1] = Fr.fromString('0x4a5d6bc34e84c5a3d7a625a3772f4d2f84c7d46637691ef64ee2711e6c6202'); - newNullifiers[2] = Fr.fromString('0x19085a4478c4aa3994d4a5935eaf5e0d58726a758d398a97f634df22d33d388a'); + const newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => SideEffectLinkedToNoteHash.empty()); + newNullifiers[0] = new SideEffectLinkedToNoteHash( + Fr.fromString('0x0faf656089e5a8d321b64f420fc008005736a0b4f0b8588891241392c82655b9'), + Fr.ZERO, + Fr.ZERO, + ); + newNullifiers[1] = new SideEffectLinkedToNoteHash( + Fr.fromString('0x4a5d6bc34e84c5a3d7a625a3772f4d2f84c7d46637691ef64ee2711e6c6202'), + Fr.ZERO, + Fr.ZERO, + ); + newNullifiers[2] = new SideEffectLinkedToNoteHash( + Fr.fromString('0x19085a4478c4aa3994d4a5935eaf5e0d58726a758d398a97f634df22d33d388a'), + Fr.ZERO, + Fr.ZERO, + ); const nullifiedCommitments = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => Fr.ZERO); nullifiedCommitments[0] = Fr.fromString('0x0f4240'); @@ -191,8 +216,7 @@ describe('Private kernel', () => { const combinedAccumulatedData = new CombinedAccumulatedData( AggregationObject.makeFake(), - makeTuple(MAX_READ_REQUESTS_PER_TX, () => new Fr(0n)), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_TX, () => new Fr(0n)), + makeTuple(MAX_READ_REQUESTS_PER_TX, () => SideEffect.empty()), newCommitments, newNullifiers, nullifiedCommitments, @@ -293,10 +317,9 @@ describe('Private kernel', () => { callContext, argsHash, appReturnValues, - makeTuple(MAX_READ_REQUESTS_PER_CALL, () => Fr.ZERO), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_CALL, () => Fr.ZERO), - makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, () => Fr.ZERO), - makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => Fr.ZERO), + makeTuple(MAX_READ_REQUESTS_PER_CALL, () => SideEffect.empty()), + makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, () => SideEffect.empty()), + makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => SideEffectLinkedToNoteHash.empty()), makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => Fr.ZERO), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, () => Fr.ZERO), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, () => Fr.ZERO), @@ -355,17 +378,20 @@ describe('Private kernel', () => { const newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, () => Fr.ZERO); newCommitments[0] = Fr.fromString('0x0aced88c953b70873e4a33dde4620dc43a709c15013c46c60d167de8e1c32315'); - const newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => Fr.ZERO); - newNullifiers[0] = Fr.fromString('0x02bb8255d7aa321d83b50913205c80c04ee51360dbc8aa3d5393983a39267999'); + const newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => SideEffectLinkedToNoteHash.empty()); + newNullifiers[0] = new SideEffectLinkedToNoteHash( + Fr.fromString('0x02bb8255d7aa321d83b50913205c80c04ee51360dbc8aa3d5393983a39267999'), + Fr.ZERO, + Fr.ZERO, + ); const nullifiedCommitments = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => Fr.ZERO); nullifiedCommitments[0] = Fr.fromString('0x0f4240'); const combinedAccumulatedData = new CombinedAccumulatedData( AggregationObject.makeFake(), - makeTuple(MAX_READ_REQUESTS_PER_TX, () => new Fr(0n)), - makeTuple(MAX_PENDING_READ_REQUESTS_PER_TX, () => new Fr(0n)), - makeTuple(MAX_NEW_COMMITMENTS_PER_TX, () => new Fr(0n)), + makeTuple(MAX_READ_REQUESTS_PER_TX, () => SideEffect.empty()), + makeTuple(MAX_NEW_COMMITMENTS_PER_TX, () => SideEffect.empty()), newNullifiers, nullifiedCommitments, privateCallStack, diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index 0ae1b87bc33..6539cf4818b 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -28,7 +28,6 @@ import { MAX_NEW_L2_TO_L1_MSGS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX, - MAX_PENDING_READ_REQUESTS_PER_TX, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, @@ -476,10 +475,6 @@ export function mapPrivateCircuitPublicInputsToNoir( args_hash: mapFieldToNoir(privateCircuitPublicInputs.argsHash), return_values: privateCircuitPublicInputs.returnValues.map(mapFieldToNoir) as FixedLengthArray, read_requests: privateCircuitPublicInputs.readRequests.map(mapFieldToNoir) as FixedLengthArray, - pending_read_requests: privateCircuitPublicInputs.pendingReadRequests.map(mapFieldToNoir) as FixedLengthArray< - NoirField, - 32 - >, new_commitments: privateCircuitPublicInputs.newCommitments.map(mapFieldToNoir) as FixedLengthArray, new_nullifiers: privateCircuitPublicInputs.newNullifiers.map(mapFieldToNoir) as FixedLengthArray, nullified_commitments: privateCircuitPublicInputs.nullifiedCommitments.map(mapFieldToNoir) as FixedLengthArray< @@ -749,7 +744,6 @@ export function mapCombinedAccumulatedDataFromNoir( // TODO aggregation object AggregationObject.makeFake(), mapTupleFromNoir(combinedAccumulatedData.read_requests, MAX_READ_REQUESTS_PER_TX, mapFieldFromNoir), - mapTupleFromNoir(combinedAccumulatedData.pending_read_requests, MAX_PENDING_READ_REQUESTS_PER_TX, mapFieldFromNoir), mapTupleFromNoir(combinedAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapFieldFromNoir), mapTupleFromNoir(combinedAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), mapTupleFromNoir(combinedAccumulatedData.nullified_commitments, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), @@ -834,10 +828,6 @@ export function mapCombinedAccumulatedDataToNoir( return { aggregation_object: {}, read_requests: combinedAccumulatedData.readRequests.map(mapFieldToNoir) as FixedLengthArray, - pending_read_requests: combinedAccumulatedData.pendingReadRequests.map(mapFieldToNoir) as FixedLengthArray< - NoirField, - 128 - >, new_commitments: combinedAccumulatedData.newCommitments.map(mapFieldToNoir) as FixedLengthArray, new_nullifiers: combinedAccumulatedData.newNullifiers.map(mapFieldToNoir) as FixedLengthArray, nullified_commitments: combinedAccumulatedData.nullifiedCommitments.map(mapFieldToNoir) as FixedLengthArray< diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts index 4f00c7e1953..00e6d4edbe0 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts @@ -85,7 +85,6 @@ export interface PrivateCircuitPublicInputs { args_hash: Field; return_values: FixedLengthArray; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; @@ -192,7 +191,6 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts index e59e29b2b37..29d95b92f5a 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts @@ -70,7 +70,6 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; @@ -162,7 +161,6 @@ export interface PrivateCircuitPublicInputs { args_hash: Field; return_values: FixedLengthArray; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts index 67f146a9d92..82315f4cdac 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts @@ -70,7 +70,6 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts b/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts index 20dccc4b25c..92620cfb7a1 100644 --- a/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts @@ -70,7 +70,6 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts b/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts index bb0596aff1c..246d57958b5 100644 --- a/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts @@ -70,7 +70,6 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts b/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts index a4ac38b38eb..d6b4a7565db 100644 --- a/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts @@ -70,7 +70,6 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: FixedLengthArray; - pending_read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; diff --git a/yarn-project/pxe/src/kernel_prover/kernel_prover.test.ts b/yarn-project/pxe/src/kernel_prover/kernel_prover.test.ts index 8dfffa007cb..b47b59e5dca 100644 --- a/yarn-project/pxe/src/kernel_prover/kernel_prover.test.ts +++ b/yarn-project/pxe/src/kernel_prover/kernel_prover.test.ts @@ -10,6 +10,7 @@ import { PrivateCallStackItem, PrivateCircuitPublicInputs, ReadRequestMembershipWitness, + SideEffect, TxRequest, VK_TREE_HEIGHT, VerificationKey, @@ -51,7 +52,10 @@ describe('Kernel Prover', () => { const publicInputs = PrivateCircuitPublicInputs.empty(); publicInputs.newCommitments = makeTuple( MAX_NEW_COMMITMENTS_PER_CALL, - i => (i < newNoteIndices.length ? generateFakeCommitment(notesAndSlots[newNoteIndices[i]]) : Fr.ZERO), + i => + i < newNoteIndices.length + ? new SideEffect(generateFakeCommitment(notesAndSlots[newNoteIndices[i]]), Fr.ZERO) + : SideEffect.empty(), 0, ); const functionData = FunctionData.empty(); @@ -66,7 +70,6 @@ describe('Kernel Prover', () => { readRequestPartialWitnesses: Array.from({ length: MAX_READ_REQUESTS_PER_CALL }, () => ReadRequestMembershipWitness.emptyTransient(), ), - // pendingReadRequests: Array.from({ length: MAX_PENDING_READ_REQUESTS_PER_CALL }, () => Fr.ZERO), returnValues: [], acir: Buffer.alloc(0), partialWitness: new Map(), @@ -78,9 +81,11 @@ describe('Kernel Prover', () => { const createProofOutput = (newNoteIndices: number[]) => { const publicInputs = KernelCircuitPublicInputs.empty(); - const commitments = newNoteIndices.map(idx => generateFakeSiloedCommitment(notesAndSlots[idx])); + const commitments = newNoteIndices.map( + idx => new SideEffect(generateFakeSiloedCommitment(notesAndSlots[idx]), Fr.ZERO), + ); // TODO(AD) FIXME(AD) This cast is bad. Why is this not the correct length when this is called? - publicInputs.end.newCommitments = commitments as Tuple; + publicInputs.end.newCommitments = commitments as Tuple; return { publicInputs, proof: makeEmptyProof(), @@ -120,7 +125,7 @@ describe('Kernel Prover', () => { proofCreator = mock(); proofCreator.getSiloedCommitments.mockImplementation(publicInputs => - Promise.resolve(publicInputs.newCommitments.map(createFakeSiloedCommitment)), + Promise.resolve(publicInputs.newCommitments.map(com => createFakeSiloedCommitment(com.value))), ); proofCreator.createProofInit.mockResolvedValue(createProofOutput([])); proofCreator.createProofInner.mockResolvedValue(createProofOutput([])); diff --git a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts index 2b28b61ba16..f99ac962049 100644 --- a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts +++ b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts @@ -19,6 +19,7 @@ import { PrivateKernelInputsOrdering, PrivateKernelPublicInputs, ReadRequestMembershipWitness, + SideEffect, TxRequest, VK_TREE_HEIGHT, VerificationKey, @@ -270,12 +271,12 @@ export class KernelProver { * corresponding to the read request. In other words we have readRequests[i] == commitments[hints[i]]. */ private getReadRequestHints( - readRequests: Tuple, - commitments: Tuple, + readRequests: Tuple, + commitments: Tuple, ): Tuple { const hints = makeTuple(MAX_READ_REQUESTS_PER_TX, Fr.zero); - for (let i = 0; i < MAX_READ_REQUESTS_PER_TX && !readRequests[i].isZero(); i++) { - const equalToRR = (cmt: Fr) => cmt.equals(readRequests[i]); + for (let i = 0; i < MAX_READ_REQUESTS_PER_TX && !readRequests[i].isEmpty(); i++) { + const equalToRR = (cmt: SideEffect) => cmt.value.equals(readRequests[i].value); const result = commitments.findIndex(equalToRR); if (result == -1) { throw new Error( @@ -300,12 +301,12 @@ export class KernelProver { */ private getNullifierHints( nullifiedCommitments: Tuple, - commitments: Tuple, + commitments: Tuple, ): Tuple { const hints = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero); for (let i = 0; i < MAX_NEW_NULLIFIERS_PER_TX; i++) { if (!nullifiedCommitments[i].isZero() && !nullifiedCommitments[i].equals(new Fr(EMPTY_NULLIFIED_COMMITMENT))) { - const equalToCommitment = (cmt: Fr) => cmt.equals(nullifiedCommitments[i]); + const equalToCommitment = (cmt: SideEffect) => cmt.value.equals(nullifiedCommitments[i]); const result = commitments.findIndex(equalToCommitment); if (result == -1) { throw new Error( From 91d2d3eeb20bbf6ca7b739e043136ff980060144 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 15:31:56 -0800 Subject: [PATCH 09/71] rip out more read requests --- .../acir-simulator/src/acvm/deserialize.ts | 41 +++++++++++-- .../acir-simulator/src/acvm/serialize.ts | 8 +-- .../src/client/client_execution_context.ts | 12 ++-- .../src/client/private_execution.test.ts | 57 ++++++++++++++----- .../acir-simulator/src/client/simulator.ts | 1 + .../acir-simulator/src/public/execution.ts | 6 +- .../acir-simulator/src/public/executor.ts | 4 +- yarn-project/aztec-nr/aztec/src/context.nr | 50 ++++++++-------- .../circuits.js/src/structs/call_context.ts | 7 +++ .../structs/public_circuit_public_inputs.ts | 17 +++--- 10 files changed, 139 insertions(+), 64 deletions(-) diff --git a/yarn-project/acir-simulator/src/acvm/deserialize.ts b/yarn-project/acir-simulator/src/acvm/deserialize.ts index f112affcb2b..b0f03d3ec06 100644 --- a/yarn-project/acir-simulator/src/acvm/deserialize.ts +++ b/yarn-project/acir-simulator/src/acvm/deserialize.ts @@ -17,6 +17,8 @@ import { PrivateCircuitPublicInputs, PublicCircuitPublicInputs, RETURN_VALUES_LENGTH, + SideEffect, + SideEffectLinkedToNoteHash, } from '@aztec/circuits.js'; import { AztecAddress } from '@aztec/foundation/aztec-address'; import { EthAddress } from '@aztec/foundation/eth-address'; @@ -122,6 +124,32 @@ export class PublicInputsReader { } return array as Tuple; } + + /** + * Reads an array of SideEffects from the public inputs. + * @param length - The length of the array. + * @returns The array of SideEffects. + */ + public readSideEffectArray(length: N): Tuple { + const array: SideEffect[] = []; + for (let i = 0; i < length; i++) { + array.push(new SideEffect(this.readField(), this.readField())); + } + return array as Tuple; + } + + /** + * Reads an array of SideEffectLinkedToNoteHashes from the public inputs. + * @param length - The length of the array. + * @returns The array of SideEffectLinkedToNoteHashes. + */ + public readSideEffectLinkedToNoteHashArray(length: N): Tuple { + const array: SideEffectLinkedToNoteHash[] = []; + for (let i = 0; i < length; i++) { + array.push(new SideEffectLinkedToNoteHash(this.readField(), this.readField(), this.readField())); + } + return array as Tuple; + } } /** @@ -144,13 +172,14 @@ export function extractPrivateCircuitPublicInputs( frToBoolean(witnessReader.readField()), frToBoolean(witnessReader.readField()), frToBoolean(witnessReader.readField()), + witnessReader.readField(), ); const argsHash = witnessReader.readField(); const returnValues = witnessReader.readFieldArray(RETURN_VALUES_LENGTH); - const readRequests = witnessReader.readFieldArray(MAX_READ_REQUESTS_PER_CALL); - const newCommitments = witnessReader.readFieldArray(MAX_NEW_COMMITMENTS_PER_CALL); - const newNullifiers = witnessReader.readFieldArray(MAX_NEW_NULLIFIERS_PER_CALL); + const readRequests = witnessReader.readSideEffectArray(MAX_READ_REQUESTS_PER_CALL); + const newCommitments = witnessReader.readSideEffectArray(MAX_NEW_COMMITMENTS_PER_CALL); + const newNullifiers = witnessReader.readSideEffectLinkedToNoteHashArray(MAX_NEW_NULLIFIERS_PER_CALL); const nullifiedCommitments = witnessReader.readFieldArray(MAX_NEW_NULLIFIERS_PER_CALL); const privateCallStack = witnessReader.readFieldArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL); const publicCallStack = witnessReader.readFieldArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL); @@ -188,7 +217,6 @@ export function extractPrivateCircuitPublicInputs( argsHash, returnValues, readRequests, - pendingReadRequests, newCommitments, newNullifiers, nullifiedCommitments, @@ -223,6 +251,7 @@ export function extractPublicCircuitPublicInputs(partialWitness: ACVMWitness, ac frToBoolean(witnessReader.readField()), frToBoolean(witnessReader.readField()), frToBoolean(witnessReader.readField()), + witnessReader.readField(), ); const argsHash = witnessReader.readField(); @@ -246,8 +275,8 @@ export function extractPublicCircuitPublicInputs(partialWitness: ACVMWitness, ac } const publicCallStack = witnessReader.readFieldArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL); - const newCommitments = witnessReader.readFieldArray(MAX_NEW_COMMITMENTS_PER_CALL); - const newNullifiers = witnessReader.readFieldArray(MAX_NEW_NULLIFIERS_PER_CALL); + const newCommitments = witnessReader.readSideEffectArray(MAX_NEW_COMMITMENTS_PER_CALL); + const newNullifiers = witnessReader.readSideEffectLinkedToNoteHashArray(MAX_NEW_NULLIFIERS_PER_CALL); const newL2ToL1Msgs = witnessReader.readFieldArray(MAX_NEW_L2_TO_L1_MSGS_PER_CALL); const unencryptedLogsHash = witnessReader.readFieldArray(NUM_FIELDS_PER_SHA256); diff --git a/yarn-project/acir-simulator/src/acvm/serialize.ts b/yarn-project/acir-simulator/src/acvm/serialize.ts index dff75ab6cb9..46ba9953a69 100644 --- a/yarn-project/acir-simulator/src/acvm/serialize.ts +++ b/yarn-project/acir-simulator/src/acvm/serialize.ts @@ -81,6 +81,7 @@ export function toACVMCallContext(callContext: CallContext): ACVMField[] { toACVMField(callContext.isDelegateCall), toACVMField(callContext.isStaticCall), toACVMField(callContext.isContractDeployment), + toACVMField(callContext.startSideEffectCounter), ]; } @@ -142,10 +143,9 @@ export function toACVMPublicInputs(publicInputs: PrivateCircuitPublicInputs): AC toACVMField(publicInputs.argsHash), ...publicInputs.returnValues.map(toACVMField), - ...publicInputs.readRequests.map(toACVMField), - ...publicInputs.pendingReadRequests.map(toACVMField), - ...publicInputs.newCommitments.map(toACVMField), - ...publicInputs.newNullifiers.map(toACVMField), + ...publicInputs.readRequests.flatMap(x => x.toFieldArray()).map(toACVMField), + ...publicInputs.newCommitments.flatMap(x => x.toFieldArray()).map(toACVMField), + ...publicInputs.newNullifiers.flatMap(x => x.toFieldArray()).map(toACVMField), ...publicInputs.nullifiedCommitments.map(toACVMField), ...publicInputs.privateCallStackHashes.map(toACVMField), ...publicInputs.publicCallStackHashes.map(toACVMField), diff --git a/yarn-project/acir-simulator/src/client/client_execution_context.ts b/yarn-project/acir-simulator/src/client/client_execution_context.ts index 5ccbbcc2b99..f7dcd31ebab 100644 --- a/yarn-project/acir-simulator/src/client/client_execution_context.ts +++ b/yarn-project/acir-simulator/src/client/client_execution_context.ts @@ -6,6 +6,7 @@ import { HistoricBlockData, PublicCallRequest, ReadRequestMembershipWitness, + SideEffect, TxContext, } from '@aztec/circuits.js'; import { computeUniqueCommitment, siloCommitment } from '@aztec/circuits.js/abis'; @@ -104,6 +105,8 @@ export class ClientExecutionContext extends ViewDataOracle { this.txContext.chainId, this.txContext.version, + this.callContext.startSideEffectCounter, + ...args, ]; @@ -116,14 +119,14 @@ export class ClientExecutionContext extends ViewDataOracle { * or to flag non-transient reads with their leafIndex. * The KernelProver will use this to fully populate witnesses and provide hints to * the kernel regarding which commitments each transient read request corresponds to. - * @param readRequests - Note hashed of the notes being read. + * @param readRequests - SideEffect containing Note hashed of the notes being read and counter. * @returns An array of partially filled in read request membership witnesses. */ - public getReadRequestPartialWitnesses(readRequests: Fr[]) { + public getReadRequestPartialWitnesses(readRequests: SideEffect[]) { return readRequests - .filter(r => !r.isZero()) + .filter(r => !r.isEmpty()) .map(r => { - const index = this.gotNotes.get(r.value); + const index = this.gotNotes.get(r.value.toBigInt()); return index !== undefined ? ReadRequestMembershipWitness.empty(index) : ReadRequestMembershipWitness.emptyTransient(); @@ -409,6 +412,7 @@ export class ClientExecutionContext extends ViewDataOracle { isDelegateCall, isStaticCall, false, + Fr.ZERO, ); } } diff --git a/yarn-project/acir-simulator/src/client/private_execution.test.ts b/yarn-project/acir-simulator/src/client/private_execution.test.ts index b96d69dc338..a1ac570bcd4 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.test.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.test.ts @@ -12,6 +12,8 @@ import { PublicCallRequest, PublicKey, TxContext, + nonEmptySideEffects, + sideEffectArrayToValueArray, } from '@aztec/circuits.js'; import { computeCommitmentNonce, @@ -176,7 +178,7 @@ describe('Private Execution test suite', () => { const result = await runSimulator({ artifact, txContext }); const emptyCommitments = new Array(MAX_NEW_COMMITMENTS_PER_CALL).fill(Fr.ZERO); - expect(result.callStackItem.publicInputs.newCommitments).toEqual(emptyCommitments); + expect(sideEffectArrayToValueArray(result.callStackItem.publicInputs.newCommitments)).toEqual(emptyCommitments); expect(result.callStackItem.publicInputs.contractDeploymentData).toEqual(contractDeploymentData); }); }); @@ -235,7 +237,9 @@ describe('Private Execution test suite', () => { const newNote = result.newNotes[0]; expect(newNote.storageSlot).toEqual(computeSlotForMapping(new Fr(1n), owner.toField())); - const newCommitments = result.callStackItem.publicInputs.newCommitments.filter(field => !field.equals(Fr.ZERO)); + const newCommitments = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newCommitments), + ); expect(newCommitments).toHaveLength(1); const [commitment] = newCommitments; @@ -253,7 +257,9 @@ describe('Private Execution test suite', () => { const newNote = result.newNotes[0]; expect(newNote.storageSlot).toEqual(computeSlotForMapping(new Fr(1n), owner.toField())); - const newCommitments = result.callStackItem.publicInputs.newCommitments.filter(field => !field.equals(Fr.ZERO)); + const newCommitments = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newCommitments), + ); expect(newCommitments).toHaveLength(1); const [commitment] = newCommitments; @@ -281,7 +287,9 @@ describe('Private Execution test suite', () => { const result = await runSimulator({ args, artifact, msgSender: owner }); // The two notes were nullified - const newNullifiers = result.callStackItem.publicInputs.newNullifiers.filter(field => !field.equals(Fr.ZERO)); + const newNullifiers = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newNullifiers), + ); expect(newNullifiers).toHaveLength(consumedNotes.length); expect(newNullifiers).toEqual(expect.arrayContaining(consumedNotes.map(n => n.innerNullifier))); @@ -289,7 +297,9 @@ describe('Private Execution test suite', () => { const [changeNote, recipientNote] = result.newNotes; expect(recipientNote.storageSlot).toEqual(recipientStorageSlot); - const newCommitments = result.callStackItem.publicInputs.newCommitments.filter(field => !field.equals(Fr.ZERO)); + const newCommitments = result.callStackItem.publicInputs.newCommitments.filter( + field => !field.value.equals(Fr.ZERO), + ); expect(newCommitments).toHaveLength(2); const [changeNoteCommitment, recipientNoteCommitment] = newCommitments; @@ -303,7 +313,10 @@ describe('Private Execution test suite', () => { expect(recipientNote.note.items[0]).toEqual(new Fr(amountToTransfer)); expect(changeNote.note.items[0]).toEqual(new Fr(40n)); - const readRequests = result.callStackItem.publicInputs.readRequests.filter(field => !field.equals(Fr.ZERO)); + const readRequests = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.readRequests), + ); + expect(readRequests).toHaveLength(consumedNotes.length); expect(readRequests).toEqual(expect.arrayContaining(consumedNotes.map(n => n.uniqueSiloedNoteHash))); }); @@ -326,7 +339,9 @@ describe('Private Execution test suite', () => { const args = [recipient, amountToTransfer]; const result = await runSimulator({ args, artifact, msgSender: owner }); - const newNullifiers = result.callStackItem.publicInputs.newNullifiers.filter(field => !field.equals(Fr.ZERO)); + const newNullifiers = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newNullifiers), + ); expect(newNullifiers).toEqual(consumedNotes.map(n => n.innerNullifier)); expect(result.newNotes).toHaveLength(2); @@ -476,7 +491,10 @@ describe('Private Execution test suite', () => { }); // Check a nullifier has been inserted - const newNullifiers = result.callStackItem.publicInputs.newNullifiers.filter(field => !field.equals(Fr.ZERO)); + const newNullifiers = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newNullifiers), + ); + expect(newNullifiers).toHaveLength(1); }); @@ -509,11 +527,17 @@ describe('Private Execution test suite', () => { }); // Check a nullifier has been inserted. - const newNullifiers = result.callStackItem.publicInputs.newNullifiers.filter(field => !field.equals(Fr.ZERO)); + const newNullifiers = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newNullifiers), + ); + expect(newNullifiers).toHaveLength(1); // Check the commitment read request was created successfully. - const readRequests = result.callStackItem.publicInputs.readRequests.filter(field => !field.equals(Fr.ZERO)); + const readRequests = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.readRequests), + ); + expect(readRequests).toHaveLength(1); expect(readRequests[0]).toEqual(siloedNoteHash); }); @@ -558,6 +582,7 @@ describe('Private Execution test suite', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }), sideEffectCounter: 0, }); @@ -613,7 +638,9 @@ describe('Private Execution test suite', () => { expect(noteAndSlot.note.items[0]).toEqual(new Fr(amountToTransfer)); - const newCommitments = result.callStackItem.publicInputs.newCommitments.filter(field => !field.equals(Fr.ZERO)); + const newCommitments = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newCommitments), + ); expect(newCommitments).toHaveLength(1); const commitment = newCommitments[0]; @@ -684,8 +711,8 @@ describe('Private Execution test suite', () => { expect(noteAndSlot.note.items[0]).toEqual(new Fr(amountToTransfer)); - const newCommitments = execInsert.callStackItem.publicInputs.newCommitments.filter( - field => !field.equals(Fr.ZERO), + const newCommitments = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newCommitments), ); expect(newCommitments).toHaveLength(1); @@ -732,7 +759,9 @@ describe('Private Execution test suite', () => { expect(noteAndSlot.note.items[0]).toEqual(new Fr(amountToTransfer)); - const newCommitments = result.callStackItem.publicInputs.newCommitments.filter(field => !field.equals(Fr.ZERO)); + const newCommitments = sideEffectArrayToValueArray( + nonEmptySideEffects(result.callStackItem.publicInputs.newCommitments), + ); expect(newCommitments).toHaveLength(1); const commitment = newCommitments[0]; diff --git a/yarn-project/acir-simulator/src/client/simulator.ts b/yarn-project/acir-simulator/src/client/simulator.ts index cf7222cbe20..8157a73709a 100644 --- a/yarn-project/acir-simulator/src/client/simulator.ts +++ b/yarn-project/acir-simulator/src/client/simulator.ts @@ -88,6 +88,7 @@ export class AcirSimulator { false, false, request.functionData.isConstructor, + Fr.ZERO, // TODO(dan): actual value ); const context = new ClientExecutionContext( contractAddress, diff --git a/yarn-project/acir-simulator/src/public/execution.ts b/yarn-project/acir-simulator/src/public/execution.ts index 9d2b2047000..12f1b71cf40 100644 --- a/yarn-project/acir-simulator/src/public/execution.ts +++ b/yarn-project/acir-simulator/src/public/execution.ts @@ -7,6 +7,8 @@ import { FunctionData, PublicDataRead, PublicDataUpdateRequest, + SideEffect, + SideEffectLinkedToNoteHash, } from '@aztec/circuits.js'; import { computePublicDataTreeIndex, computePublicDataTreeValue } from '@aztec/circuits.js/abis'; import { FunctionL2Logs } from '@aztec/types'; @@ -20,11 +22,11 @@ export interface PublicExecutionResult { /** The return values of the function. */ returnValues: Fr[]; /** The new commitments to be inserted into the commitments tree. */ - newCommitments: Fr[]; + newCommitments: SideEffect[]; /** The new l2 to l1 messages generated in this call. */ newL2ToL1Messages: Fr[]; /** The new nullifiers to be inserted into the nullifier tree. */ - newNullifiers: Fr[]; + newNullifiers: SideEffectLinkedToNoteHash[]; /** The contract storage reads performed by the function. */ contractStorageReads: ContractStorageRead[]; /** The contract storage update requests performed by the function. */ diff --git a/yarn-project/acir-simulator/src/public/executor.ts b/yarn-project/acir-simulator/src/public/executor.ts index fdcb691898d..c0094363c96 100644 --- a/yarn-project/acir-simulator/src/public/executor.ts +++ b/yarn-project/acir-simulator/src/public/executor.ts @@ -47,8 +47,8 @@ export async function executePublicFunction( } = extractPublicCircuitPublicInputs(partialWitness, acir); const newL2ToL1Messages = newL2ToL1Msgs.filter(v => !v.isZero()); - const newCommitments = newCommitmentsPadded.filter(v => !v.isZero()); - const newNullifiers = newNullifiersPadded.filter(v => !v.isZero()); + const newCommitments = newCommitmentsPadded.filter(v => !v.isEmpty()); + const newNullifiers = newNullifiersPadded.filter(v => !v.isEmpty()); const { contractStorageReads, contractStorageUpdateRequests } = context.getStorageActionData(); log( diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 557a67ea0be..4fdc658c2b8 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -270,37 +270,37 @@ impl PrivateContext { args_hash: fields[12], return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 13), read_requests: arr_copy_slice(fields, [0; MAX_READ_REQUESTS_PER_CALL], 17), - new_commitments: arr_copy_slice(fields, [0; MAX_NEW_COMMITMENTS_PER_CALL], 81), - new_nullifiers: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 97), - nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 113), - private_call_stack: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 129), - public_call_stack: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 133), - new_l2_to_l1_msgs: arr_copy_slice(fields, [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], 137), - encrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 139), - unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 141), - encrypted_log_preimages_length: fields[143], - unencrypted_log_preimages_length: fields[144], + new_commitments: arr_copy_slice(fields, [0; MAX_NEW_COMMITMENTS_PER_CALL], 49), + new_nullifiers: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 65), + nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 81), + private_call_stack: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 97), + public_call_stack: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 101), + new_l2_to_l1_msgs: arr_copy_slice(fields, [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], 105), + encrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 107), + unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 109), + encrypted_log_preimages_length: fields[111], + unencrypted_log_preimages_length: fields[112], block_data: HistoricBlockData { // Must match order in `private_circuit_public_inputs.hpp` - note_hash_tree_root : fields[145], - nullifier_tree_root : fields[146], - contract_tree_root : fields[147], - l1_to_l2_messages_tree_root : fields[148], - blocks_tree_root : fields[149], - public_data_tree_root: fields[150], - global_variables_hash: fields[151], + note_hash_tree_root : fields[113], + nullifier_tree_root : fields[114], + contract_tree_root : fields[115], + l1_to_l2_messages_tree_root : fields[116], + blocks_tree_root : fields[117], + public_data_tree_root: fields[118], + global_variables_hash: fields[119], }, contract_deployment_data: ContractDeploymentData { - deployer_public_key: Point::new(fields[152], fields[153]), - constructor_vk_hash : fields[154], - function_tree_root : fields[155], - contract_address_salt : fields[156], - portal_contract_address : fields[157], + deployer_public_key: Point::new(fields[120], fields[121]), + constructor_vk_hash : fields[122], + function_tree_root : fields[123], + contract_address_salt : fields[124], + portal_contract_address : fields[125], }, - chain_id: fields[158], - version: fields[159], + chain_id: fields[126], + version: fields[127], }, - is_execution_request: fields[160] as bool, + is_execution_request: fields[128] as bool, }; assert(contract_address == item.contract_address); assert(function_selector == item.function_data.function_selector); diff --git a/yarn-project/circuits.js/src/structs/call_context.ts b/yarn-project/circuits.js/src/structs/call_context.ts index 860b2fc05ea..76feb665227 100644 --- a/yarn-project/circuits.js/src/structs/call_context.ts +++ b/yarn-project/circuits.js/src/structs/call_context.ts @@ -47,6 +47,10 @@ export class CallContext { * Determines whether the call is a contract deployment. */ public isContractDeployment: boolean, + /** + * The start side effect counter for this call context. + */ + public startSideEffectCounter: Fr, ) { this.portalContractAddress = portalContractAddress instanceof EthAddress ? portalContractAddress : EthAddress.fromField(portalContractAddress); @@ -65,6 +69,7 @@ export class CallContext { false, false, false, + Fr.ZERO, ); } @@ -90,6 +95,7 @@ export class CallContext { fields.isDelegateCall, fields.isStaticCall, fields.isContractDeployment, + fields.startSideEffectCounter, ] as const; } @@ -116,6 +122,7 @@ export class CallContext { reader.readBoolean(), reader.readBoolean(), reader.readBoolean(), + new Fr(reader.readNumber()), ); } diff --git a/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts index aafd9b454bb..070aa584955 100644 --- a/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts @@ -15,7 +15,7 @@ import { import { FieldsOf, makeTuple } from '../utils/jsUtils.js'; import { serializeToBuffer } from '../utils/serialize.js'; import { CallContext } from './call_context.js'; -import { HistoricBlockData } from './index.js'; +import { HistoricBlockData, SideEffect, SideEffectLinkedToNoteHash } from './index.js'; /** * Contract storage read operation on a specific contract. @@ -179,11 +179,11 @@ export class PublicCircuitPublicInputs { /** * New commitments created within a public execution call */ - public newCommitments: Tuple, + public newCommitments: Tuple, /** * New nullifiers created within a public execution call */ - public newNullifiers: Tuple, + public newNullifiers: Tuple, /** * New L2 to L1 messages generated during the call. */ @@ -228,8 +228,8 @@ export class PublicCircuitPublicInputs { makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, ContractStorageUpdateRequest.empty), makeTuple(MAX_PUBLIC_DATA_READS_PER_CALL, ContractStorageRead.empty), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr.zero), - makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, Fr.zero), - makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, Fr.zero), + makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, SideEffect.empty), + makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, Fr.zero), makeTuple(2, Fr.zero), Fr.ZERO, @@ -239,6 +239,9 @@ export class PublicCircuitPublicInputs { } isEmpty() { + const isSideEffectArrayEmpty = (arr: SideEffect[]) => isArrayEmpty(arr, item => item.isEmpty()); + const isSideEffectLinkedArrayEmpty = (arr: SideEffectLinkedToNoteHash[]) => + isArrayEmpty(arr, item => item.isEmpty()); const isFrArrayEmpty = (arr: Fr[]) => isArrayEmpty(arr, item => item.isZero()); return ( this.callContext.isEmpty() && @@ -247,8 +250,8 @@ export class PublicCircuitPublicInputs { isArrayEmpty(this.contractStorageUpdateRequests, item => item.isEmpty()) && isArrayEmpty(this.contractStorageReads, item => item.isEmpty()) && isFrArrayEmpty(this.publicCallStackHashes) && - isFrArrayEmpty(this.newCommitments) && - isFrArrayEmpty(this.newNullifiers) && + isSideEffectArrayEmpty(this.newCommitments) && + isSideEffectLinkedArrayEmpty(this.newNullifiers) && isFrArrayEmpty(this.newL2ToL1Msgs) && isFrArrayEmpty(this.unencryptedLogsHash) && this.unencryptedLogPreimagesLength.isZero() && From 8851e89f5fd08539d7e4ba3e57153d1b9cddaefb Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 15:48:19 -0800 Subject: [PATCH 10/71] sideeffect TS class --- .../circuits.js/src/structs/side_effects.ts | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 yarn-project/circuits.js/src/structs/side_effects.ts diff --git a/yarn-project/circuits.js/src/structs/side_effects.ts b/yarn-project/circuits.js/src/structs/side_effects.ts new file mode 100644 index 00000000000..9d0116ccca0 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/side_effects.ts @@ -0,0 +1,158 @@ +import { BufferReader } from '@aztec/foundation/serialize'; + +import { serializeToBuffer } from '../utils/serialize.js'; +import { Fr } from './index.js'; + +/** + * Essential members and functions of all SideEffect variants + */ +interface SideEffectType { + /** The actual value associated with the SideEffect */ + value: Fr; + /** Convert to a buffer */ + toBuffer(): Buffer; + /** Convert to a field array */ + toFieldArray(): Fr[]; + /** Are all of the fields of the SideEffect zero? */ + isEmpty(): boolean; +} + +/** + * Side-effect object consisting of a value and a counter. + * cpp/src/aztec3/circuits/abis/side_effects.hpp. + */ +export class SideEffect implements SideEffectType { + constructor( + /** + * The value of the side-effect object. + */ + public value: Fr, + /** + * The side-effect counter. + */ + public sideEffectCounter: Fr, + ) {} + + /** + * Serialize this as a buffer. + * @returns The buffer. + */ + toBuffer(): Buffer { + return serializeToBuffer(this.value, this.sideEffectCounter); + } + + /** + * Convert to an array of fields. + * @returns The array of fields. + */ + toFieldArray(): Fr[] { + return [this.value, this.sideEffectCounter]; + } + + /** + * Returns whether this instance of side-effect is empty. + * @returns True if the value and counter both are zero. + */ + isEmpty() { + return this.value.isZero() && this.sideEffectCounter.isZero(); + } + + /** + * Returns an empty instance of side-effect. + * @returns Side-effect with both value and counter being zero. + */ + static empty(): SideEffect { + return new SideEffect(Fr.zero(), Fr.zero()); + } + + /** + * Deserializes from a buffer or reader, corresponding to a write in cpp. + * @param buffer - Buffer or reader to read from. + * @returns A new instance of SideEffect. + */ + static fromBuffer(buffer: Buffer | BufferReader): SideEffect { + const reader = BufferReader.asReader(buffer); + return new SideEffect(Fr.fromBuffer(reader), Fr.fromBuffer(reader)); + } +} + +/** + * Side-effect object consisting of a value, a start counter and an end counter. + * cpp/src/aztec3/circuits/abis/side_effects.hpp. + */ +export class SideEffectLinkedToNoteHash implements SideEffectType { + constructor( + /** + * The value of the side-effect object. + */ + public value: Fr, + /** + * The note hash corresponding to the side-effect value. + */ + public noteHash: Fr, + /** + * The counter. + */ + public sideEffectCounter: Fr, + ) {} + + /** + * Serialize this as a buffer. + * @returns The buffer. + */ + toBuffer(): Buffer { + return serializeToBuffer(this.value, this.noteHash, this.sideEffectCounter); + } + + /** + * Convert to an array of fields. + * @returns The array of fields. + */ + toFieldArray(): Fr[] { + return [this.value, this.noteHash, this.sideEffectCounter]; + } + + /** + * Returns whether this instance of side-effect is empty. + * @returns True if the value, note hash and counter are all zero. + */ + isEmpty() { + return this.value.isZero() && this.noteHash.isZero() && this.sideEffectCounter.isZero(); + } + + /** + * Returns an empty instance of side-effect. + * @returns Side-effect with value, note hash and counter being zero. + */ + static empty(): SideEffectLinkedToNoteHash { + return new SideEffectLinkedToNoteHash(Fr.zero(), Fr.zero(), Fr.zero()); + } + + /** + * Deserializes from a buffer or reader, corresponding to a write in cpp. + * @param buffer - Buffer or reader to read from. + * @returns A new instance of SideEffectLinkedToNoteHash. + */ + static fromBuffer(buffer: Buffer | BufferReader): SideEffectLinkedToNoteHash { + const reader = BufferReader.asReader(buffer); + return new SideEffectLinkedToNoteHash(Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader)); + } +} + +/** + * Convert an array of side effects to an array only non-empty side effects. + * @param sideEffects - array to be converted + * @returns the array of the non-empty side effects + */ +export function nonEmptySideEffects(sideEffects: SideEffectType[]): SideEffectType[] { + return sideEffects.filter!(sideEffect => !sideEffect.isEmpty()); +} + +/** + * Convert an array of side effects to an array of their values. + * @param sideEffects - array to be converted + * @returns the array of field values (excluding SideEffect metadata like counter) + */ +export function sideEffectArrayToValueArray(sideEffects: SideEffectType[]): Fr[] { + return sideEffects.map(sideEffect => sideEffect.value); +} From 8802540fc65dba03cbf6b3b6306f5a96ecca6263 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 17:40:40 -0800 Subject: [PATCH 11/71] 0 values --- .../src/structs/private_circuit_public_inputs.ts | 6 +++--- yarn-project/circuits.js/src/tests/factories.ts | 6 ++++-- .../noir-protocol-circuits/src/index.test.ts | 4 ++-- .../src/type_conversion.ts | 16 ++++++++-------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index 20f5231e8c2..d7a03102f7a 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -122,9 +122,9 @@ export class PrivateCircuitPublicInputs { reader.readObject(CallContext), reader.readObject(Fr), reader.readArray(RETURN_VALUES_LENGTH, Fr), - reader.readArray(MAX_READ_REQUESTS_PER_CALL, Fr), - reader.readArray(MAX_NEW_COMMITMENTS_PER_CALL, Fr), - reader.readArray(MAX_NEW_NULLIFIERS_PER_CALL, Fr), + reader.readArray(MAX_READ_REQUESTS_PER_CALL, SideEffect), + reader.readArray(MAX_NEW_COMMITMENTS_PER_CALL, SideEffect), + reader.readArray(MAX_NEW_NULLIFIERS_PER_CALL, SideEffectLinkedToNoteHash), reader.readArray(MAX_NEW_NULLIFIERS_PER_CALL, Fr), reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, Fr), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr), diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 46d449f86cf..5a0d56b9d9f 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -329,6 +329,7 @@ export function makeCallContext(seed = 0, storageContractAddress = makeAztecAddr false, false, false, + Fr.ZERO, ); } @@ -352,8 +353,8 @@ export function makePublicCircuitPublicInputs( tupleGenerator(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, makeContractStorageUpdateRequest, seed + 0x400), tupleGenerator(MAX_PUBLIC_DATA_READS_PER_CALL, makeContractStorageRead, seed + 0x500), tupleGenerator(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x600), - tupleGenerator(MAX_NEW_COMMITMENTS_PER_CALL, fr, seed + 0x700), - tupleGenerator(MAX_NEW_NULLIFIERS_PER_CALL, fr, seed + 0x800), + tupleGenerator(MAX_NEW_COMMITMENTS_PER_CALL, makeNewSideEffect, seed + 0x700), + tupleGenerator(MAX_NEW_NULLIFIERS_PER_CALL, makeNewSideEffectLinkedToNoteHash, seed + 0x800), tupleGenerator(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, fr, seed + 0x900), tupleGenerator(2, fr, seed + 0x901), fr(seed + 0x902), @@ -683,6 +684,7 @@ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicIn true, true, true, + Fr.ZERO, ), argsHash: fr(seed + 0x100), returnValues: makeTuple(RETURN_VALUES_LENGTH, fr, seed + 0x200), diff --git a/yarn-project/noir-protocol-circuits/src/index.test.ts b/yarn-project/noir-protocol-circuits/src/index.test.ts index cf25ae116d0..275aba45ba4 100644 --- a/yarn-project/noir-protocol-circuits/src/index.test.ts +++ b/yarn-project/noir-protocol-circuits/src/index.test.ts @@ -376,7 +376,7 @@ describe('Noir compatibility tests (interop_testing.nr)', () => { const contractAddress = AztecAddress.fromBigInt(1n); const functionData = new FunctionData(new FunctionSelector(2), false, false, false); const appPublicInputs = PublicCircuitPublicInputs.empty(); - appPublicInputs.newCommitments[0] = new Fr(1); + appPublicInputs.newCommitments[0] = new SideEffect(new Fr(1), Fr.ZERO); const publicCallStackItem = new PublicCallStackItem(contractAddress, functionData, appPublicInputs, false); expect(publicCallStackItem.hash().toString()).toMatchSnapshot(); @@ -386,7 +386,7 @@ describe('Noir compatibility tests (interop_testing.nr)', () => { const contractAddress = AztecAddress.fromBigInt(1n); const functionData = new FunctionData(new FunctionSelector(2), false, false, false); const appPublicInputs = PublicCircuitPublicInputs.empty(); - appPublicInputs.newCommitments[0] = new Fr(1); + appPublicInputs.newCommitments[0] = new SideEffect(new Fr(1), Fr.ZERO); const publicCallStackItem = new PublicCallStackItem(contractAddress, functionData, appPublicInputs, true); expect(publicCallStackItem.hash().toString()).toMatchSnapshot(); diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index 5c028135c08..281b3ab7c2a 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -737,9 +737,9 @@ export function mapCombinedAccumulatedDataFromNoir( return new CombinedAccumulatedData( // TODO aggregation object AggregationObject.makeFake(), - mapTupleFromNoir(combinedAccumulatedData.read_requests, MAX_READ_REQUESTS_PER_TX, mapFieldFromNoir), - mapTupleFromNoir(combinedAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapFieldFromNoir), - mapTupleFromNoir(combinedAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), + mapTupleFromNoir(combinedAccumulatedData.read_requests, MAX_READ_REQUESTS_PER_TX, mapSideEffectFromNoir), + mapTupleFromNoir(combinedAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapSideEffectFromNoir), + mapTupleFromNoir(combinedAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), mapTupleFromNoir(combinedAccumulatedData.nullified_commitments, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), mapTupleFromNoir( combinedAccumulatedData.private_call_stack, @@ -784,8 +784,8 @@ export function mapFinalAccumulatedDataFromNoir(finalAccumulatedData: FinalAccum return new FinalAccumulatedData( // TODO aggregation object AggregationObject.makeFake(), - mapTupleFromNoir(finalAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapFieldFromNoir), - mapTupleFromNoir(finalAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), + mapTupleFromNoir(finalAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapSideEffectFromNoir), + mapTupleFromNoir(finalAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), mapTupleFromNoir(finalAccumulatedData.nullified_commitments, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), mapTupleFromNoir( finalAccumulatedData.private_call_stack, @@ -821,9 +821,9 @@ export function mapCombinedAccumulatedDataToNoir( ): CombinedAccumulatedDataNoir { return { aggregation_object: {}, - read_requests: mapTuple(combinedAccumulatedData.readRequests, mapFieldToNoir), - new_commitments: mapTuple(combinedAccumulatedData.newCommitments, mapFieldToNoir), - new_nullifiers: mapTuple(combinedAccumulatedData.newNullifiers, mapFieldToNoir), + read_requests: mapTuple(combinedAccumulatedData.readRequests, mapSideEffectToNoir), + new_commitments: mapTuple(combinedAccumulatedData.newCommitments, mapSideEffectToNoir), + new_nullifiers: mapTuple(combinedAccumulatedData.newNullifiers, mapSideEffectLinkedToNoir), nullified_commitments: mapTuple(combinedAccumulatedData.nullifiedCommitments, mapFieldToNoir), private_call_stack: mapTuple(combinedAccumulatedData.privateCallStack, mapCallRequestToNoir), public_call_stack: mapTuple(combinedAccumulatedData.publicCallStack, mapCallRequestToNoir), From 6b46ea097b8db6cd4e39b7368be9420f5f529408 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 17:48:04 -0800 Subject: [PATCH 12/71] missing merge conflict --- .../src/crates/types/src/abis/public_circuit_public_inputs.nr | 4 ---- 1 file changed, 4 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index 8d08fc48913..86f319e45c9 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -12,12 +12,8 @@ use crate::constants::{ use crate::{ abis::{ call_context::CallContext, -<<<<<<< HEAD - historical_block_data::HistoricalBlockData, side_effect::{SideEffect, SideEffectLinkedToNoteHash}, -======= block_header::BlockHeader, ->>>>>>> master }, address::Address, contrakt::{ From 6c9a5ca651b62fe8b0492f434c53f6a8e9a0cbd2 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 17:50:28 -0800 Subject: [PATCH 13/71] lingering merge conflict --- yarn-project/aztec-nr/aztec/src/context.nr | 25 +--------------------- 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index cdc052a1826..5475bf53b43 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -270,7 +270,6 @@ impl PrivateContext { args_hash: fields[12], return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 13), read_requests: arr_copy_slice(fields, [0; MAX_READ_REQUESTS_PER_CALL], 17), -<<<<<<< HEAD new_commitments: arr_copy_slice(fields, [0; MAX_NEW_COMMITMENTS_PER_CALL], 49), new_nullifiers: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 65), nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 81), @@ -281,7 +280,7 @@ impl PrivateContext { unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 109), encrypted_log_preimages_length: fields[111], unencrypted_log_preimages_length: fields[112], - block_data: HistoricBlockData { + block_header: BlockHeader{ // Must match order in `private_circuit_public_inputs.hpp` note_hash_tree_root : fields[113], nullifier_tree_root : fields[114], @@ -290,28 +289,6 @@ impl PrivateContext { blocks_tree_root : fields[117], public_data_tree_root: fields[118], global_variables_hash: fields[119], -======= - pending_read_requests: arr_copy_slice(fields, [0; MAX_READ_REQUESTS_PER_CALL], 49), - new_commitments: arr_copy_slice(fields, [0; MAX_NEW_COMMITMENTS_PER_CALL], 81), - new_nullifiers: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 97), - nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 113), - private_call_stack: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 129), - public_call_stack: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 133), - new_l2_to_l1_msgs: arr_copy_slice(fields, [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], 137), - encrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 139), - unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 141), - encrypted_log_preimages_length: fields[143], - unencrypted_log_preimages_length: fields[144], - block_header: BlockHeader { - // Must match order in `private_circuit_public_inputs.hpp` - note_hash_tree_root : fields[145], - nullifier_tree_root : fields[146], - contract_tree_root : fields[147], - l1_to_l2_messages_tree_root : fields[148], - archive_root : fields[149], - public_data_tree_root: fields[150], - global_variables_hash: fields[151], ->>>>>>> master }, contract_deployment_data: ContractDeploymentData { deployer_public_key: Point::new(fields[120], fields[121]), From f116e6e22118063474f95a99d1d775317d6c6ec1 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Wed, 6 Dec 2023 18:08:59 -0800 Subject: [PATCH 14/71] some noir updates --- .../src/tests/previous_kernel_data_builder.nr | 19 +++++++++++++++---- .../src/tests/private_call_data_builder.nr | 2 ++ .../private_circuit_public_inputs_builder.nr | 7 ++++--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr index 9c4c26dffc6..b7610cd9fc7 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr @@ -9,6 +9,7 @@ use crate::{ previous_kernel_data::PreviousKernelData, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::{Address, EthAddress}, hash::NUM_FIELDS_PER_SHA256, @@ -44,7 +45,10 @@ struct PreviousKernelDataBuilder { impl PreviousKernelDataBuilder { pub fn new() -> Self { let mut end: CombinedAccumulatedDataBuilder = dep::std::unsafe::zeroed(); - end.new_nullifiers.push(321); // 0th nullifier must be non-zero. + end.new_nullifiers.push(SideEffectLinkedToNoteHash{ + value: 321, + note_hash: 0, + counter: 0}); // 0th nullifier must be non-zero. end.nullified_commitments.push(EMPTY_NULLIFIED_COMMITMENT); let tx_context = build_tx_context(false); @@ -116,18 +120,23 @@ impl PreviousKernelDataBuilder { for i in 0..MAX_NEW_COMMITMENTS_PER_TX { if i as u64 < num_new_commitments as u64 { // The default value is its index + 1. - self.end.new_commitments.push(i + mocked_value_offset); + self.end.new_commitments.push(SideEffect{ + value: i + mocked_value_offset, + counter: 0}); } } } pub fn append_new_nullifiers(&mut self, num_extra_nullifier: Field) { let first_nullifier = self.end.new_nullifiers.get(0); - let mocked_value_offset = first_nullifier + self.end.new_nullifiers.len(); + let mocked_value_offset = first_nullifier.value + self.end.new_nullifiers.len(); for i in 1..MAX_NEW_NULLIFIERS_PER_TX { if i as u64 <= num_extra_nullifier as u64 { // The default value is its index + the value of the first nullifier. - self.end.new_nullifiers.push(i + mocked_value_offset); + self.end.new_nullifiers.push(SideEffectLinkedToNoteHash{ + value: i + mocked_value_offset, + note_hash: first_nullifier.note_hash, + counter: 0}); } } } @@ -162,6 +171,8 @@ impl PreviousKernelDataBuilder { hash, caller_contract_address: self.contract_address, caller_context, + 0, + 0, } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr index 0cb9b217f54..ef28eb4ef51 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr @@ -149,6 +149,8 @@ impl PrivateCallDataBuilder { hash, caller_contract_address: self.contract_address, caller_context, + 0, + 0, }; hashes.push(hash); call_requests.push(request); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr index 8d467a1dfab..a9ab8efca24 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -4,6 +4,7 @@ use crate::{ complete_address::CompleteAddress, block_header::BlockHeader, private_circuit_public_inputs::PrivateCircuitPublicInputs, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, contrakt::deployment_data::ContractDeploymentData, hash::{compute_constructor_hash, NUM_FIELDS_PER_SHA256, hash_args}, @@ -29,10 +30,10 @@ struct PrivateCircuitPublicInputsBuilder { args_hash: Field, return_values: BoundedVec, - read_requests: BoundedVec, + read_requests: BoundedVec, - new_commitments: BoundedVec, - new_nullifiers: BoundedVec, + new_commitments: BoundedVec, + new_nullifiers: BoundedVec, nullified_commitments: BoundedVec, private_call_stack_hashes: BoundedVec, From 26b7ec5f060a0bd6e73a25f6d5aa6d98b7d35a2e Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 12:57:20 -0800 Subject: [PATCH 15/71] use single index for pedersen hash across sideffects --- .../src/crates/types/src/abis/side_effect.nr | 3 ++- .../noir-protocol-circuits/src/crates/types/src/constants.nr | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index 76a9c10fed4..e81d83d4075 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -1,4 +1,5 @@ use dep::aztec::constants_gen::{GENERATOR_INDEX__SIDE_EFFECT, GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH}; +use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT}; struct SideEffect{ value: Field, @@ -52,7 +53,7 @@ impl SideEffectLinkedToNoteHash{ self.value, self.note_hash, self.counter, - ], GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH) + ], GENERATOR_INDEX__SIDE_EFFECT) } pub fn assert_is_zero(self){ diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index a20d7081715..82d2747cf5c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -169,8 +169,6 @@ global GENERATOR_INDEX__GLOBAL_VARIABLES = 26; global GENERATOR_INDEX__PARTIAL_ADDRESS = 27; global GENERATOR_INDEX__BLOCK_HASH = 28; global GENERATOR_INDEX__SIDE_EFFECT = 29; -global GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH = 30; -global GENERATOR_INDEX__SIDE_EFFECT_WITH_RANGE = 31; // Indices with size ≤ 16 global GENERATOR_INDEX__TX_REQUEST = 33; global GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34; From 076da9643ac0a644df99045530f3f53a64edcda0 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 13:15:17 -0800 Subject: [PATCH 16/71] explicit field names in sideffect constructor --- .../src/private_kernel_init.nr | 4 ++-- .../src/crates/types/src/abis/side_effect.nr | 1 - .../types/src/tests/fixtures/read_requests.nr | 20 +++++++++++++------ .../src/tests/previous_kernel_data_builder.nr | 4 ++-- .../src/tests/private_call_data_builder.nr | 4 ++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index af5b28c8e86..e519157ea9c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -139,7 +139,7 @@ mod tests { }, tests::private_call_data_builder::PrivateCallDataBuilder, transaction::request::TxRequest, - utils::arrays::array_length, + utils::arrays::{array_length, struct_array_length}, }; struct PrivateKernelInitInputsBuilder { @@ -632,6 +632,6 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), MAX_READ_REQUESTS_PER_CALL); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), MAX_READ_REQUESTS_PER_CALL); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index e81d83d4075..83ccf7d3e99 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -1,4 +1,3 @@ -use dep::aztec::constants_gen::{GENERATOR_INDEX__SIDE_EFFECT, GENERATOR_INDEX__SIDE_EFFECT_LINKED_TO_NOTE_HASH}; use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT}; struct SideEffect{ diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr index 97a57f44976..e6c471f703a 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr @@ -1,4 +1,7 @@ -use crate::abis::membership_witness::ReadRequestMembershipWitness; +use crate::abis::{ + membership_witness::ReadRequestMembershipWitness, + side_effect::SideEffect, +}; use crate::tests::fixtures; use crate::utils::bounded_vec::BoundedVec; use crate::constants::{ @@ -6,35 +9,40 @@ use crate::constants::{ }; pub fn generate_read_requests(how_many: Field) -> ( - BoundedVec, + BoundedVec, BoundedVec ) { generate_read_requests_with_config(how_many, false, [0; MAX_READ_REQUESTS_PER_CALL]) } pub fn generate_transient_read_requests(how_many: Field) -> ( - BoundedVec, + BoundedVec, BoundedVec ) { generate_read_requests_with_config(how_many, true, [0; MAX_READ_REQUESTS_PER_CALL]) } pub fn generate_read_requests_with_config(how_many: Field, is_transient: bool, hints_to_commitment: [Field; MAX_READ_REQUESTS_PER_CALL]) -> ( - BoundedVec, + BoundedVec, BoundedVec ) { let mut read_requests = BoundedVec::new(0); let mut read_request_membership_witnesses = BoundedVec::new(dep::std::unsafe::zeroed()); for i in 0..how_many { - read_requests.push(i + 1); + read_requests.push( + SideEffect{ + value: i + 1 + counter: 0 + }); let witness = ReadRequestMembershipWitness { leaf_index: i, sibling_path: fixtures::note_hash_tree::SIBLING_PATHS[i], is_transient, hint_to_commitment: hints_to_commitment[i], }; - read_request_membership_witnesses.push(witness) + read_request_membership_witnesses.push( + witness) } (read_requests, read_request_membership_witnesses) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr index b7610cd9fc7..7fe84b20b2d 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr @@ -171,8 +171,8 @@ impl PreviousKernelDataBuilder { hash, caller_contract_address: self.contract_address, caller_context, - 0, - 0, + start_side_effect_counter: 0, + end_side_effect_counter: 0, } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr index ef28eb4ef51..18fb1592386 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr @@ -149,8 +149,8 @@ impl PrivateCallDataBuilder { hash, caller_contract_address: self.contract_address, caller_context, - 0, - 0, + start_side_effect_counter: 0, + end_side_effect_counter:0, }; hashes.push(hash); call_requests.push(request); From 44729944a7439e04c9f6809a5ba55a803ca6a541 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 13:27:25 -0800 Subject: [PATCH 17/71] comma --- .../src/crates/types/src/tests/fixtures/read_requests.nr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr index e6c471f703a..e74a9b3ee16 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr @@ -31,8 +31,8 @@ pub fn generate_read_requests_with_config(how_many: Field, is_transient: bool, h for i in 0..how_many { read_requests.push( - SideEffect{ - value: i + 1 + SideEffect { + value: i + 1, counter: 0 }); let witness = ReadRequestMembershipWitness { @@ -42,7 +42,7 @@ pub fn generate_read_requests_with_config(how_many: Field, is_transient: bool, h hint_to_commitment: hints_to_commitment[i], }; read_request_membership_witnesses.push( - witness) + witness); } (read_requests, read_request_membership_witnesses) From d1d62a4c14b919cec6cc68f95e1a521966677797 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 14:13:23 -0800 Subject: [PATCH 18/71] struct_array_length --- .../circuits.js/src/structs/side_effects.ts | 8 +- .../crates/private-kernel-lib/src/common.nr | 4 +- .../src/private_kernel_ordering.nr | 79 +++++++++++-------- .../src/crates/types/src/hash.nr | 4 +- .../types/src/tests/fixtures/read_requests.nr | 2 +- .../src/crates/types/src/utils/arrays.nr | 5 ++ .../src/type_conversion.ts | 61 +++++++++++++- 7 files changed, 118 insertions(+), 45 deletions(-) diff --git a/yarn-project/circuits.js/src/structs/side_effects.ts b/yarn-project/circuits.js/src/structs/side_effects.ts index 9d0116ccca0..ddc93595c47 100644 --- a/yarn-project/circuits.js/src/structs/side_effects.ts +++ b/yarn-project/circuits.js/src/structs/side_effects.ts @@ -30,7 +30,7 @@ export class SideEffect implements SideEffectType { /** * The side-effect counter. */ - public sideEffectCounter: Fr, + public counter: Fr, ) {} /** @@ -38,7 +38,7 @@ export class SideEffect implements SideEffectType { * @returns The buffer. */ toBuffer(): Buffer { - return serializeToBuffer(this.value, this.sideEffectCounter); + return serializeToBuffer(this.value, this.counter); } /** @@ -46,7 +46,7 @@ export class SideEffect implements SideEffectType { * @returns The array of fields. */ toFieldArray(): Fr[] { - return [this.value, this.sideEffectCounter]; + return [this.value, this.counter]; } /** @@ -54,7 +54,7 @@ export class SideEffect implements SideEffectType { * @returns True if the value and counter both are zero. */ isEmpty() { - return this.value.isZero() && this.sideEffectCounter.isZero(); + return this.value.isZero() && this.counter.isZero(); } /** diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index ac7603ed7f8..712001d78e0 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -178,7 +178,7 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) - let mut siloed_read_requests: BoundedVec = BoundedVec::new(SideEffect::new()); + let mut siloed_read_requests: BoundedVec = BoundedVec::new(SideEffect::zero()); for i in 0..MAX_READ_REQUESTS_PER_CALL { let read_request = read_requests[i].value; let witness = read_request_membership_witnesses[i]; @@ -194,7 +194,7 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // Enhance commitments and nullifiers with domain separation whereby domain is the contract. // // nullifiers - let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::new()); + let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 0fe7d3283e9..c50296a7c1c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -8,6 +8,7 @@ use dep::types::{ KernelCircuitPublicInputsBuilder, KernelCircuitPublicInputsFinal, }, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, constants::{ EMPTY_NULLIFIED_COMMITMENT, @@ -20,7 +21,7 @@ use dep::types::{ compute_unique_siloed_commitment, }, utils::{ - arrays::{array_length, struct_array_length}, + arrays::{array_length, struct_array_length, struct_array_eq, is_empty_struct_array}, bounded_vec::BoundedVec, }, }; @@ -43,7 +44,7 @@ impl PrivateKernelInputsOrdering { // match reads to commitments from the previous call(s) for rr_idx in 0..MAX_READ_REQUESTS_PER_TX { - let read_request = read_requests.get_unchecked(rr_idx); + let read_request = read_requests.get_unchecked(rr_idx).value; let read_commitment_hint = self.read_commitment_hints[rr_idx]; //TODO(David): Shouldn't this just be a uint64? let hint_pos = read_commitment_hint as u64; @@ -59,7 +60,7 @@ impl PrivateKernelInputsOrdering { } // Empty out read requests after matching them to commitments - public_inputs.end.read_requests = BoundedVec::new(0); + public_inputs.end.read_requests = BoundedVec::new(SideEffect::zero()); } fn match_nullifiers_to_commitments_and_squash(self, public_inputs: &mut KernelCircuitPublicInputsBuilder) { @@ -81,32 +82,32 @@ impl PrivateKernelInputsOrdering { // 0-valued nullified_commitment is empty and will be ignored if (nullified_commitments[n_idx] != 0) & (nullified_commitments[n_idx] != EMPTY_NULLIFIED_COMMITMENT) { assert(hint_pos < MAX_NEW_COMMITMENTS_PER_TX as u64, "New nullifier is transient but hint is invalid"); - assert_eq(nullified_commitment, new_commitments[hint_pos], "Hinted commitment does not match"); + assert_eq(nullified_commitment, new_commitments[hint_pos].value, "Hinted commitment does not match"); // match found! // squash both the nullifier and the commitment // (set to 0 here and then rearrange array after loop) - new_commitments[hint_pos] = 0; - new_nullifiers[n_idx as u64] = 0; + new_commitments[hint_pos] = SideEffect::zero(); + new_nullifiers[n_idx as u64] = SideEffectLinkedToNoteHash::zero(); } // non-transient (persistable) nullifiers are just kept in new_nullifiers array and forwarded // to public inputs (used later by base rollup circuit) } // Move all zero-ed (removed) entries of these arrays to the end and preserve ordering of other entries - let mut new_commitments_vec = BoundedVec::new(0); + let mut new_commitments_vec = BoundedVec::new(SideEffect::zero()); for c_idx in 0..MAX_NEW_COMMITMENTS_PER_TX { - if new_commitments[c_idx] != 0 { + if new_commitments[c_idx].value != 0 { new_commitments_vec.push(new_commitments[c_idx]); } } public_inputs.end.new_commitments = new_commitments_vec; - let mut new_nullifiers_vec = BoundedVec::new(0); + let mut new_nullifiers_vec = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); for n_idx in 0..MAX_NEW_NULLIFIERS_PER_TX { - if new_nullifiers[n_idx] != 0 { + if new_nullifiers[n_idx].value != 0 { new_nullifiers_vec.push(new_nullifiers[n_idx]); } } @@ -123,11 +124,14 @@ impl PrivateKernelInputsOrdering { for c_idx in 0..MAX_NEW_COMMITMENTS_PER_TX { // Apply nonce to all non-zero/non-empty commitments // Nonce is the hash of the first (0th) nullifier and the commitment's index into new_commitments array - let nonce = compute_commitment_nonce(first_nullifier, c_idx); - let commitment = unique_commitments[c_idx]; + let nonce = compute_commitment_nonce(first_nullifier.value, c_idx); + let commitment = unique_commitments[c_idx].value; if commitment != 0 { let unique_commitment = compute_unique_siloed_commitment(nonce, commitment); - unique_commitments[c_idx] = unique_commitment; + unique_commitments[c_idx] = SideEffect{ + value: unique_commitment, + counter: 0 + }; } } @@ -190,11 +194,11 @@ mod tests { } } - pub fn get_new_commitments(self) -> [Field; MAX_NEW_COMMITMENTS_PER_TX] { + pub fn get_new_commitments(self) -> [SideEffect; MAX_NEW_COMMITMENTS_PER_TX] { self.previous_kernel.end.new_commitments.storage } - pub fn get_new_nullifiers(self) -> [Field; MAX_NEW_NULLIFIERS_PER_TX] { + pub fn get_new_nullifiers(self) -> [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_TX] { self.previous_kernel.end.new_nullifiers.storage } @@ -204,9 +208,9 @@ mod tests { // A helper function that uses the first nullifer in the previous kernel to compute the unique siloed // commitments for the given commitments. - pub fn compute_unique_siloed_commitments(self, commitments: [Field; N]) -> [Field; N] { + pub fn compute_unique_siloed_commitments(self, commitments: [SideEffect; N]) -> [Field; N] { let first_nullifier = self.previous_kernel.end.new_nullifiers.get_unchecked(0); - compute_unique_siloed_commitments(first_nullifier, commitments) + compute_unique_siloed_commitments(first_nullifier.value, commitments) } pub fn append_transient_commitments(&mut self, num_commitments: Field) { @@ -224,7 +228,7 @@ mod tests { } pub fn nullify_transient_commitment(&mut self, nullifier_index: Field, commitment_index: Field) { - self.previous_kernel.end.nullified_commitments.storage[nullifier_index] = self.previous_kernel.end.new_commitments.get(commitment_index); + self.previous_kernel.end.nullified_commitments.storage[nullifier_index] = self.previous_kernel.end.new_commitments.get(commitment_index).value; self.nullifier_commitment_hints[nullifier_index] = commitment_index; } @@ -252,8 +256,8 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert(array_length(public_inputs.end.new_commitments) == 1); - assert(public_inputs.end.new_commitments[0] == unique_siloed_commitments[0]); + assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()) == 1); + assert(public_inputs.end.new_commitments[0].value == unique_siloed_commitments[0]); } #[test] @@ -269,9 +273,10 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert_eq(array_length(public_inputs.end.new_commitments), MAX_NEW_COMMITMENTS_PER_TX); + assert_eq(struct_array_length(public_inputs.end.new_commitments, + |c: SideEffect| SideEffect.isEmpty()), MAX_NEW_COMMITMENTS_PER_TX); for i in 0..MAX_NEW_COMMITMENTS_PER_TX { - assert(public_inputs.end.new_commitments[i] == unique_siloed_commitments[i]); + assert(public_inputs.end.new_commitments[i].value == unique_siloed_commitments[i]); } } @@ -283,7 +288,10 @@ mod tests { builder.add_transient_read(0); // Tweak the read request so that it does not match the commitment at index 0; let read_request = builder.previous_kernel.end.read_requests.pop(); - builder.previous_kernel.end.read_requests.push(read_request + 1); + builder.previous_kernel.end.read_requests.push(SideEffect { + value: read_request.value + 1, + counter: 0, + }); builder.failed(); } @@ -299,11 +307,13 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_array(public_inputs.end.new_commitments)); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert(array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers)); + assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers) + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.equals(b), |a| a.isEmpty()) + ); } #[test] @@ -321,11 +331,13 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(array_eq(public_inputs.end.new_commitments, unique_siloed_commitments)); + assert(struct_array_eq(public_inputs.end.new_commitments, unique_siloed_commitments, + |a: SideEffect, b: SideEffect| a.equals(b), |a| a.isEmpty())); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert(array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers)); + assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.equals(b), |a| a.isEmpty())); } #[test] @@ -343,7 +355,8 @@ mod tests { let public_inputs = builder.execute(); assert(is_empty_array(public_inputs.end.new_commitments)); - assert(array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]])); + assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], + |a, b| a.equals(b), |a| a.isEmpty())); } #[test] @@ -354,8 +367,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(array_length(public_inputs.end.new_commitments) == 2); - assert(array_length(public_inputs.end.new_nullifiers) == 3); + assert(struct_array_length(public_inputs.end.new_commitments) == 2); + assert(struct_array_length(public_inputs.end.new_nullifiers) == 3); } // same as previous test, but this time there are 0 commitments! @@ -367,8 +380,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(array_length(public_inputs.end.new_commitments) == 0); - assert(array_length(public_inputs.end.new_nullifiers) == 3); + assert(struct_array_length(public_inputs.end.new_commitments) == 0); + assert(struct_array_length(public_inputs.end.new_nullifiers) == 3); } #[test(should_fail_with="New nullifier is transient but hint is invalid")] @@ -414,7 +427,7 @@ mod tests { fn zero_0th_nullifier_fails() { let mut builder = PrivateKernelOrderingInputsBuilder::new(); - builder.previous_kernel.end.new_nullifiers = BoundedVec::new(0); + builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr index a792107a9cd..3cd366923e3 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr @@ -288,9 +288,9 @@ pub fn compute_unique_siloed_commitments(first_nullifier: Field, siloed_commi let mut unique_siloed_commitments = [0; N]; for i in 0..N { let siloed_commitment = siloed_commitments[i]; - if siloed_commitment != 0 { + if siloed_commitment.value != 0 { let nonce = compute_commitment_nonce(first_nullifier, i); - unique_siloed_commitments[i] = compute_unique_siloed_commitment(nonce, siloed_commitment); + unique_siloed_commitments[i].value = compute_unique_siloed_commitment(nonce, siloed_commitment.value); } } unique_siloed_commitments diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr index e74a9b3ee16..f06f06d5485 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr @@ -26,7 +26,7 @@ pub fn generate_read_requests_with_config(how_many: Field, is_transient: bool, h BoundedVec, BoundedVec ) { - let mut read_requests = BoundedVec::new(0); + let mut read_requests = BoundedVec::new(SideEffect::empty()); let mut read_request_membership_witnesses = BoundedVec::new(dep::std::unsafe::zeroed()); for i in 0..how_many { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/utils/arrays.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/utils/arrays.nr index 4b65e1e5a43..95703c90daa 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/utils/arrays.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/utils/arrays.nr @@ -23,6 +23,11 @@ fn is_empty(value : Field) -> bool { value == 0 } +pub fn is_empty_struct_array(array : [T; N], + is_empty: fn (T)-> bool) -> bool { + array.all(|elem| is_empty(elem)) +} + // Replace it with `array_to_bounded_vec` when trait is available. pub fn struct_array_to_bounded_vec(array: [T; N], is_empty_item: fn (T)->bool, empty_item: T) -> BoundedVec { let mut len = 0; diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index 281b3ab7c2a..b9de644453b 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -61,6 +61,8 @@ import { ReadRequestMembershipWitness, RootRollupInputs, RootRollupPublicInputs, + SideEffect, + SideEffectLinkedToNoteHash, TxContext, TxRequest, } from '@aztec/circuits.js'; @@ -92,6 +94,8 @@ import { PublicDataRead as PublicDataReadNoir, PublicDataUpdateRequest as PublicDataUpdateRequestNoir, ReadRequestMembershipWitness as ReadRequestMembershipWitnessNoir, + SideEffectLinkedToNoteHash as SideEffectLinkedToNoteHashNoir, + SideEffect as SideEffectNoir, TxContext as TxContextNoir, TxRequest as TxRequestNoir, } from './types/private_kernel_init_types.js'; @@ -437,6 +441,57 @@ export function mapCallRequestToNoir(callRequest: CallRequest): CallRequestNoir }; } +/** + * Maps a SideEffect to a noir side effect. + * @param sideEffect - The side effect. + * @returns The noir sideeffect. + */ +export function mapSideEffectToNoir(sideEffect: SideEffect): SideEffectNoir { + return { + value: mapFieldToNoir(sideEffect.value), + counter: mapFieldToNoir(sideEffect.counter), + }; +} + +/** + * Maps a noir side effect to aSideEffect. + * @param sideEffect - The noir side effect. + * @returns The TS sideeffect. + */ +export function mapSideEffectFromNoir(sideEffect: SideEffectNoir): SideEffect { + return new SideEffect(mapFieldFromNoir(sideEffect.value), mapFieldFromNoir(sideEffect.counter)); +} + +/** + * Maps a SideEffectLinked to a noir side effect. + * @param sideEffectLinked - The side effect linked to note hash. + * @returns The noir sideeffectlinked to note hash. + */ +export function mapSideEffectLinkedToNoir( + sideEffectLinked: SideEffectLinkedToNoteHash, +): SideEffectLinkedToNoteHashNoir { + return { + value: mapFieldToNoir(sideEffectLinked.value), + note_hash: mapFieldToNoir(sideEffectLinked.noteHash), + counter: mapFieldToNoir(sideEffectLinked.counter), + }; +} + +/** + * Maps a noir side effect to aSideEffect. + * @param sideEffect - The noir side effect. + * @returns The TS sideeffect. + */ +export function mapSideEffectLinkedFromNoir( + sideEffectLinked: SideEffectLinkedToNoteHashNoir, +): SideEffectLinkedToNoteHash { + return new SideEffectLinkedToNoteHash( + mapFieldFromNoir(sideEffectLinked.value), + mapFieldFromNoir(sideEffectLinked.note_hash), + mapFieldFromNoir(sideEffectLinked.counter), + ); +} + /** * Maps a block header to a noir block header. * @param blockHeader - The block header. @@ -487,9 +542,9 @@ export function mapPrivateCircuitPublicInputsToNoir( call_context: mapCallContextToNoir(privateCircuitPublicInputs.callContext), args_hash: mapFieldToNoir(privateCircuitPublicInputs.argsHash), return_values: mapTuple(privateCircuitPublicInputs.returnValues, mapFieldToNoir), - read_requests: mapTuple(privateCircuitPublicInputs.readRequests, mapFieldToNoir), - new_commitments: mapTuple(privateCircuitPublicInputs.newCommitments, mapFieldToNoir), - new_nullifiers: mapTuple(privateCircuitPublicInputs.newNullifiers, mapFieldToNoir), + read_requests: mapTuple(privateCircuitPublicInputs.readRequests, mapSideEffectToNoir), + new_commitments: mapTuple(privateCircuitPublicInputs.newCommitments, mapSideEffectToNoir), + new_nullifiers: mapTuple(privateCircuitPublicInputs.newNullifiers, mapSideEffectLinkedToNoir), nullified_commitments: mapTuple(privateCircuitPublicInputs.nullifiedCommitments, mapFieldToNoir), private_call_stack_hashes: mapTuple(privateCircuitPublicInputs.privateCallStackHashes, mapFieldToNoir), public_call_stack_hashes: mapTuple(privateCircuitPublicInputs.publicCallStackHashes, mapFieldToNoir), From e86510157a68863dd317fe0913aca32231123a05 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 14:16:24 -0800 Subject: [PATCH 19/71] rename to counter --- yarn-project/circuits.js/src/structs/side_effects.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn-project/circuits.js/src/structs/side_effects.ts b/yarn-project/circuits.js/src/structs/side_effects.ts index ddc93595c47..e49e62cccbc 100644 --- a/yarn-project/circuits.js/src/structs/side_effects.ts +++ b/yarn-project/circuits.js/src/structs/side_effects.ts @@ -93,7 +93,7 @@ export class SideEffectLinkedToNoteHash implements SideEffectType { /** * The counter. */ - public sideEffectCounter: Fr, + public counter: Fr, ) {} /** @@ -101,7 +101,7 @@ export class SideEffectLinkedToNoteHash implements SideEffectType { * @returns The buffer. */ toBuffer(): Buffer { - return serializeToBuffer(this.value, this.noteHash, this.sideEffectCounter); + return serializeToBuffer(this.value, this.noteHash, this.counter); } /** @@ -109,7 +109,7 @@ export class SideEffectLinkedToNoteHash implements SideEffectType { * @returns The array of fields. */ toFieldArray(): Fr[] { - return [this.value, this.noteHash, this.sideEffectCounter]; + return [this.value, this.noteHash, this.counter]; } /** @@ -117,7 +117,7 @@ export class SideEffectLinkedToNoteHash implements SideEffectType { * @returns True if the value, note hash and counter are all zero. */ isEmpty() { - return this.value.isZero() && this.noteHash.isZero() && this.sideEffectCounter.isZero(); + return this.value.isZero() && this.noteHash.isZero() && this.counter.isZero(); } /** From ee5cf8646fd47e2957cf4a3c9badbfdfd9fb0018 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 14:56:04 -0800 Subject: [PATCH 20/71] update some tests --- .../src/private_kernel_inner.nr | 54 ++++++++++++++----- .../src/private_kernel_ordering.nr | 2 +- .../src/tests/private_call_data_builder.nr | 1 + 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index a89e4010bab..e75f3d42b6f 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -457,7 +457,12 @@ mod tests { fn input_validation_malformed_arrays_read_requests() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.private_call.public_inputs.read_requests.push_array([0, 9123]); + builder.private_call.public_inputs.read_requests.push_array([SideEffect{ + value: 0, + counter: 0}, + SideEffect{ + value: 9123, + counter: 1}]); builder.failed(); } @@ -466,7 +471,12 @@ mod tests { fn input_validation_malformed_arrays_commitments() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.private_call.public_inputs.new_commitments.push_array([0, 9123]); + builder.private_call.public_inputs.new_commitments.push_array([SideEffect{ + value: 0, + counter: 0}, + SideEffect{ + value: 9123, + counter: 1}]); builder.failed(); } @@ -475,7 +485,15 @@ mod tests { fn input_validation_malformed_arrays_nullifiers() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.private_call.public_inputs.new_nullifiers.push_array([0, 12]); + builder.private_call.public_inputs.new_nullifiers.push_array([ + SideEffectLinkedToNoteHash{ + value: 0 + note_hash: 0, + counter: 0}, + SideEffectLinkedToNoteHash{ + value: 12, + note_hash: 0, + counter: 1}]); builder.failed(); } @@ -521,12 +539,17 @@ mod tests { let mut builder = PrivateKernelInnerInputsBuilder::new(); // The current call stack has 1 commitment; - builder.private_call.public_inputs.new_commitments.push(4321); + builder.private_call.public_inputs.new_commitments.push(SideEffect{ + value: 4321, + counter: 0}); // Mock the previous new commitments to be full, therefore no more commitments can be added. let mut full_new_commitments = [0; MAX_NEW_COMMITMENTS_PER_TX]; for i in 0..MAX_NEW_COMMITMENTS_PER_TX { - full_new_commitments[i] = i + 1; + full_new_commitments[i] = SideEffect{ + value: i + 1 + counter: i + }; } builder.previous_kernel.end.new_commitments.push_array(full_new_commitments); @@ -623,7 +646,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -635,7 +658,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -647,7 +670,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -659,7 +682,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -736,7 +759,10 @@ mod tests { fn creating_new_commitments_on_static_call_fails() { let mut builder = PrivateKernelInnerInputsBuilder::new().is_static_call(); - builder.private_call.public_inputs.new_commitments.push(1); + builder.private_call.public_inputs.new_commitments.push(SideEffect{ + value: 1, + counter: 0, + }); builder.failed(); } @@ -745,7 +771,11 @@ mod tests { fn creating_new_nullifiers_on_static_call_fails() { let mut builder = PrivateKernelInnerInputsBuilder::new().is_static_call(); - builder.private_call.public_inputs.new_nullifiers.push(1); + builder.private_call.public_inputs.new_nullifiers.push(SideEffectLinkedToNoteHash{ + value: 1, + note_hash: 0, + counter: 0, + }); builder.failed(); } @@ -754,7 +784,7 @@ mod tests { fn zero_0th_nullifier_fails() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.previous_kernel.end.new_nullifiers = BoundedVec::new(0); + builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index c50296a7c1c..ccd94a10caf 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -354,7 +354,7 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_array(public_inputs.end.new_commitments)); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty())); assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], |a, b| a.equals(b), |a| a.isEmpty())); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr index 18fb1592386..c21a6c7b9f5 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_call_data_builder.nr @@ -149,6 +149,7 @@ impl PrivateCallDataBuilder { hash, caller_contract_address: self.contract_address, caller_context, + // TODO: populate these start_side_effect_counter: 0, end_side_effect_counter:0, }; From 15f7bba059971055982baaf9ac882881179e1910 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 15:19:37 -0800 Subject: [PATCH 21/71] test imports --- .../crates/private-kernel-lib/src/common.nr | 30 ++++++++----- .../src/private_kernel_init.nr | 1 + .../src/private_kernel_inner.nr | 45 ++++++++++++------- .../src/private_kernel_ordering.nr | 17 +++---- 4 files changed, 57 insertions(+), 36 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 712001d78e0..7aac4fc0f18 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -52,9 +52,9 @@ pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { // to push_array_to_array() routines which rely on the passed arrays to be well-formed. validate_array(app_public_inputs.return_values); - validate_array(app_public_inputs.read_requests); - validate_array(app_public_inputs.new_commitments); - validate_array(app_public_inputs.new_nullifiers); + validate_struct_array(app_public_inputs.read_requests, |r: SideEffect| r.isEmpty()); + validate_struct_array(app_public_inputs.new_commitments, |c: SideEffect| c.isEmpty()); + validate_struct_array(app_public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.isEmpty()); validate_array(app_public_inputs.nullified_commitments); validate_array(app_public_inputs.private_call_stack_hashes); validate_array(app_public_inputs.public_call_stack_hashes); @@ -132,8 +132,8 @@ fn perform_static_call_checks(private_call: PrivateCallData) { let is_static_call = public_inputs.call_context.is_static_call; if is_static_call { // No state changes are allowed for static calls: - assert(is_empty_array(public_inputs.new_commitments), "new_commitments must be empty for static calls"); - assert(is_empty_array(public_inputs.new_nullifiers), "new_nullifiers must be empty for static calls"); + assert(is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.isEmpty()), "new_commitments must be empty for static calls"); + assert(is_empty_struct_array(public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.isEmpty()), "new_nullifiers must be empty for static calls"); } } @@ -199,20 +199,23 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { siloed_new_nullifiers.push(SideEffectLinkedToNoteHash{ - value: silo_nullifier(storage_contract_address, new_nullifier)) + value: silo_nullifier(storage_contract_address, new_nullifier), counter: new_nullifiers[i].counter, note_hash: new_nullifiers[i].note_hash, - }; + }); } } public_inputs.end.new_nullifiers.push_vec(siloed_new_nullifiers); // commitments - let mut siloed_new_commitments: BoundedVec = BoundedVec::new(0); + let mut siloed_new_commitments: BoundedVec = BoundedVec::new(0); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL { - let new_commitment = new_commitments[i]; + let new_commitment = new_commitments[i].value; if new_commitment != 0 { - siloed_new_commitments.push(silo_commitment(storage_contract_address, new_commitment)); + siloed_new_commitments.push( + SideEffect{ + value: silo_commitment(storage_contract_address, new_commitment), + counter: new_commitments[i].counter}); } } public_inputs.end.new_commitments.push_vec(siloed_new_commitments); @@ -325,7 +328,12 @@ pub fn contract_logic(private_call : PrivateCallData, public_inputs : &mut Kerne let new_contract_address_nullifier = compute_new_contract_address_hash(new_contract_address); - public_inputs.end.new_nullifiers.push(new_contract_address_nullifier); + public_inputs.end.new_nullifiers.push( + SideEffectLinkedToNoteHash{ + value: new_contract_address_nullifier, + note_hash: new_contract_address, + counter: 0, + }); } else { // non-contract deployments must specify contract address being interacted with assert(!contract_address.is_zero(), "contract address cannot be zero"); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index e519157ea9c..0424f622fa4 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -130,6 +130,7 @@ mod tests { complete_address::CompleteAddress, kernel_circuit_public_inputs::KernelCircuitPublicInputs, private_kernel::private_call_data::PrivateCallData, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::Address, hash::{ diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index e75f3d42b6f..1e07829312d 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -5,9 +5,10 @@ use dep::types::{ previous_kernel_data::PreviousKernelData, private_kernel::private_call_data::PrivateCallData, kernel_circuit_public_inputs::{KernelCircuitPublicInputs, KernelCircuitPublicInputsBuilder}, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, mocked::verify_previous_kernel_state, - utils::arrays::array_length, + utils::arrays::{array_length, struct_array_length}, }; struct PrivateKernelInputsInner { @@ -457,12 +458,15 @@ mod tests { fn input_validation_malformed_arrays_read_requests() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.private_call.public_inputs.read_requests.push_array([SideEffect{ + builder.private_call.public_inputs.read_requests.push_array([ + SideEffect { value: 0, - counter: 0}, - SideEffect{ + counter: 0 + }, + SideEffect { value: 9123, - counter: 1}]); + counter: 1, + }]); builder.failed(); } @@ -471,12 +475,14 @@ mod tests { fn input_validation_malformed_arrays_commitments() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.private_call.public_inputs.new_commitments.push_array([SideEffect{ + builder.private_call.public_inputs.new_commitments.push_array([ + SideEffect { value: 0, counter: 0}, - SideEffect{ + SideEffect { value: 9123, - counter: 1}]); + counter: 1, + }]); builder.failed(); } @@ -486,14 +492,15 @@ mod tests { let mut builder = PrivateKernelInnerInputsBuilder::new(); builder.private_call.public_inputs.new_nullifiers.push_array([ - SideEffectLinkedToNoteHash{ - value: 0 + SideEffectLinkedToNoteHash { + value: 0, note_hash: 0, counter: 0}, - SideEffectLinkedToNoteHash{ + SideEffectLinkedToNoteHash { value: 12, note_hash: 0, - counter: 1}]); + counter: 1, + }]); builder.failed(); } @@ -547,7 +554,7 @@ mod tests { let mut full_new_commitments = [0; MAX_NEW_COMMITMENTS_PER_TX]; for i in 0..MAX_NEW_COMMITMENTS_PER_TX { full_new_commitments[i] = SideEffect{ - value: i + 1 + value: i + 1, counter: i }; } @@ -591,7 +598,11 @@ mod tests { // tweak read_request so it gives wrong root when paired with its sibling path let read_request = builder.private_call.public_inputs.read_requests.pop(); - builder.private_call.public_inputs.read_requests.push(read_request + 1); + builder.private_call.public_inputs.read_requests.push( + SideEffect { + value: read_request.value + 1, + counter: read_request.counter, + }); builder.failed(); } @@ -694,7 +705,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 1); } #[test] @@ -708,7 +719,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 1); } #[test] @@ -720,7 +731,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), MAX_READ_REQUESTS_PER_CALL); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), MAX_READ_REQUESTS_PER_CALL); } #[test] diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index ccd94a10caf..675c7afd0e7 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -52,7 +52,7 @@ impl PrivateKernelInputsOrdering { if (read_request != 0) { let mut match_pos = MAX_NEW_COMMITMENTS_PER_TX as u64; if (hint_pos < MAX_NEW_COMMITMENTS_PER_TX as u64) { - match_pos = if read_request == new_commitments.get_unchecked(hint_pos as Field) { hint_pos } else { match_pos }; + match_pos = if read_request == new_commitments.get_unchecked(hint_pos as Field).value { hint_pos } else { match_pos }; } assert(match_pos != MAX_NEW_COMMITMENTS_PER_TX as u64, "read request is transient but does not match any commitment"); @@ -170,11 +170,12 @@ mod tests { MAX_NEW_NULLIFIERS_PER_TX, }; use dep::types::{ - abis::kernel_circuit_public_inputs::KernelCircuitPublicInputsFinal, + abis::{kernel_circuit_public_inputs::KernelCircuitPublicInputsFinal, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}}, hash::compute_unique_siloed_commitments, tests::previous_kernel_data_builder::PreviousKernelDataBuilder, utils::{ - arrays::{array_eq, array_length, is_empty_array}, + arrays::{array_eq, array_length, struct_array_length, is_empty_array}, bounded_vec::BoundedVec, }, }; @@ -356,7 +357,7 @@ mod tests { let public_inputs = builder.execute(); assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty())); assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], - |a, b| a.equals(b), |a| a.isEmpty())); + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.equals(b), |a: SideEffectLinkedToNoteHash| a.isEmpty())); } #[test] @@ -367,8 +368,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments) == 2); - assert(struct_array_length(public_inputs.end.new_nullifiers) == 3); + assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()) == 2); + assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.isEmpty()) == 3); } // same as previous test, but this time there are 0 commitments! @@ -380,8 +381,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments) == 0); - assert(struct_array_length(public_inputs.end.new_nullifiers) == 3); + assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()) == 0); + assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| c.isEmpty()) == 3); } #[test(should_fail_with="New nullifier is transient but hint is invalid")] From 15b5840de1243737213fc5d4e3eaddc8d178fb7c Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 15:38:59 -0800 Subject: [PATCH 22/71] more test imports --- .../crates/private-kernel-lib/src/common.nr | 5 ++- .../src/private_kernel_init.nr | 44 ++++++++++--------- .../src/private_kernel_inner.nr | 14 +++--- .../src/private_kernel_ordering.nr | 18 ++++---- .../src/crates/types/src/abis/side_effect.nr | 8 ++-- 5 files changed, 48 insertions(+), 41 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 7aac4fc0f18..7500f3cc400 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -41,6 +41,7 @@ use dep::types::{ is_empty_array, struct_array_to_bounded_vec, validate_array, + validate_struct_array, }, bounded_vec::BoundedVec, }, @@ -208,7 +209,7 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern public_inputs.end.new_nullifiers.push_vec(siloed_new_nullifiers); // commitments - let mut siloed_new_commitments: BoundedVec = BoundedVec::new(0); + let mut siloed_new_commitments: BoundedVec = BoundedVec::new(SideEffect::zero()); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL { let new_commitment = new_commitments[i].value; if new_commitment != 0 { @@ -331,7 +332,7 @@ pub fn contract_logic(private_call : PrivateCallData, public_inputs : &mut Kerne public_inputs.end.new_nullifiers.push( SideEffectLinkedToNoteHash{ value: new_contract_address_nullifier, - note_hash: new_contract_address, + note_hash: new_contract_address.to_field(), // check this counter: 0, }); } else { diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index 0424f622fa4..d2322c03906 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -5,11 +5,12 @@ use dep::types::{ combined_constant_data::CombinedConstantData, private_kernel::private_call_data::PrivateCallData, kernel_circuit_public_inputs::{KernelCircuitPublicInputs, KernelCircuitPublicInputsBuilder}, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, constants::EMPTY_NULLIFIED_COMMITMENT, mocked::{Proof, verify_previous_kernel_state}, transaction::request::TxRequest, - utils::arrays::is_empty_array, + utils::arrays::{is_empty_array, is_empty_struct_array}, }; // Initialization struct for private inputs to the private kernel @@ -218,7 +219,7 @@ mod tests { // Check the first nullifier is hash of the signed tx request let tx_hash = builder.tx_request.hash(); - assert_eq(public_inputs.end.new_nullifiers[0], tx_hash); + assert_eq(public_inputs.end.new_nullifiers[0].value, tx_hash); // Log preimages length should increase by `(un)encrypted_log_preimages_length` from private input assert_eq(public_inputs.end.encrypted_log_preimages_length, encrypted_log_preimages_length); @@ -254,13 +255,7 @@ mod tests { fn input_validation_malformed_arrays_return_values() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.return_values.push_array([SideEffect{ - value: 0, - counter: 0}, - SideEffect{ - value: 9123, - counter: 1 - }]); + builder.private_call.public_inputs.return_values.push_array([0, 9123]); builder.failed(); } @@ -269,12 +264,13 @@ mod tests { fn input_validation_malformed_arrays_read_requests() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.read_requests.push_array([SideEffect{ + builder.private_call.public_inputs.read_requests.push_array([ + SideEffect { value: 0, counter: 0}, - SideEffect{ + SideEffect { value: 9123, - counter: 1 + counter: 1, }]); builder.failed(); @@ -284,12 +280,14 @@ mod tests { fn input_validation_malformed_arrays_commitments() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.new_commitments.push_array([SideEffect{ + builder.private_call.public_inputs.new_commitments.push_array([ + SideEffect { value: 0, - counter: 0}, - SideEffect{ + counter: 0, + }, + SideEffect { value: 9123, - counter: 1 + counter: 1, }]); builder.failed(); @@ -492,7 +490,11 @@ mod tests { // tweak read_request so it gives wrong root when paired with its sibling path let read_request = builder.private_call.public_inputs.read_requests.pop(); - builder.private_call.public_inputs.read_requests.push(read_request + 1); + builder.private_call.public_inputs.read_requests.push( + SideEffect{ + value: read_request.value + 1, + counter: read_request.counter, + }); builder.failed(); } @@ -536,7 +538,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -552,7 +554,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -568,7 +570,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] @@ -584,7 +586,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); } #[test] diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index 1e07829312d..c6d8023de89 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -90,6 +90,7 @@ mod tests { use dep::types::{ abis::{ kernel_circuit_public_inputs::KernelCircuitPublicInputs, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, tests::{ previous_kernel_data_builder::PreviousKernelDataBuilder, @@ -98,7 +99,7 @@ mod tests { address::Address, hash::compute_logs_hash, utils::{ - arrays::array_length, + arrays::{array_length, struct_array_length}, bounded_vec::BoundedVec, }, }; @@ -546,16 +547,17 @@ mod tests { let mut builder = PrivateKernelInnerInputsBuilder::new(); // The current call stack has 1 commitment; - builder.private_call.public_inputs.new_commitments.push(SideEffect{ + builder.private_call.public_inputs.new_commitments.push(SideEffect { value: 4321, - counter: 0}); + counter: 0 + }); // Mock the previous new commitments to be full, therefore no more commitments can be added. - let mut full_new_commitments = [0; MAX_NEW_COMMITMENTS_PER_TX]; + let mut full_new_commitments = [SideEffect::zero(); MAX_NEW_COMMITMENTS_PER_TX]; for i in 0..MAX_NEW_COMMITMENTS_PER_TX { - full_new_commitments[i] = SideEffect{ + full_new_commitments[i] = SideEffect { value: i + 1, - counter: i + counter: i, }; } builder.previous_kernel.end.new_commitments.push_array(full_new_commitments); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 675c7afd0e7..e476a23c7c6 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -170,12 +170,14 @@ mod tests { MAX_NEW_NULLIFIERS_PER_TX, }; use dep::types::{ - abis::{kernel_circuit_public_inputs::KernelCircuitPublicInputsFinal, - side_effect::{SideEffect, SideEffectLinkedToNoteHash}}, + abis::{ + kernel_circuit_public_inputs::KernelCircuitPublicInputsFinal, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, + }, hash::compute_unique_siloed_commitments, tests::previous_kernel_data_builder::PreviousKernelDataBuilder, utils::{ - arrays::{array_eq, array_length, struct_array_length, is_empty_array}, + arrays::{array_eq, struct_array_eq, array_length, struct_array_length, is_empty_array, is_empty_struct_array}, bounded_vec::BoundedVec, }, }; @@ -313,7 +315,7 @@ mod tests { // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers) - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.equals(b), |a| a.isEmpty()) + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.isEmpty()) ); } @@ -333,12 +335,12 @@ mod tests { let public_inputs = builder.execute(); assert(struct_array_eq(public_inputs.end.new_commitments, unique_siloed_commitments, - |a: SideEffect, b: SideEffect| a.equals(b), |a| a.isEmpty())); + |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.isEmpty())); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.equals(b), |a| a.isEmpty())); + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.isEmpty())); } #[test] @@ -357,7 +359,7 @@ mod tests { let public_inputs = builder.execute(); assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty())); assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.equals(b), |a: SideEffectLinkedToNoteHash| a.isEmpty())); + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.isEmpty())); } #[test] @@ -428,7 +430,7 @@ mod tests { fn zero_0th_nullifier_fails() { let mut builder = PrivateKernelOrderingInputsBuilder::new(); - builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); + builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index 83ccf7d3e99..00ee2361124 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -15,10 +15,10 @@ impl SideEffect { } pub fn assert_is_zero(self){ - assert(self.is_zero()); + assert(self.isEmpty()); } - pub fn is_zero(self) -> bool { + pub fn isEmpty(self) -> bool { (self.value == 0) & (self.counter == 0) } @@ -56,10 +56,10 @@ impl SideEffectLinkedToNoteHash{ } pub fn assert_is_zero(self){ - assert(self.is_zero()); + assert(self.isEmpty()); } - pub fn is_zero(self) -> bool { + pub fn isEmpty(self) -> bool { (self.value == 0) & (self.note_hash == 0) & (self.counter == 0) From 6808b8ee8f59aa1c4976c7fdf4c76d2f64985425 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 15:54:11 -0800 Subject: [PATCH 23/71] noir fixes --- .../crates/private-kernel-lib/src/common.nr | 1 + .../src/private_kernel_init.nr | 10 ++++---- .../src/private_kernel_inner.nr | 16 ++++++------- .../src/private_kernel_ordering.nr | 24 +++++++++---------- .../src/crates/types/src/abis/side_effect.nr | 6 ++--- .../src/crates/types/src/hash.nr | 4 ++-- .../src/crates/types/src/interop_testing.nr | 11 +++++++-- .../types/src/tests/fixtures/read_requests.nr | 2 +- .../private_circuit_public_inputs_builder.nr | 1 + .../public_circuit_public_inputs_builder.nr | 5 ++-- 10 files changed, 45 insertions(+), 35 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 7500f3cc400..cd299c51c37 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -39,6 +39,7 @@ use dep::types::{ array_length, array_to_bounded_vec, is_empty_array, + is_empty_struct_array, struct_array_to_bounded_vec, validate_array, validate_struct_array, diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index d2322c03906..e304e8c9705 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -538,7 +538,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -554,7 +554,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -570,7 +570,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -586,7 +586,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -635,6 +635,6 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), MAX_READ_REQUESTS_PER_CALL); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), MAX_READ_REQUESTS_PER_CALL); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index c6d8023de89..ca71805a95e 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -659,7 +659,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -671,7 +671,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -683,7 +683,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -695,7 +695,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); } #[test] @@ -707,7 +707,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); } #[test] @@ -721,7 +721,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); } #[test] @@ -733,7 +733,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.isEmpty()), MAX_READ_REQUESTS_PER_CALL); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), MAX_READ_REQUESTS_PER_CALL); } #[test] @@ -797,7 +797,7 @@ mod tests { fn zero_0th_nullifier_fails() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); + builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index e476a23c7c6..7e6ce18ec68 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -259,7 +259,7 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()) == 1); + assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 1); assert(public_inputs.end.new_commitments[0].value == unique_siloed_commitments[0]); } @@ -277,7 +277,7 @@ mod tests { let public_inputs = builder.execute(); assert_eq(struct_array_length(public_inputs.end.new_commitments, - |c: SideEffect| SideEffect.isEmpty()), MAX_NEW_COMMITMENTS_PER_TX); + |c: SideEffect| c.is_zero()), MAX_NEW_COMMITMENTS_PER_TX); for i in 0..MAX_NEW_COMMITMENTS_PER_TX { assert(public_inputs.end.new_commitments[i].value == unique_siloed_commitments[i]); } @@ -310,12 +310,12 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers) - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.isEmpty()) + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero()) ); } @@ -335,12 +335,12 @@ mod tests { let public_inputs = builder.execute(); assert(struct_array_eq(public_inputs.end.new_commitments, unique_siloed_commitments, - |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.isEmpty())); + |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_zero())); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.isEmpty())); + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); } #[test] @@ -357,9 +357,9 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty())); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero())); assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.isEmpty())); + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); } #[test] @@ -370,8 +370,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()) == 2); - assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.isEmpty()) == 3); + assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 2); + assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()) == 3); } // same as previous test, but this time there are 0 commitments! @@ -383,8 +383,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.isEmpty()) == 0); - assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| c.isEmpty()) == 3); + assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 0); + assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()) == 3); } #[test(should_fail_with="New nullifier is transient but hint is invalid")] diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index 00ee2361124..b4a9be40739 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -15,10 +15,10 @@ impl SideEffect { } pub fn assert_is_zero(self){ - assert(self.isEmpty()); + assert(self.is_zero()); } - pub fn isEmpty(self) -> bool { + pub fn is_zero(self) -> bool { (self.value == 0) & (self.counter == 0) } @@ -59,7 +59,7 @@ impl SideEffectLinkedToNoteHash{ assert(self.isEmpty()); } - pub fn isEmpty(self) -> bool { + pub fn is_zero(self) -> bool { (self.value == 0) & (self.note_hash == 0) & (self.counter == 0) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr index 3cd366923e3..b94ca5d2229 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr @@ -284,8 +284,8 @@ pub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) ], GENERATOR_INDEX__UNIQUE_COMMITMENT) } -pub fn compute_unique_siloed_commitments(first_nullifier: Field, siloed_commitments: [Field; N]) -> [Field; N] { - let mut unique_siloed_commitments = [0; N]; +pub fn compute_unique_siloed_commitments(first_nullifier: Field, siloed_commitments: [SideEffect; N]) -> [Field; N] { + let mut unique_siloed_commitments = [SideEffect::zero(); N]; for i in 0..N { let siloed_commitment = siloed_commitments[i]; if siloed_commitment.value != 0 { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr index d3140b40e9b..de20d3c2ec3 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr @@ -10,6 +10,7 @@ use crate::abis::function_selector::FunctionSelector; use crate::hash::{compute_l2_to_l1_hash, sha256_to_field}; use crate::abis::call_stack_item::PublicCallStackItem; use crate::abis::public_circuit_public_inputs::PublicCircuitPublicInputs; +use crate::abis::side_effect::SideEffect; #[test] fn compute_complete_address() { @@ -110,7 +111,10 @@ fn compute_call_stack_item_request() { }; let mut public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); - public_inputs.new_commitments[0] = 1; + public_inputs.new_commitments[0] = SideEffect{ + value: 1, + counter: 0, + }; let call_stack_item = PublicCallStackItem { contract_address, @@ -133,7 +137,10 @@ fn compute_call_stack_item() { }; let mut public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); - public_inputs.new_commitments[0] = 1; + public_inputs.new_commitments[0] = SideEffect{ + value: 1, + counter: 0, + }; let call_stack_item = PublicCallStackItem { contract_address, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr index f06f06d5485..486087b1d69 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr @@ -26,7 +26,7 @@ pub fn generate_read_requests_with_config(how_many: Field, is_transient: bool, h BoundedVec, BoundedVec ) { - let mut read_requests = BoundedVec::new(SideEffect::empty()); + let mut read_requests = BoundedVec::new(SideEffect::zero()); let mut read_request_membership_witnesses = BoundedVec::new(dep::std::unsafe::zeroed()); for i in 0..how_many { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr index a9ab8efca24..20e5cb95569 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -93,6 +93,7 @@ impl PrivateCircuitPublicInputsBuilder { is_delegate_call: false, is_static_call: false, is_contract_deployment: is_constructor, + start_side_effect_counter: 0, // needed? }; public_inputs.call_context = call_context; public_inputs.args_hash = args_hash; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_circuit_public_inputs_builder.nr index 34d3df007c4..1dd90fa4129 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_circuit_public_inputs_builder.nr @@ -3,6 +3,7 @@ use crate::{ call_context::CallContext, block_header::BlockHeader, public_circuit_public_inputs::PublicCircuitPublicInputs, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::Address, contrakt::{ @@ -30,8 +31,8 @@ struct PublicCircuitPublicInputsBuilder { contract_storage_update_requests: BoundedVec, contract_storage_reads: BoundedVec, public_call_stack_hashes: BoundedVec, - new_commitments: BoundedVec, - new_nullifiers: BoundedVec, + new_commitments: BoundedVec, + new_nullifiers: BoundedVec, new_l2_to_l1_msgs: BoundedVec, unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256], unencrypted_log_preimages_length: Field, From 8dba6822350bebbd41bd3388b9251e550ed7e183 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Thu, 7 Dec 2023 16:03:49 -0800 Subject: [PATCH 24/71] more --- .../src/crates/private-kernel-lib/src/common.nr | 10 +++++----- .../private-kernel-lib/src/private_kernel_init.nr | 4 ++-- .../private-kernel-lib/src/private_kernel_ordering.nr | 5 +++-- .../src/crates/types/src/abis/side_effect.nr | 2 +- .../src/crates/types/src/hash.nr | 8 ++++++-- .../crates/types/src/tests/public_call_data_builder.nr | 1 + 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index cd299c51c37..28cb7a57015 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -54,9 +54,9 @@ pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { // to push_array_to_array() routines which rely on the passed arrays to be well-formed. validate_array(app_public_inputs.return_values); - validate_struct_array(app_public_inputs.read_requests, |r: SideEffect| r.isEmpty()); - validate_struct_array(app_public_inputs.new_commitments, |c: SideEffect| c.isEmpty()); - validate_struct_array(app_public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.isEmpty()); + validate_struct_array(app_public_inputs.read_requests, |r: SideEffect| r.is_zero()); + validate_struct_array(app_public_inputs.new_commitments, |c: SideEffect| c.is_zero()); + validate_struct_array(app_public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()); validate_array(app_public_inputs.nullified_commitments); validate_array(app_public_inputs.private_call_stack_hashes); validate_array(app_public_inputs.public_call_stack_hashes); @@ -134,8 +134,8 @@ fn perform_static_call_checks(private_call: PrivateCallData) { let is_static_call = public_inputs.call_context.is_static_call; if is_static_call { // No state changes are allowed for static calls: - assert(is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.isEmpty()), "new_commitments must be empty for static calls"); - assert(is_empty_struct_array(public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.isEmpty()), "new_nullifiers must be empty for static calls"); + assert(is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.is_zero()), "new_commitments must be empty for static calls"); + assert(is_empty_struct_array(public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()), "new_nullifiers must be empty for static calls"); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index e304e8c9705..d7e56eb8165 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -602,7 +602,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); } #[test] @@ -619,7 +619,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(array_length(public_inputs.end.read_requests), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); } #[test] diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 7e6ce18ec68..9140d68e586 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -310,12 +310,13 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero())); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers) - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero()) + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_zero() ); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index b4a9be40739..83ccf7d3e99 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -56,7 +56,7 @@ impl SideEffectLinkedToNoteHash{ } pub fn assert_is_zero(self){ - assert(self.isEmpty()); + assert(self.is_zero()); } pub fn is_zero(self) -> bool { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr index b94ca5d2229..e6d56b6209e 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr @@ -5,6 +5,7 @@ use crate::abis::function_selector::FunctionSelector; use crate::abis::function_leaf_preimage::FunctionLeafPreimage; use crate::abis::new_contract_data::NewContractData as ContractLeafPreimage; use crate::abis::function_data::FunctionData; +use crate::abis::side_effect::{SideEffect}; use crate::utils::uint128::U128; use crate::utils::uint256::U256; use crate::utils::bounded_vec::BoundedVec; @@ -284,13 +285,16 @@ pub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) ], GENERATOR_INDEX__UNIQUE_COMMITMENT) } -pub fn compute_unique_siloed_commitments(first_nullifier: Field, siloed_commitments: [SideEffect; N]) -> [Field; N] { +pub fn compute_unique_siloed_commitments(first_nullifier: Field, siloed_commitments: [SideEffect; N]) -> [SideEffect; N] { let mut unique_siloed_commitments = [SideEffect::zero(); N]; for i in 0..N { let siloed_commitment = siloed_commitments[i]; if siloed_commitment.value != 0 { let nonce = compute_commitment_nonce(first_nullifier, i); - unique_siloed_commitments[i].value = compute_unique_siloed_commitment(nonce, siloed_commitment.value); + unique_siloed_commitments[i] = SideEffect { + value: compute_unique_siloed_commitment(nonce, siloed_commitment.value), + counter: siloed_commitment.counter + }; } } unique_siloed_commitments diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr index d2579e650a9..359bb5e2052 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/public_call_data_builder.nr @@ -56,6 +56,7 @@ impl PublicCallDataBuilder { is_delegate_call: false, is_static_call: false, is_contract_deployment: false, + start_side_effect_counter: 0, // needed? }; PublicCallDataBuilder { From 30df276dbcfafb695bdf4495cef1146f76fe6ee4 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Fri, 8 Dec 2023 12:11:49 -0800 Subject: [PATCH 25/71] bad merge --- yarn-project/aztec-nr/aztec/src/context.nr | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 5475bf53b43..172e14b9afc 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -286,7 +286,7 @@ impl PrivateContext { nullifier_tree_root : fields[114], contract_tree_root : fields[115], l1_to_l2_messages_tree_root : fields[116], - blocks_tree_root : fields[117], + archive_root : fields[117], public_data_tree_root: fields[118], global_variables_hash: fields[119], }, diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 4ad6aabe39a..bb920f62d8a 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -106,8 +106,6 @@ export enum GeneratorIndex { PARTIAL_ADDRESS = 27, BLOCK_HASH = 28, SIDE_EFFECT = 29, - SIDE_EFFECT_LINKED_TO_NOTE_HASH = 30, - SIDE_EFFECT_WITH_RANGE = 31, TX_REQUEST = 33, SIGNATURE_PAYLOAD = 34, VK = 41, From 5f482bef7ddb87461b51c18e64e60fb03581b2d8 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Fri, 8 Dec 2023 13:03:21 -0800 Subject: [PATCH 26/71] types? --- .../src/private_kernel_ordering.nr | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 9140d68e586..bb7e4f72e44 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -205,13 +205,13 @@ mod tests { self.previous_kernel.end.new_nullifiers.storage } - pub fn get_unique_siloed_commitments(self) -> [Field; MAX_NEW_COMMITMENTS_PER_TX] { + pub fn get_unique_siloed_commitments(self) -> [SideEffect; MAX_NEW_COMMITMENTS_PER_TX] { self.compute_unique_siloed_commitments(self.previous_kernel.end.new_commitments.storage) } // A helper function that uses the first nullifer in the previous kernel to compute the unique siloed // commitments for the given commitments. - pub fn compute_unique_siloed_commitments(self, commitments: [SideEffect; N]) -> [Field; N] { + pub fn compute_unique_siloed_commitments(self, commitments: [SideEffect; N]) -> [SideEffect; N] { let first_nullifier = self.previous_kernel.end.new_nullifiers.get_unchecked(0); compute_unique_siloed_commitments(first_nullifier.value, commitments) } @@ -260,7 +260,7 @@ mod tests { let public_inputs = builder.execute(); assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 1); - assert(public_inputs.end.new_commitments[0].value == unique_siloed_commitments[0]); + assert(public_inputs.end.new_commitments[0].eq(unique_siloed_commitments[0])); } #[test] @@ -279,7 +279,7 @@ mod tests { assert_eq(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()), MAX_NEW_COMMITMENTS_PER_TX); for i in 0..MAX_NEW_COMMITMENTS_PER_TX { - assert(public_inputs.end.new_commitments[i].value == unique_siloed_commitments[i]); + assert(public_inputs.end.new_commitments[i].eq(unique_siloed_commitments[i])); } } @@ -314,10 +314,11 @@ mod tests { // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers) - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), - |a: SideEffectLinkedToNoteHash| a.is_zero() - ); + assert( + struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_zero() + )); } #[test] From ed135d83040c394cff4e1d1f7068dd5429d67472 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Fri, 8 Dec 2023 13:57:44 -0800 Subject: [PATCH 27/71] break down public_kernel_public_previous big test --- .../src/public_kernel_public_previous.nr | 96 ++++++++++++++----- .../src/abis/public_circuit_public_inputs.nr | 2 + 2 files changed, 76 insertions(+), 22 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr index 58c5b2ab399..3ef05e2fefa 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr @@ -61,6 +61,7 @@ mod tests { kernel_circuit_public_inputs::KernelCircuitPublicInputs, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, hash::{ compute_l2_to_l1_hash, @@ -73,7 +74,7 @@ mod tests { public_call_data_builder::PublicCallDataBuilder, }, utils::{ - arrays::array_eq, + arrays::{array_eq, struct_array_eq}, }, }; use dep::types::constants::{ @@ -169,13 +170,31 @@ mod tests { builder.failed(); } - // TODO: Break up this test into smaller tests. #[test] - fn circuit_outputs_should_be_correctly_populated_with_previous_public_kernel() { + fn circuit_outputs_should_be_correctly_populated_with_previous_commitments() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); - let contract_address = builder.public_call.contract_address; - let portal_contract_address = builder.public_call.portal_contract_address; + // Setup 2 new commitments on the previous kernel. + builder.previous_kernel.append_new_commitments(2); + let previous = builder.previous_kernel.end.new_commitments.storage; + // Setup 2 new commitments on the current public inputs. + let current = [previous[1].value + 1, previous[1].value + 2]; + builder.public_call.public_inputs.new_commitments.push_array(current); + let siloed = current.map(|c| silo_commitment(contract_address, c)); + let new_commitments = [previous[0], previous[1], SideEffect{ + value: siloed[0], + counter: 3, + }, SideEffect{ + value: siloed[1], + counter: 4},]; + + let public_inputs = builder.execute(); + assert(struct_array_eq(public_inputs.end.new_commitments, new_commitments,|a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_zero())); + } + + #[test] + fn circuit_outputs_should_be_correctly_populated_with_previous_update_requests() { + let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); // Setup 2 data writes on the previous kernel. builder.previous_kernel.append_public_data_update_requests(2); let previous = builder.previous_kernel.end.public_data_update_requests.storage; @@ -184,6 +203,16 @@ mod tests { let current = builder.get_current_public_data_update_requests(); let public_data_update_requests = [previous[0], previous[1], current[0], current[1]]; + let public_inputs = builder.execute(); + assert_eq_public_data_update_requests(public_inputs.end.public_data_update_requests, public_data_update_requests); + } + + + #[test] + fn circuit_outputs_should_be_correctly_populated_with_previous_read_requests() { + let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); + + let public_inputs = builder.execute(); // Setup 2 data reads on the previous kernel. builder.previous_kernel.append_public_data_read_requests(2); let previous = builder.previous_kernel.end.public_data_reads.storage; @@ -192,27 +221,41 @@ mod tests { let current = builder.get_current_public_data_reads(); let public_data_read_requests = [previous[0], previous[1], current[0], current[1]]; - // Setup 2 new commitments on the previous kernel. - builder.previous_kernel.append_new_commitments(2); - let previous = builder.previous_kernel.end.new_commitments.storage; - // Setup 2 new commitments on the current public inputs. - let current = [previous[1] + 1, previous[1] + 2]; - builder.public_call.public_inputs.new_commitments.push_array(current); - let siloed = current.map(|c| silo_commitment(contract_address, c)); - let new_commitments = [previous[0], previous[1], siloed[0], siloed[1]]; + assert_eq_public_data_reads(public_inputs.end.public_data_reads, public_data_read_requests); + } + + #[test] + fn circuit_outputs_should_be_correctly_populated_with_previous_nullifiers() { + let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); + let contract_address = builder.public_call.contract_address; // Setup 2 new nullifiers on the previous kernel. builder.previous_kernel.append_new_nullifiers(2); let previous = builder.previous_kernel.end.new_nullifiers.storage; // Setup 2 new commitments on the current public inputs. - let current = [previous[2] + 1, previous[2] + 2]; + let current = [previous[2].value + 1, previous[2].value + 2]; builder.public_call.public_inputs.new_nullifiers.push_array(current); let siloed = current.map(|c| silo_nullifier(contract_address, c)); // There are 3 nullifiers in the previous kernel. The first one is the tx nullifier. - let new_nullifiers = [previous[0], previous[1], previous[2], siloed[0], siloed[1]]; + let new_nullifiers = [previous[0], previous[1], previous[2], SideEffect{ + value: siloed[0], + counter: 3}, SideEffect{ + value: siloed[1], + counter: 4},]; + let public_inputs = builder.execute(); + assert(struct_array_eq(public_inputs.end.new_nullifiers, new_nullifiers,|a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); + } + + #[test] + fn circuit_outputs_should_be_correctly_populated_with_previous_l2_to_l1_msg() { + let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); + + let contract_address = builder.public_call.contract_address; + let portal_contract_address = builder.public_call.portal_contract_address; // Setup 1 new l2 to l1 message on the previous kernel. let previous = [12345]; + builder.previous_kernel.end.new_l2_to_l1_msgs.push_array(previous); // Setup 1 new l2 to l1 message on the current public inputs. let current = [67890]; @@ -223,6 +266,13 @@ mod tests { let siloed = current.map(|c| compute_l2_to_l1_hash(contract_address, version, portal_contract_address, chain_id, c)); let new_l2_to_l1_msgs = [previous[0], siloed[0]]; + let public_inputs = builder.execute(); + assert(array_eq(public_inputs.end.new_l2_to_l1_msgs, new_l2_to_l1_msgs)); + } + // TODO: Break up this test into smaller tests. + #[test] + fn circuit_outputs_should_be_correctly_populated_with_previous_public_kernel_logs() { + let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); // Logs for the current call stack. let unencrypted_logs_hash = [26, 47]; let unencrypted_log_preimages_length = 50; @@ -237,11 +287,6 @@ mod tests { builder.previous_kernel.set_unencrypted_logs(prev_unencrypted_logs_hash, prev_unencrypted_log_preimages_length); let public_inputs = builder.execute(); - assert_eq_public_data_update_requests(public_inputs.end.public_data_update_requests, public_data_update_requests); - assert_eq_public_data_reads(public_inputs.end.public_data_reads, public_data_read_requests); - assert(array_eq(public_inputs.end.new_commitments, new_commitments)); - assert(array_eq(public_inputs.end.new_nullifiers, new_nullifiers)); - assert(array_eq(public_inputs.end.new_l2_to_l1_msgs, new_l2_to_l1_msgs)); assert_eq(public_inputs.end.encrypted_log_preimages_length, prev_encrypted_log_preimages_length); assert_eq(public_inputs.end.unencrypted_log_preimages_length, unencrypted_log_preimages_length + prev_unencrypted_log_preimages_length); @@ -274,7 +319,10 @@ mod tests { fn public_kernel_fails_creating_new_commitments_on_static_call() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); builder.public_call.public_inputs.call_context.is_static_call = true; - builder.public_call.public_inputs.new_commitments.push(1); + builder.public_call.public_inputs.new_commitments.push(SideEffect { + value: 1, + counter: 0, + }); builder.failed(); } @@ -283,7 +331,11 @@ mod tests { fn public_kernel_fails_creating_new_nullifiers_on_static_call() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); builder.public_call.public_inputs.call_context.is_static_call = true; - builder.public_call.public_inputs.new_nullifiers.push(1); + builder.public_call.public_inputs.new_nullifiers.push(SideEffectLinkedToNoteHash{ + value: 1, + note_hash: 0, + counter: 0, + }); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index 86f319e45c9..03f3fea2f0e 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -53,6 +53,8 @@ struct PublicCircuitPublicInputs{ impl PublicCircuitPublicInputs{ // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3059): Reuse aztec-nr fn hash(self) -> Field { + // TODO: should be able to reduce constraint count by not hashing individual values, and instead + // pushing a longer array of fields to be hashed once at the end let mut inputs: BoundedVec = BoundedVec::new(0); inputs.push(self.call_context.hash()); inputs.push(self.args_hash); From 064a84d64b364d3ca4d570564809e9bd111736dc Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Fri, 8 Dec 2023 14:09:41 -0800 Subject: [PATCH 28/71] test fix --- .../src/public_kernel_public_previous.nr | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr index 3ef05e2fefa..7fba0862213 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr @@ -173,13 +173,19 @@ mod tests { #[test] fn circuit_outputs_should_be_correctly_populated_with_previous_commitments() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); + let contract_address = builder.public_call.contract_address; // Setup 2 new commitments on the previous kernel. builder.previous_kernel.append_new_commitments(2); let previous = builder.previous_kernel.end.new_commitments.storage; // Setup 2 new commitments on the current public inputs. - let current = [previous[1].value + 1, previous[1].value + 2]; + let current = [SideEffect{ + value: previous[1].value + 1, + counter: 2}, + SideEffect{ + value: previous[1].value + 2, + counter: 3}]; builder.public_call.public_inputs.new_commitments.push_array(current); - let siloed = current.map(|c| silo_commitment(contract_address, c)); + let siloed = current.map(|c: SideEffect| silo_commitment(contract_address, c.value)); let new_commitments = [previous[0], previous[1], SideEffect{ value: siloed[0], counter: 3, @@ -233,15 +239,19 @@ mod tests { builder.previous_kernel.append_new_nullifiers(2); let previous = builder.previous_kernel.end.new_nullifiers.storage; // Setup 2 new commitments on the current public inputs. - let current = [previous[2].value + 1, previous[2].value + 2]; - builder.public_call.public_inputs.new_nullifiers.push_array(current); - let siloed = current.map(|c| silo_nullifier(contract_address, c)); - // There are 3 nullifiers in the previous kernel. The first one is the tx nullifier. - let new_nullifiers = [previous[0], previous[1], previous[2], SideEffect{ + let currentVal = [previous[2].value + 1, previous[2].value + 2]; + let siloed = currentVal.map(|c| silo_nullifier(contract_address, c)); + + let current = [SideEffectLinkedToNoteHash{ value: siloed[0], - counter: 3}, SideEffect{ + note_hash: 0, + counter: 3}, SideEffectLinkedToNoteHash{ value: siloed[1], - counter: 4},]; + note_hash: 0, + counter: 4},] + builder.public_call.public_inputs.new_nullifiers.push_array(current); + // There are 3 nullifiers in the previous kernel. The first one is the tx nullifier. + let new_nullifiers = [previous[0], previous[1], previous[2], current[0], current[1]]; let public_inputs = builder.execute(); assert(struct_array_eq(public_inputs.end.new_nullifiers, new_nullifiers,|a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); From 4e64cb463551746753a70205cc91d89e2534ec7f Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Fri, 8 Dec 2023 22:11:33 +0000 Subject: [PATCH 29/71] isolate failing build --- yarn-project/circuits.js/src/constants.gen.ts | 6 +++--- yarn-project/noir-protocol-circuits/src/Nargo.toml | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index bb920f62d8a..0277288cd4a 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -59,15 +59,15 @@ export const CALL_CONTEXT_LENGTH = 7; export const BLOCK_HEADER_LENGTH = 7; export const FUNCTION_DATA_LENGTH = 4; export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 123; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 155; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 142; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; -export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 129; +export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 112; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 144; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/noir-protocol-circuits/src/Nargo.toml b/yarn-project/noir-protocol-circuits/src/Nargo.toml index 40096bdb01a..8bd7b69d009 100644 --- a/yarn-project/noir-protocol-circuits/src/Nargo.toml +++ b/yarn-project/noir-protocol-circuits/src/Nargo.toml @@ -4,13 +4,15 @@ members = [ "crates/private-kernel-lib", "crates/private-kernel-init", "crates/private-kernel-init-simulated", - "crates/private-kernel-inner", - "crates/private-kernel-inner-simulated", "crates/private-kernel-ordering", "crates/private-kernel-ordering-simulated", "crates/public-kernel-lib", "crates/public-kernel-private-previous", "crates/public-kernel-private-previous-simulated", +] +rest = [ + "crates/private-kernel-inner", + "crates/private-kernel-inner-simulated", "crates/public-kernel-public-previous", "crates/public-kernel-public-previous-simulated", "crates/rollup-lib", From 0c2817c3801da127ed97cc53aa7c8c767112e3b2 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Wed, 13 Dec 2023 06:12:28 +0000 Subject: [PATCH 30/71] squashing --- .circleci/config.yml | 8 +- aztec-up/bin/.aztec-run | 61 +- aztec-up/bin/aztec-install | 25 +- aztec-up/bin/aztec-sandbox | 20 +- aztec-up/bin/aztec-up | 2 +- aztec-up/bin/docker-compose.yml | 31 +- barretenberg/.gitrepo | 4 +- .../acir_tests/Dockerfile.noir_acir_tests | 2 +- barretenberg/acir_tests/bash_helpers/catch.sh | 2 +- barretenberg/acir_tests/bench_acir_tests.sh | 2 +- barretenberg/acir_tests/clone_test_vectors.sh | 2 +- .../acir_tests/gen_inner_proof_inputs.sh | 2 +- barretenberg/acir_tests/run_acir_tests.sh | 6 +- .../acir_tests/run_acir_tests_browser.sh | 2 +- barretenberg/bootstrap.sh | 2 +- barretenberg/cpp/bootstrap.sh | 2 +- barretenberg/cpp/format.sh | 2 +- barretenberg/cpp/scripts/bb-tests.sh | 2 +- barretenberg/cpp/scripts/benchmarks.sh | 2 +- .../scripts/collect_coverage_information.sh | 2 +- .../cpp/scripts/collect_heap_information.sh | 2 +- .../scripts/collect_profile_information.sh | 2 +- barretenberg/cpp/scripts/install-wasi-sdk.sh | 2 +- barretenberg/cpp/scripts/run_tests | 2 +- .../benchmark/compare_branch_vs_baseline.sh | 6 +- .../honk_bench/compare_honk_to_plonk_ultra.sh | 12 +- .../plonk/composer/ultra_composer.cpp | 8 +- .../arithmetization/arithmetization.hpp | 33 + .../goblin_ultra_circuit_builder.cpp | 220 +- .../goblin_ultra_circuit_builder.hpp | 21 +- .../goblin_ultra_circuit_builder.test.cpp | 63 +- .../standard_circuit_builder.cpp | 164 +- .../standard_circuit_builder.hpp | 34 +- .../circuit_builder/ultra_circuit_builder.cpp | 1230 +- .../circuit_builder/ultra_circuit_builder.hpp | 151 +- .../ultra_circuit_builder.test.cpp | 34 + .../composer/composer_lib.test.cpp | 10 +- .../stdlib/primitives/field/field.test.cpp | 4 +- barretenberg/scripts/bindgen.sh | 2 +- barretenberg/sol/scripts/init.sh | 2 +- barretenberg/sol/scripts/run_fuzzer.sh | 2 +- barretenberg/ts/bootstrap.sh | 2 +- barretenberg/ts/scripts/cjs_postprocess.sh | 2 + barretenberg/ts/scripts/run_tests | 2 +- barretenberg/ts/src/barretenberg/index.ts | 14 +- bootstrap.sh | 2 +- bootstrap/bootstrap_test.sh | 2 +- bootstrap_docker.sh | 2 +- build-system/.gitrepo | 4 +- .../remote/bootstrap_build_instance.sh | 2 +- build-system/scripts/add_timestamps | 2 +- build-system/scripts/build | 2 +- build-system/scripts/build_local | 2 +- build-system/scripts/calculate_content_hash | 2 +- build-system/scripts/calculate_image_tag | 2 +- build-system/scripts/calculate_image_uri | 2 +- build-system/scripts/calculate_rebuild_files | 2 +- build-system/scripts/check_rebuild | 2 +- build-system/scripts/clean_image_tags | 6 +- build-system/scripts/cond_run_compose | 2 +- build-system/scripts/cond_run_container | 2 +- build-system/scripts/cond_run_script | 2 +- build-system/scripts/cond_spot_run_build | 2 +- build-system/scripts/cond_spot_run_compose | 2 +- build-system/scripts/cond_spot_run_container | 2 +- build-system/scripts/cond_spot_run_script | 9 +- build-system/scripts/cond_spot_run_test | 2 +- build-system/scripts/create_ecr_manifest | 2 +- build-system/scripts/deploy | 2 +- build-system/scripts/deploy_dockerhub | 2 +- build-system/scripts/deploy_ecr | 2 +- build-system/scripts/deploy_global | 2 +- build-system/scripts/deploy_npm | 2 +- build-system/scripts/deploy_s3 | 2 +- build-system/scripts/deploy_service | 2 +- build-system/scripts/deploy_terraform | 2 +- build-system/scripts/dockerhub_login | 2 +- build-system/scripts/ecr_login | 2 +- build-system/scripts/ensure_repo | 2 +- build-system/scripts/ensure_terraform | 2 +- build-system/scripts/extract_repo | 2 +- build-system/scripts/extract_tag_version | 4 +- build-system/scripts/image_exists | 2 +- build-system/scripts/init_submodules | 2 +- build-system/scripts/query_manifest | 2 +- build-system/scripts/remote_run_script | 2 +- build-system/scripts/remote_runner | 2 +- build-system/scripts/request_spot | 2 +- build-system/scripts/setup_env | 2 +- build-system/scripts/should_deploy | 2 +- build-system/scripts/should_release | 2 +- build-system/scripts/spot_run_script | 2 +- build-system/scripts/tag_remote_image | 4 +- build-system/scripts/untag_remote_image | 2 +- build-system/scripts/upload_logs_to_s3 | 2 +- build-system/start_interactive | 2 +- build_manifest.yml | 2 +- circuits/cpp/bootstrap.sh | 2 +- circuits/cpp/format.sh | 2 +- .../cpp/scripts/build_run_tests_docker_local | 2 +- .../scripts/collect_coverage_information.sh | 4 +- circuits/cpp/scripts/run_tests | 2 +- circuits/cpp/scripts/run_tests_local | 2 +- circuits/cpp/scripts/tidy.sh | 2 +- docs/deploy_netlify.sh | 2 +- docs/scripts/build.sh | 4 +- iac/mainnet-fork/scripts/run_nginx_anvil.sh | 2 +- iac/mainnet-fork/scripts/wait_for_fork | 2 +- l1-contracts/bootstrap.sh | 2 +- l1-contracts/scripts/ci_deploy_contracts.sh | 2 +- l1-contracts/scripts/deploy_contracts.sh | 2 +- .../src/core/libraries/ConstantsGen.sol | 2 +- .../actions/docs/build-status/script.sh | 2 +- noir/Cargo.lock | 35 +- noir/Dockerfile | 16 +- noir/bootstrap.sh | 2 +- .../scripts/codegen-verifiers.sh | 2 +- noir/scripts/bootstrap_native.sh | 8 +- noir/scripts/bootstrap_packages.sh | 2 +- noir/scripts/install_wasm-bindgen.sh | 2 +- noir/test_programs/gates_report.sh | 2 +- noir/test_programs/rebuild.sh | 2 +- noir/tooling/nargo_cli/src/cli/lsp_cmd.rs | 5 +- scripts/ci/assemble_e2e_benchmark.sh | 8 +- scripts/ci/store_test_benchmark_logs | 6 +- scripts/git-subrepo/note/init-test | 2 +- .../note/recreate-rebase-conflict.sh | 2 +- .../subtree-rebase-fail-example/test.bash | 4 +- scripts/git-subrepo/note/test-subrepo-push.sh | 2 +- scripts/git-subrepo/note/test.sh | 2 +- scripts/git_subrepo.sh | 8 +- scripts/migrate_barretenberg_branch.sh | 2 +- scripts/tmux-splits | 2 +- yarn-project/Dockerfile | 2 - yarn-project/Dockerfile.prod | 35 +- .../acir-simulator/src/acvm/oracle/oracle.ts | 11 + .../src/acvm/oracle/typed_oracle.ts | 5 + .../acir-simulator/src/client/db_oracle.ts | 6 + .../src/client/view_data_oracle.ts | 33 +- .../acir-simulator/src/public/index.test.ts | 7 + .../src/public/public_execution_context.ts | 1 + .../terraform/servicediscovery-drain.sh | 2 +- yarn-project/aztec-nr/.gitrepo | 4 +- yarn-project/aztec-nr/aztec/src/context.nr | 2 +- .../aztec/src/oracle/get_block_header.nr | 42 +- .../src/oracle/get_membership_witness.nr | 4 +- .../get_nullifier_membership_witness.nr | 8 +- .../aztec/src/oracle/get_sibling_path.nr | 4 +- yarn-project/aztec-sandbox/Dockerfile | 7 +- yarn-project/aztec-sandbox/src/bin/index.ts | 2 +- yarn-project/aztec.js/src/api/init.ts | 11 +- .../src/artifacts/ecdsa_account_contract.json | 12 +- .../artifacts/schnorr_account_contract.json | 12 +- .../schnorr_single_key_account_contract.json | 10 +- yarn-project/aztec.js/src/index.ts | 10 +- yarn-project/bootstrap.sh | 2 +- yarn-project/boxes/bootstrap.sh | 8 +- yarn-project/boxes/run_tests | 2 +- yarn-project/canary/scripts/cond_run_script | 2 +- .../canary/scripts/extract_packages.sh | 2 +- yarn-project/canary/scripts/run_tests | 2 +- .../canary/scripts/update_packages.sh | 2 +- .../src/abis/__snapshots__/abis.test.ts.snap | 124 +- yarn-project/circuits.js/src/abis/abis.ts | 37 +- .../barretenberg/crypto/aes128/index.test.ts | 5 +- .../crypto/grumpkin/index.test.ts | 4 +- yarn-project/circuits.js/src/constants.gen.ts | 2 +- .../circuits.js/src/structs/call_request.ts | 12 +- yarn-project/cli/Dockerfile | 13 +- yarn-project/cli/src/cmds/add_note.ts | 2 +- yarn-project/cli/src/index.ts | 10 +- yarn-project/cli/src/parse_args.ts | 248 + yarn-project/cli/src/test/utils.test.ts | 3 +- yarn-project/cli/src/update/npm.ts | 20 + yarn-project/cli/src/update/update.ts | 111 +- yarn-project/cli/src/utils.ts | 234 +- yarn-project/deploy_npm.sh | 2 +- .../end-to-end/scripts/setup_canary.sh | 2 +- .../src/e2e_inclusion_proofs_contract.test.ts | 35 +- yarn-project/end-to-end/src/shared/browser.ts | 5 +- yarn-project/foundation/src/abi/abi_coder.ts | 2 +- yarn-project/foundation/src/abi/decoder.ts | 4 +- yarn-project/foundation/src/abi/encoder.ts | 4 +- .../foundation/src/abi/function_selector.ts | 8 +- yarn-project/foundation/src/abi/utils.ts | 2 +- .../src/crypto/pedersen/pedersen.wasm.ts | 4 +- .../foundation/src/eth-address/index.ts | 3 +- yarn-project/foundation/src/fields/fields.ts | 2 +- .../scripts/generate-artifacts.sh | 2 +- .../add_noir_compiler_commander_actions.ts | 2 +- .../src/contract-interface-gen/abi.ts | 4 + yarn-project/noir-contracts/scripts/catch.sh | 2 +- .../noir-contracts/scripts/compile.sh | 2 +- .../noir-contracts/scripts/compile_all.sh | 2 +- .../scripts/get_all_contracts.sh | 2 +- .../scripts/get_all_libraries.sh | 2 +- .../noir-contracts/scripts/install_noir.sh | 2 +- .../noir-contracts/scripts/install_noirup.sh | 2 +- .../noir-contracts/scripts/nargo_check.sh | 2 +- .../noir-contracts/scripts/nargo_test.sh | 2 +- .../noir-contracts/scripts/nargo_test_ci.sh | 2 +- yarn-project/noir-contracts/scripts/types.sh | 2 +- .../noir-contracts/scripts/types_all.sh | 2 +- .../inclusion_proofs_contract/src/main.nr | 28 +- .../noir-contracts/src/scripts/compile.sh | 2 +- .../noir-protocol-circuits/package.json | 8 +- .../noir-protocol-circuits/src/Nargo.toml | 6 +- .../src/__snapshots__/index.test.ts.snap | 90702 ++++++++++------ .../src/private_kernel_ordering.nr | 30 +- .../src/public_kernel_public_previous.nr | 8 +- .../rollup-lib/src/base/base_rollup_inputs.nr | 16 +- .../src/crates/types/src/constants.nr | 2 +- .../types/src/tests/fixtures/contract_tree.nr | 6 +- .../src/type_conversion.ts | 3 + .../src/types/private_kernel_init_types.ts | 26 +- .../src/types/private_kernel_inner_types.ts | 26 +- .../types/private_kernel_ordering_types.ts | 23 +- .../public_kernel_private_previous_types.ts | 24 +- .../public_kernel_public_previous_types.ts | 24 +- .../src/types/rollup_base_types.ts | 19 +- .../terraform/servicediscovery-drain.sh | 2 +- .../pxe/src/kernel_prover/proof_creator.ts | 4 +- .../pxe/src/simulator_oracle/index.ts | 8 + yarn-project/scripts/run_script.sh | 2 +- yarn-project/scripts/version_packages.sh | 2 +- .../block_builder/solo_block_builder.test.ts | 35 +- .../src/block_builder/solo_block_builder.ts | 11 +- .../src/sequencer/public_processor.test.ts | 11 +- .../src/sequencer/public_processor.ts | 6 +- .../src/sequencer/sequencer.ts | 10 +- .../types/src/interfaces/aztec-node.ts | 6 - .../src/interfaces/state_info_provider.ts | 6 + yarn-project/types/src/tx/tx.ts | 2 +- yarn-project/types/src/tx/tx_hash.ts | 5 +- .../merkle_tree_snapshot_operations_facade.ts | 2 +- yarn-project/yarn-project-base/Dockerfile | 4 +- 236 files changed, 56905 insertions(+), 37820 deletions(-) create mode 100644 yarn-project/cli/src/parse_args.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 794d5a090b7..fb0ea6e4b9a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -358,15 +358,15 @@ jobs: command: build yarn-project-prod | add_timestamps yarn-project-formatting: - machine: - image: ubuntu-2204:2023.07.2 - resource_class: large + docker: + - image: aztecprotocol/alpine-build-image + resource_class: small steps: - *checkout - *setup_env - run: name: Check Formatting - command: cond_run_container yarn-project formatting | add_timestamps + command: cond_spot_run_container yarn-project 8 formatting | add_timestamps yarn-project-tests: docker: diff --git a/aztec-up/bin/.aztec-run b/aztec-up/bin/.aztec-run index c338bede2e1..2a6d50397b4 100755 --- a/aztec-up/bin/.aztec-run +++ b/aztec-up/bin/.aztec-run @@ -13,68 +13,54 @@ VERSION=${VERSION:-"latest"} DOCKER_HOST_BINDS="" # Volumes to pass to the container. -DOCKER_VOLUME="" +DOCKER_VOLUME="-v $HOME:$HOME" + +# Colors. +y="\033[33m" +r="\033[0m" + +function warn { + echo -e "${y}$1${r}" +} if ! command -v docker &> /dev/null; then - echo "No docker found." + warn "No docker found." exit 1 fi -# Colors. -yellow="\033[33m" -reset="\033[0m" +if [[ $PWD != ${HOME}* ]]; then + warn "Due to how we containerize our applications, we require your working directory to be somewhere within $HOME." + exit 1 +fi # Set up host.docker.internal alias on Linux, just like it is on mac. UNAME=$(uname -s) -if [ "$UNAME" == "Linux" ]; then +if [[ -z "${SKIP_NET:-}" && "$UNAME" == "Linux" ]]; then if docker info 2>/dev/null | grep -q rootless; then # We're in rootless docker. Probe for the host ip and use that. ip=$(hostname -I | head | tr -d ' ') - echo -e "${yellow}WARNING: Running within rootless docker. Using $ip as host ip. Ensure listening services are listening on this interface.${reset}" + warn "WARNING: Running within rootless docker. Using $ip as host ip. Ensure listening services are listening on this interface." DOCKER_HOST_BINDS="$DOCKER_HOST_BINDS --add-host host.docker.internal:$ip" else DOCKER_HOST_BINDS="$DOCKER_HOST_BINDS --add-host host.docker.internal:host-gateway" fi fi -# Build a list of mount points -function add_mount() { - DIR="${1:-}" - - # Grab its dirname if its a file. - if [ -f "$DIR" ]; then - DIR=$(dirname "$DIR") - fi - - if [ ! -d "$DIR" ]; then - return - fi - - # Check if it's already been added. - REALDIR=$(realpath $DIR) - if [[ "$DOCKER_VOLUME" =~ "$REALDIR:" ]]; then - return - fi - - DOCKER_VOLUME="$DOCKER_VOLUME -v $REALDIR:$REALDIR" -} - -# Always mount the CWD into the container. -add_mount "$PWD" - # Substitute any references to localhost with our host gateway. +# TODO: In node, we can hook the resolve override for localhost with host.docker.internal. +# Consider if we should just do that, but that wouldn't help e.g. nargo. args=("$@") for i in "${!args[@]}"; do args[$i]=${args[$i]//localhost/host.docker.internal} done -# Check if it's either a filename or a directory that exists outside the CWD. -# If it is then mount inside the container. -# NOTE: This won't work with assignement-style flags, e.g. --outdir=/foo +# Check if it's either a filename or a directory that exists outside the HOME. +# If so, warn and exit. for i in "${!args[@]}"; do arg=${args[$i]} - if [[ -f "$arg" || -d "$arg" && $(realpath $arg) != ${PWD}* ]]; then - add_mount "$arg" + if [[ -f "$arg" || -d "$arg" ]] && [[ $(realpath $arg) != ${HOME}* ]]; then + warn "Due to how we containerize our applications, paths outside of $HOME cannot be referenced." + exit 1 fi done @@ -91,7 +77,6 @@ DOCKER_VOLUME="$DOCKER_VOLUME -v cache:/cache" docker run \ -ti \ --rm \ - --user $(id -u):$(id -g) \ --workdir "$PWD" \ $DOCKER_HOST_BINDS \ $DOCKER_ENV \ diff --git a/aztec-up/bin/aztec-install b/aztec-up/bin/aztec-install index 653e80e9886..e8d2b211e2b 100755 --- a/aztec-up/bin/aztec-install +++ b/aztec-up/bin/aztec-install @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail # Colors @@ -30,6 +30,15 @@ function title() { echo -e "We presently leverage docker to simplify releases of our complex project." echo -e "Please ensure it's installed for your platform: https://docs.docker.com/engine/install" echo + if [ "$(uname -s)" == "Darwin" ]; then + echo -e "${y}WARNING: For best performance we recommend adjusting your default docker settings:" + echo -e " - Under general, enable VirtioFS." + echo -e " - Under resources, set CPUs to ~80% your maximum." + echo -e " - Under resources, set Memory to ~80% your maximum." + echo -e "You may receive a warning about your home directory being mounted into a container." + echo -e "This is requested so we can read and write project files, that is all." + echo -e "${r}" + fi echo -e "This will install the following scripts and update your PATH if necessary:" echo -e " ${bold}${g}aztec${r} - launches various infrastructure subsystems (sequencer, prover, pxe, etc)." echo -e " ${bold}${g}aztec-cli${r} - a command line tool for interfacing and experimenting with infrastructure." @@ -91,10 +100,14 @@ function pull_container { fi } -info "Pulling aztec version $VERSION..." -pull_container aztec-sandbox -pull_container cli -pull_container noir +export DOCKER_CLI_HINTS=false + +if [ -z "${SKIP_PULL:-}" ]; then + info "Pulling aztec version $VERSION..." + pull_container aztec-sandbox + pull_container cli + pull_container noir +fi # Download the Docker Compose file. Used by aztec-start. curl -fsSL http://$INSTALL_HOST/docker-compose.yml -o $BIN_PATH/docker-compose.yml @@ -138,7 +151,7 @@ function update_path_env_var { echo if [[ $REPLY =~ ^[Yy]$ ]]; then # Add the target directory to the user's PATH in their profile. - echo "export PATH=\$PATH:$TARGET_DIR" >> "$SHELL_PROFILE" + echo "export PATH=\"\$PATH:$TARGET_DIR\"" >> "$SHELL_PROFILE" info "Done! Starting fresh shell..." $SHELL else diff --git a/aztec-up/bin/aztec-sandbox b/aztec-up/bin/aztec-sandbox index ccbe9747045..1558bc49cb2 100755 --- a/aztec-up/bin/aztec-sandbox +++ b/aztec-up/bin/aztec-sandbox @@ -1,11 +1,21 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail -# Change working dir, so relative volume mounts are in the right place. -cd ~/.aztec - # Favour 'docker compose', falling back on docker-compose. CMD="docker compose" $CMD &>/dev/null || CMD="docker-compose" -$CMD -f ~/.aztec/bin/docker-compose.yml up \ No newline at end of file +ARGS="-f $HOME/.aztec/bin/docker-compose.yml -p sandbox" + +# Function to be executed when SIGINT is received. +cleanup() { + $CMD $ARGS down +} + +# Set trap to catch SIGINT and call the cleanup function. +trap cleanup SIGINT + +# Change working dir, so relative volume mounts are in the right place. +cd ~/.aztec + +$CMD $ARGS up --force-recreate --remove-orphans \ No newline at end of file diff --git a/aztec-up/bin/aztec-up b/aztec-up/bin/aztec-up index d3b88660090..736307e1827 100755 --- a/aztec-up/bin/aztec-up +++ b/aztec-up/bin/aztec-up @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail export SKIP_TITLE=1 diff --git a/aztec-up/bin/docker-compose.yml b/aztec-up/bin/docker-compose.yml index 735466e3904..b861d729d16 100644 --- a/aztec-up/bin/docker-compose.yml +++ b/aztec-up/bin/docker-compose.yml @@ -1,27 +1,28 @@ -version: '3' +version: "3" services: ethereum: image: ghcr.io/foundry-rs/foundry@sha256:29ba6e34379e79c342ec02d437beb7929c9e254261e8032b17e187be71a2609f - entrypoint: > - sh -c ' - if [ -n "$FORK_BLOCK_NUMBER" ] && [ -n "$FORK_URL" ]; then - exec anvil -p 8545 --host 0.0.0.0 --chain-id 31337 --silent --fork-url "$FORK_URL" --fork-block-number "$FORK_BLOCK_NUMBER" - elif [ -n "$FORK_URL" ]; then - exec anvil -p 8545 --host 0.0.0.0 --chain-id 31337 --silent --fork-url "$FORK_URL" - else - exec anvil -p 8545 --host 0.0.0.0 --chain-id 31337 --silent - fi' + command: > + ' + [ -n "$$FORK_URL" ] && ARGS="$$ARGS --fork-url $$FORK_URL"; + [ -n "$$FORK_BLOCK_NUMBER" ] && ARGS="$$ARGS --fork-block-number $$FORK_BLOCK_NUMBER"; + echo anvil -p 8545 --host 0.0.0.0 --chain-id 31337 --silent $$ARGS; + anvil -p 8545 --host 0.0.0.0 --chain-id 31337 --silent $$ARGS + ' ports: - - '${SANDBOX_ANVIL_PORT:-8545}:8545' + - "${SANDBOX_ANVIL_PORT:-8545}:8545" + environment: + FORK_URL: + FORK_BLOCK_NUMBER: aztec: - image: 'aztecprotocol/aztec-sandbox' + image: "aztecprotocol/aztec-sandbox" ports: - - '${SANDBOX_AZTEC_NODE_PORT:-8079}:8079' - - '${SANDBOX_PXE_PORT:-8080}:8080' + - "${SANDBOX_AZTEC_NODE_PORT:-8079}:8079" + - "${SANDBOX_PXE_PORT:-8080}:8080" environment: DEBUG: # Loaded from the user shell if explicitly set - HOST_WORKDIR: '${PWD}' # Loaded from the user shell to show log files absolute path in host + HOST_WORKDIR: "${PWD}" # Loaded from the user shell to show log files absolute path in host ETHEREUM_HOST: http://ethereum:8545 CHAIN_ID: 31337 ARCHIVER_POLLING_INTERVAL_MS: 50 diff --git a/barretenberg/.gitrepo b/barretenberg/.gitrepo index 4ba3cac6d74..ea339226546 100644 --- a/barretenberg/.gitrepo +++ b/barretenberg/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/barretenberg branch = master - commit = 4e4634542814f15d3703fe560874e08eda57e1fa - parent = 379b5adc259ac69b01e61b852172cdfc87cf9350 + commit = 86e6d6f1e48a0609de3f8e8f99007d45b4dbbdf4 + parent = 9c5443651faaed3dcb9fae36727337a34ce5922b method = merge cmdver = 0.4.6 diff --git a/barretenberg/acir_tests/Dockerfile.noir_acir_tests b/barretenberg/acir_tests/Dockerfile.noir_acir_tests index 87fdd8604a4..5131e94e279 100644 --- a/barretenberg/acir_tests/Dockerfile.noir_acir_tests +++ b/barretenberg/acir_tests/Dockerfile.noir_acir_tests @@ -3,7 +3,7 @@ # So, it lives here. # This chains off the nargo build, and creates a container with a compiled set of acir tests. FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/noir -RUN apk add bash jq +RUN apt update && apt install -y jq && rm -rf /var/lib/apt/lists/* && apt-get clean ENV PATH="/usr/src/noir/target/release:${PATH}" WORKDIR /usr/src/noir/test_programs COPY . . diff --git a/barretenberg/acir_tests/bash_helpers/catch.sh b/barretenberg/acir_tests/bash_helpers/catch.sh index 888af3cbb44..bc2025d4da5 100644 --- a/barretenberg/acir_tests/bash_helpers/catch.sh +++ b/barretenberg/acir_tests/bash_helpers/catch.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Handler for SIGCHLD, cleanup if child exit with error handle_sigchild() { diff --git a/barretenberg/acir_tests/bench_acir_tests.sh b/barretenberg/acir_tests/bench_acir_tests.sh index b338e82e30b..a41b261d1cc 100755 --- a/barretenberg/acir_tests/bench_acir_tests.sh +++ b/barretenberg/acir_tests/bench_acir_tests.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash TEST_NAMES=("$@") THREADS=(1 4 16 32 64) diff --git a/barretenberg/acir_tests/clone_test_vectors.sh b/barretenberg/acir_tests/clone_test_vectors.sh index c6fd6ef1bf1..b15814ab013 100755 --- a/barretenberg/acir_tests/clone_test_vectors.sh +++ b/barretenberg/acir_tests/clone_test_vectors.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu TEST_SRC=${TEST_SRC:-../../noir/test_programs/acir_artifacts} diff --git a/barretenberg/acir_tests/gen_inner_proof_inputs.sh b/barretenberg/acir_tests/gen_inner_proof_inputs.sh index 64b87fe19db..36137bde82e 100755 --- a/barretenberg/acir_tests/gen_inner_proof_inputs.sh +++ b/barretenberg/acir_tests/gen_inner_proof_inputs.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Env var overrides: # BIN: to specify a different binary to test with (e.g. bb.js or bb.js-dev). set -eu diff --git a/barretenberg/acir_tests/run_acir_tests.sh b/barretenberg/acir_tests/run_acir_tests.sh index 84953d01c55..ee28c975113 100755 --- a/barretenberg/acir_tests/run_acir_tests.sh +++ b/barretenberg/acir_tests/run_acir_tests.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Env var overrides: # BIN: to specify a different binary to test with (e.g. bb.js or bb.js-dev). # VERBOSE: to enable logging for each test. @@ -80,8 +80,8 @@ else # If parallel flag is set, run in parallel if [ -n "${PARALLEL:-}" ]; then test $TEST_NAME & - else - test $TEST_NAME + else + test $TEST_NAME fi done fi diff --git a/barretenberg/acir_tests/run_acir_tests_browser.sh b/barretenberg/acir_tests/run_acir_tests_browser.sh index 22830656250..1c1f2ce0e08 100755 --- a/barretenberg/acir_tests/run_acir_tests_browser.sh +++ b/barretenberg/acir_tests/run_acir_tests_browser.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -em cleanup() { diff --git a/barretenberg/bootstrap.sh b/barretenberg/bootstrap.sh index 504f1980982..c16fd294b6c 100755 --- a/barretenberg/bootstrap.sh +++ b/barretenberg/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd "$(dirname "$0")" diff --git a/barretenberg/cpp/bootstrap.sh b/barretenberg/cpp/bootstrap.sh index 25350c4fcce..0b9295bafbd 100755 --- a/barretenberg/cpp/bootstrap.sh +++ b/barretenberg/cpp/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Navigate to script folder diff --git a/barretenberg/cpp/format.sh b/barretenberg/cpp/format.sh index 0bf8bca805c..ae314e96a6f 100755 --- a/barretenberg/cpp/format.sh +++ b/barretenberg/cpp/format.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e if [ "$1" == "staged" ]; then diff --git a/barretenberg/cpp/scripts/bb-tests.sh b/barretenberg/cpp/scripts/bb-tests.sh index 459eb756593..a3f322b2afa 100755 --- a/barretenberg/cpp/scripts/bb-tests.sh +++ b/barretenberg/cpp/scripts/bb-tests.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script runs all test suites that have not been broken out into their own jobs for parallelisation. # Might be better to list exclusions here rather than inclusions as risky to maintain. set -eu diff --git a/barretenberg/cpp/scripts/benchmarks.sh b/barretenberg/cpp/scripts/benchmarks.sh index a7ec1dcb1d0..8a547c29aba 100755 --- a/barretenberg/cpp/scripts/benchmarks.sh +++ b/barretenberg/cpp/scripts/benchmarks.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Move above script dir. diff --git a/barretenberg/cpp/scripts/collect_coverage_information.sh b/barretenberg/cpp/scripts/collect_coverage_information.sh index b018e251483..0a3231a304c 100755 --- a/barretenberg/cpp/scripts/collect_coverage_information.sh +++ b/barretenberg/cpp/scripts/collect_coverage_information.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash if [ $# -ne 2 ]; then echo "Usage: $0 " diff --git a/barretenberg/cpp/scripts/collect_heap_information.sh b/barretenberg/cpp/scripts/collect_heap_information.sh index 1d25c5a791c..a1b6bee078e 100755 --- a/barretenberg/cpp/scripts/collect_heap_information.sh +++ b/barretenberg/cpp/scripts/collect_heap_information.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu PRESET=gperftools diff --git a/barretenberg/cpp/scripts/collect_profile_information.sh b/barretenberg/cpp/scripts/collect_profile_information.sh index df932c086bc..ebc0249392e 100755 --- a/barretenberg/cpp/scripts/collect_profile_information.sh +++ b/barretenberg/cpp/scripts/collect_profile_information.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # can also be 'xray-1thread' diff --git a/barretenberg/cpp/scripts/install-wasi-sdk.sh b/barretenberg/cpp/scripts/install-wasi-sdk.sh index 1da258d880b..9d27d012a61 100755 --- a/barretenberg/cpp/scripts/install-wasi-sdk.sh +++ b/barretenberg/cpp/scripts/install-wasi-sdk.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu if [[ -d ./src/wasi-sdk-20.0 && -d ./src/wasi-sdk-20.0+threads ]]; then diff --git a/barretenberg/cpp/scripts/run_tests b/barretenberg/cpp/scripts/run_tests index 28d9f8cc4f8..a67f03ee992 100755 --- a/barretenberg/cpp/scripts/run_tests +++ b/barretenberg/cpp/scripts/run_tests @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This is the default test runner which takes the as arguments: # 1. The number of ignition transcripts to download. # 2. The set of gtest binary names to run. diff --git a/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh b/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh index 0ac6dce1157..34ee2ce171d 100755 --- a/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh +++ b/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh @@ -1,7 +1,7 @@ -#!/bin/bash +#!/usr/bin/env bash # This script is used to compare a suite of benchmarks between baseline (default: master) and -# the branch from which the script is run. Simply check out the branch of interest, ensure +# the branch from which the script is run. Simply check out the branch of interest, ensure # it is up to date with local master, and run the script. # Specify the benchmark suite and the "baseline" branch against which to compare @@ -43,7 +43,7 @@ BASELINE_RESULTS="$BENCH_RESULTS_DIR/results_baseline.json" echo -e "\nRunning $BENCH_TARGET in master.." bin/$BENCH_TARGET --benchmark_format=json > $BASELINE_RESULTS -# Call compare.py on the results (json) to get high level statistics. +# Call compare.py on the results (json) to get high level statistics. # See docs at https://github.com/google/benchmark/blob/main/docs/tools.md for more details. $BENCH_TOOLS_DIR/compare.py benchmarks $BASELINE_RESULTS $BRANCH_RESULTS diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh index 1863327ae4e..f97dbc0eaa7 100755 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh @@ -1,7 +1,7 @@ -#!/bin/bash +#!/usr/bin/env bash # This script is used to compare the results of honk_bench between baseline (master) and -# the branch from which the script is run. Simply check out the branch of interest, ensure +# the branch from which the script is run. Simply check out the branch of interest, ensure # it is up to date with local master, and run the script. echo -e '\nComparing Ultra Plonk/Honk benchmarks.' @@ -19,21 +19,21 @@ pip3 install --user -r $BUILD_DIR/_deps/benchmark-src/requirements.txt cd $BASE_DIR mkdir $BENCH_RESULTS_DIR -# +# echo -e '\nBuilding and running Standard benchmarks..' # rm -rf $BUILD_DIR -cmake --preset bench > /dev/null && cmake --build --preset bench --target ultra_plonk_bench +cmake --preset bench > /dev/null && cmake --build --preset bench --target ultra_plonk_bench cd build-bench PLONK_BENCH_RESULTS="$BENCH_RESULTS_DIR/plonk_bench.json" ./bin/ultra_plonk_bench --benchmark_format=json > $PLONK_BENCH_RESULTS cd .. -cmake --preset bench > /dev/null && cmake --build --preset bench --target ultra_honk_bench +cmake --preset bench > /dev/null && cmake --build --preset bench --target ultra_honk_bench cd build-bench HONK_BENCH_RESULTS="$BENCH_RESULTS_DIR/honk_bench.json" ./bin/ultra_honk_bench --benchmark_format=json > $HONK_BENCH_RESULTS -# Call compare.py on the results (json) to get high level statistics. +# Call compare.py on the results (json) to get high level statistics. # See docs at https://github.com/google/benchmark/blob/main/docs/tools.md for more details. $BENCH_TOOLS_DIR/compare.py benchmarks $PLONK_BENCH_RESULTS $HONK_BENCH_RESULTS diff --git a/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp index e34787f26d3..d83c9706eff 100644 --- a/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp +++ b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp @@ -43,10 +43,10 @@ void UltraComposer::compute_witness(CircuitBuilder& circuit_constructor) // Note: the remaining NUM_RESERVED_GATES indices are padded with zeros within `compute_witness_base` (called // next). for (size_t i = filled_gates; i < total_num_gates; ++i) { - circuit_constructor.w_l.emplace_back(circuit_constructor.zero_idx); - circuit_constructor.w_r.emplace_back(circuit_constructor.zero_idx); - circuit_constructor.w_o.emplace_back(circuit_constructor.zero_idx); - circuit_constructor.w_4.emplace_back(circuit_constructor.zero_idx); + circuit_constructor.w_l().emplace_back(circuit_constructor.zero_idx); + circuit_constructor.w_r().emplace_back(circuit_constructor.zero_idx); + circuit_constructor.w_o().emplace_back(circuit_constructor.zero_idx); + circuit_constructor.w_4().emplace_back(circuit_constructor.zero_idx); } auto wire_polynomial_evaluations = construct_wire_polynomials_base(circuit_constructor, subgroup_size); diff --git a/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp b/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp index 05121c857f4..df0cd534a5f 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp @@ -47,6 +47,12 @@ template class Standard { SelectorType& q_3() { return selectors[3]; }; SelectorType& q_c() { return selectors[4]; }; + const SelectorType& q_m() const { return selectors[0]; }; + const SelectorType& q_1() const { return selectors[1]; }; + const SelectorType& q_2() const { return selectors[2]; }; + const SelectorType& q_3() const { return selectors[3]; }; + const SelectorType& q_c() const { return selectors[4]; }; + Standard() : selectors(NUM_SELECTORS) {} @@ -87,6 +93,18 @@ template class Ultra { SelectorType& q_aux() { return selectors[9]; }; SelectorType& q_lookup_type() { return selectors[10]; }; + const SelectorType& q_m() const { return selectors[0]; }; + const SelectorType& q_c() const { return selectors[1]; }; + const SelectorType& q_1() const { return selectors[2]; }; + const SelectorType& q_2() const { return selectors[3]; }; + const SelectorType& q_3() const { return selectors[4]; }; + const SelectorType& q_4() const { return selectors[5]; }; + const SelectorType& q_arith() const { return selectors[6]; }; + const SelectorType& q_sort() const { return selectors[7]; }; + const SelectorType& q_elliptic() const { return selectors[8]; }; + const SelectorType& q_aux() const { return selectors[9]; }; + const SelectorType& q_lookup_type() const { return selectors[10]; }; + const auto& get() const { return selectors; }; void reserve(size_t size_hint) @@ -141,6 +159,21 @@ template class UltraHonk { SelectorType& q_poseidon2_external() { return this->selectors[12]; }; SelectorType& q_poseidon2_internal() { return this->selectors[13]; }; + const SelectorType& q_m() const { return selectors[0]; }; + const SelectorType& q_c() const { return selectors[1]; }; + const SelectorType& q_1() const { return selectors[2]; }; + const SelectorType& q_2() const { return selectors[3]; }; + const SelectorType& q_3() const { return selectors[4]; }; + const SelectorType& q_4() const { return selectors[5]; }; + const SelectorType& q_arith() const { return selectors[6]; }; + const SelectorType& q_sort() const { return selectors[7]; }; + const SelectorType& q_elliptic() const { return selectors[8]; }; + const SelectorType& q_aux() const { return selectors[9]; }; + const SelectorType& q_lookup_type() const { return selectors[10]; }; + const SelectorType& q_busread() const { return selectors[11]; }; + const SelectorType& q_poseidon2_external() const { return this->selectors[12]; }; + const SelectorType& q_poseidon2_internal() const { return this->selectors[13]; }; + const auto& get() const { return selectors; }; void reserve(size_t size_hint) diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.cpp index 0ce5b9fdfa1..8b30c606781 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.cpp @@ -43,72 +43,72 @@ template void GoblinUltraCircuitBuilder_::add_gates_to_ensure_ } // Construct gate corresponding to a single calldata read - size_t read_idx = 1; // index into calldata array at which we want to read - this->w_l.emplace_back(public_calldata[read_idx]); // populate with value of calldata at read index - this->w_r.emplace_back(this->add_variable(FF(read_idx))); // populate with read index as witness - calldata_read_counts[read_idx]++; // increment read count at read index - q_busread().emplace_back(1); // read selector on + size_t read_idx = 1; // index into calldata array at which we want to read + this->w_l().emplace_back(public_calldata[read_idx]); // populate with value of calldata at read index + this->w_r().emplace_back(this->add_variable(FF(read_idx))); // populate with read index as witness + calldata_read_counts[read_idx]++; // increment read count at read index + q_busread().emplace_back(1); // read selector on // populate all other components with zero - this->w_o.emplace_back(this->zero_idx); - this->w_4.emplace_back(this->zero_idx); - this->q_m.emplace_back(0); - this->q_1.emplace_back(0); - this->q_2.emplace_back(0); - this->q_3.emplace_back(0); - this->q_c.emplace_back(0); - this->q_sort.emplace_back(0); - this->q_arith.emplace_back(0); - this->q_4.emplace_back(0); - this->q_lookup_type.emplace_back(0); - this->q_elliptic.emplace_back(0); - this->q_aux.emplace_back(0); - this->q_poseidon2_external.emplace_back(0); - this->q_poseidon2_internal.emplace_back(0); + this->w_o().emplace_back(this->zero_idx); + this->w_4().emplace_back(this->zero_idx); + this->q_m().emplace_back(0); + this->q_1().emplace_back(0); + this->q_2().emplace_back(0); + this->q_3().emplace_back(0); + this->q_c().emplace_back(0); + this->q_sort().emplace_back(0); + this->q_arith().emplace_back(0); + this->q_4().emplace_back(0); + this->q_lookup_type().emplace_back(0); + this->q_elliptic().emplace_back(0); + this->q_aux().emplace_back(0); + this->q_poseidon2_external().emplace_back(0); + this->q_poseidon2_internal().emplace_back(0); ++this->num_gates; // mock gates that use poseidon selectors, with all zeros as input - this->w_l.emplace_back(this->zero_idx); - this->w_r.emplace_back(this->zero_idx); - this->w_o.emplace_back(this->zero_idx); - this->w_4.emplace_back(this->zero_idx); - this->q_m.emplace_back(0); - this->q_1.emplace_back(0); - this->q_2.emplace_back(0); - this->q_3.emplace_back(0); - this->q_c.emplace_back(0); - this->q_arith.emplace_back(0); - this->q_4.emplace_back(0); - this->q_sort.emplace_back(0); - this->q_lookup_type.emplace_back(0); - this->q_elliptic.emplace_back(0); - this->q_aux.emplace_back(0); + this->w_l().emplace_back(this->zero_idx); + this->w_r().emplace_back(this->zero_idx); + this->w_o().emplace_back(this->zero_idx); + this->w_4().emplace_back(this->zero_idx); + this->q_m().emplace_back(0); + this->q_1().emplace_back(0); + this->q_2().emplace_back(0); + this->q_3().emplace_back(0); + this->q_c().emplace_back(0); + this->q_arith().emplace_back(0); + this->q_4().emplace_back(0); + this->q_sort().emplace_back(0); + this->q_lookup_type().emplace_back(0); + this->q_elliptic().emplace_back(0); + this->q_aux().emplace_back(0); this->q_busread().emplace_back(0); - this->q_poseidon2_external.emplace_back(1); - this->q_poseidon2_internal.emplace_back(1); + this->q_poseidon2_external().emplace_back(1); + this->q_poseidon2_internal().emplace_back(1); ++this->num_gates; // second gate that stores the output of all zeros of the poseidon gates - this->w_l.emplace_back(this->zero_idx); - this->w_r.emplace_back(this->zero_idx); - this->w_o.emplace_back(this->zero_idx); - this->w_4.emplace_back(this->zero_idx); - this->q_m.emplace_back(0); - this->q_1.emplace_back(0); - this->q_2.emplace_back(0); - this->q_3.emplace_back(0); - this->q_c.emplace_back(0); - this->q_arith.emplace_back(0); - this->q_4.emplace_back(0); - this->q_sort.emplace_back(0); - this->q_lookup_type.emplace_back(0); - this->q_elliptic.emplace_back(0); - this->q_aux.emplace_back(0); + this->w_l().emplace_back(this->zero_idx); + this->w_r().emplace_back(this->zero_idx); + this->w_o().emplace_back(this->zero_idx); + this->w_4().emplace_back(this->zero_idx); + this->q_m().emplace_back(0); + this->q_1().emplace_back(0); + this->q_2().emplace_back(0); + this->q_3().emplace_back(0); + this->q_c().emplace_back(0); + this->q_arith().emplace_back(0); + this->q_4().emplace_back(0); + this->q_sort().emplace_back(0); + this->q_lookup_type().emplace_back(0); + this->q_elliptic().emplace_back(0); + this->q_aux().emplace_back(0); this->q_busread().emplace_back(0); - this->q_poseidon2_external.emplace_back(0); - this->q_poseidon2_internal.emplace_back(0); + this->q_poseidon2_external().emplace_back(0); + this->q_poseidon2_internal().emplace_back(0); ++this->num_gates; } @@ -233,15 +233,15 @@ ecc_op_tuple GoblinUltraCircuitBuilder_::decompose_ecc_operands(uint32_t op_ */ template void GoblinUltraCircuitBuilder_::populate_ecc_op_wires(const ecc_op_tuple& in) { - ecc_op_wire_1.emplace_back(in.op); - ecc_op_wire_2.emplace_back(in.x_lo); - ecc_op_wire_3.emplace_back(in.x_hi); - ecc_op_wire_4.emplace_back(in.y_lo); + ecc_op_wire_1().emplace_back(in.op); + ecc_op_wire_2().emplace_back(in.x_lo); + ecc_op_wire_3().emplace_back(in.x_hi); + ecc_op_wire_4().emplace_back(in.y_lo); - ecc_op_wire_1.emplace_back(this->zero_idx); - ecc_op_wire_2.emplace_back(in.y_hi); - ecc_op_wire_3.emplace_back(in.z_1); - ecc_op_wire_4.emplace_back(in.z_2); + ecc_op_wire_1().emplace_back(this->zero_idx); + ecc_op_wire_2().emplace_back(in.y_hi); + ecc_op_wire_3().emplace_back(in.z_1); + ecc_op_wire_4().emplace_back(in.z_2); num_ecc_op_gates += 2; }; @@ -249,48 +249,48 @@ template void GoblinUltraCircuitBuilder_::populate_ecc_op_wire template void GoblinUltraCircuitBuilder_::create_poseidon2_external_gate(const poseidon2_external_gate_& in) { - this->w_l.emplace_back(in.a); - this->w_r.emplace_back(in.b); - this->w_o.emplace_back(in.c); - this->w_4.emplace_back(in.d); - this->q_m.emplace_back(0); - this->q_1.emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); - this->q_2.emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][1]); - this->q_3.emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][2]); - this->q_c.emplace_back(0); - this->q_arith.emplace_back(0); - this->q_4.emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][3]); - this->q_sort.emplace_back(0); - this->q_lookup_type.emplace_back(0); - this->q_elliptic.emplace_back(0); - this->q_aux.emplace_back(0); + this->w_l().emplace_back(in.a); + this->w_r().emplace_back(in.b); + this->w_o().emplace_back(in.c); + this->w_4().emplace_back(in.d); + this->q_m().emplace_back(0); + this->q_1().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); + this->q_2().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][1]); + this->q_3().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][2]); + this->q_c().emplace_back(0); + this->q_arith().emplace_back(0); + this->q_4().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][3]); + this->q_sort().emplace_back(0); + this->q_lookup_type().emplace_back(0); + this->q_elliptic().emplace_back(0); + this->q_aux().emplace_back(0); this->q_busread().emplace_back(0); - this->q_poseidon2_external.emplace_back(1); - this->q_poseidon2_internal.emplace_back(0); + this->q_poseidon2_external().emplace_back(1); + this->q_poseidon2_internal().emplace_back(0); ++this->num_gates; } template void GoblinUltraCircuitBuilder_::create_poseidon2_internal_gate(const poseidon2_internal_gate_& in) { - this->w_l.emplace_back(in.a); - this->w_r.emplace_back(in.b); - this->w_o.emplace_back(in.c); - this->w_4.emplace_back(in.d); - this->q_m.emplace_back(0); - this->q_1.emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); - this->q_2.emplace_back(0); - this->q_3.emplace_back(0); - this->q_c.emplace_back(0); - this->q_arith.emplace_back(0); - this->q_4.emplace_back(0); - this->q_sort.emplace_back(0); - this->q_lookup_type.emplace_back(0); - this->q_elliptic.emplace_back(0); - this->q_aux.emplace_back(0); + this->w_l().emplace_back(in.a); + this->w_r().emplace_back(in.b); + this->w_o().emplace_back(in.c); + this->w_4().emplace_back(in.d); + this->q_m().emplace_back(0); + this->q_1().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); + this->q_2().emplace_back(0); + this->q_3().emplace_back(0); + this->q_c().emplace_back(0); + this->q_arith().emplace_back(0); + this->q_4().emplace_back(0); + this->q_sort().emplace_back(0); + this->q_lookup_type().emplace_back(0); + this->q_elliptic().emplace_back(0); + this->q_aux().emplace_back(0); this->q_busread().emplace_back(0); - this->q_poseidon2_external.emplace_back(0); - this->q_poseidon2_internal.emplace_back(1); + this->q_poseidon2_external().emplace_back(0); + this->q_poseidon2_internal().emplace_back(1); ++this->num_gates; } @@ -420,25 +420,25 @@ template bool GoblinUltraCircuitBuilder_::check_circuit() FF w_3_value; FF w_4_value; // Get the values of selectors and wires and update tag products along the way - q_poseidon2_external_value = this->q_poseidon2_external[i]; - q_poseidon2_internal_value = this->q_poseidon2_internal[i]; - q_1_value = this->q_1[i]; - q_2_value = this->q_2[i]; - q_3_value = this->q_3[i]; - q_4_value = this->q_4[i]; - w_1_value = this->get_variable(this->w_l[i]); - w_2_value = this->get_variable(this->w_r[i]); - w_3_value = this->get_variable(this->w_o[i]); - w_4_value = this->get_variable(this->w_4[i]); + q_poseidon2_external_value = this->q_poseidon2_external()[i]; + q_poseidon2_internal_value = this->q_poseidon2_internal()[i]; + q_1_value = this->q_1()[i]; + q_2_value = this->q_2()[i]; + q_3_value = this->q_3()[i]; + q_4_value = this->q_4()[i]; + w_1_value = this->get_variable(this->w_l()[i]); + w_2_value = this->get_variable(this->w_r()[i]); + w_3_value = this->get_variable(this->w_o()[i]); + w_4_value = this->get_variable(this->w_4()[i]); FF w_1_shifted_value; FF w_2_shifted_value; FF w_3_shifted_value; FF w_4_shifted_value; if (i < (this->num_gates - 1)) { - w_1_shifted_value = this->get_variable(this->w_l[i + 1]); - w_2_shifted_value = this->get_variable(this->w_r[i + 1]); - w_3_shifted_value = this->get_variable(this->w_o[i + 1]); - w_4_shifted_value = this->get_variable(this->w_4[i + 1]); + w_1_shifted_value = this->get_variable(this->w_l()[i + 1]); + w_2_shifted_value = this->get_variable(this->w_r()[i + 1]); + w_3_shifted_value = this->get_variable(this->w_o()[i + 1]); + w_4_shifted_value = this->get_variable(this->w_4()[i + 1]); } else { w_1_shifted_value = FF::zero(); w_2_shifted_value = FF::zero(); diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.hpp index e037fe2571d..8e5c6b14018 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.hpp @@ -37,14 +37,23 @@ template class GoblinUltraCircuitBuilder_ : public UltraCircuitBui // Wires storing ecc op queue data; values are indices into the variables array std::array::NUM_WIRES> ecc_op_wires; - WireVector& ecc_op_wire_1 = std::get<0>(ecc_op_wires); - WireVector& ecc_op_wire_2 = std::get<1>(ecc_op_wires); - WireVector& ecc_op_wire_3 = std::get<2>(ecc_op_wires); - WireVector& ecc_op_wire_4 = std::get<3>(ecc_op_wires); + WireVector& ecc_op_wire_1() { return std::get<0>(ecc_op_wires); }; + WireVector& ecc_op_wire_2() { return std::get<1>(ecc_op_wires); }; + WireVector& ecc_op_wire_3() { return std::get<2>(ecc_op_wires); }; + WireVector& ecc_op_wire_4() { return std::get<3>(ecc_op_wires); }; + + const WireVector& ecc_op_wire_1() const { return std::get<0>(ecc_op_wires); }; + const WireVector& ecc_op_wire_2() const { return std::get<1>(ecc_op_wires); }; + const WireVector& ecc_op_wire_3() const { return std::get<2>(ecc_op_wires); }; + const WireVector& ecc_op_wire_4() const { return std::get<3>(ecc_op_wires); }; SelectorVector& q_busread() { return this->selectors.q_busread(); }; - SelectorVector& q_poseidon2_external = this->selectors.q_poseidon2_external(); - SelectorVector& q_poseidon2_internal = this->selectors.q_poseidon2_internal(); + SelectorVector& q_poseidon2_external() { return this->selectors.q_poseidon2_external(); }; + SelectorVector& q_poseidon2_internal() { return this->selectors.q_poseidon2_internal(); }; + + const SelectorVector& q_busread() const { return this->selectors.q_busread(); }; + const SelectorVector& q_poseidon2_external() const { return this->selectors.q_poseidon2_external(); }; + const SelectorVector& q_poseidon2_internal() const { return this->selectors.q_poseidon2_internal(); }; // DataBus call/return data arrays std::vector public_calldata; diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp index 7a3424626ae..87529305ecf 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp @@ -8,6 +8,47 @@ auto& engine = numeric::random::get_debug_engine(); } namespace proof_system { +TEST(GoblinUltraCircuitBuilder, CopyConstructor) +{ + GoblinUltraCircuitBuilder circuit_constructor = GoblinUltraCircuitBuilder(); + fr a = fr::one(); + circuit_constructor.add_public_variable(a); + + for (size_t i = 0; i < 16; ++i) { + for (size_t j = 0; j < 16; ++j) { + uint64_t left = static_cast(j); + uint64_t right = static_cast(i); + uint32_t left_idx = circuit_constructor.add_variable(fr(left)); + uint32_t right_idx = circuit_constructor.add_variable(fr(right)); + uint32_t result_idx = circuit_constructor.add_variable(fr(left ^ right)); + + uint32_t add_idx = + circuit_constructor.add_variable(fr(left) + fr(right) + circuit_constructor.get_variable(result_idx)); + circuit_constructor.create_big_add_gate( + { left_idx, right_idx, result_idx, add_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) }); + } + } + + // Compute a simple point accumulation natively + auto P1 = g1::affine_element::random_element(); + auto P2 = g1::affine_element::random_element(); + auto z = fr::random_element(); + + // Add gates corresponding to the above operations + circuit_constructor.queue_ecc_add_accum(P1); + circuit_constructor.queue_ecc_mul_accum(P2, z); + circuit_constructor.queue_ecc_eq(); + + bool result = circuit_constructor.check_circuit(); + EXPECT_EQ(result, true); + + GoblinUltraCircuitBuilder duplicate_circuit_constructor{ circuit_constructor }; + + EXPECT_EQ(duplicate_circuit_constructor.get_num_gates(), circuit_constructor.get_num_gates()); + EXPECT_EQ(duplicate_circuit_constructor.selectors.get(), circuit_constructor.selectors.get()); + EXPECT_TRUE(duplicate_circuit_constructor.check_circuit()); +} + TEST(GoblinUltraCircuitBuilder, BaseCase) { GoblinUltraCircuitBuilder circuit_constructor = GoblinUltraCircuitBuilder(); @@ -61,27 +102,27 @@ TEST(GoblinUltraCircuitBuilder, GoblinSimple) EXPECT_EQ(builder.num_ecc_op_gates, 6); // Check that the expected op codes have been correctly recorded in the 1st op wire - EXPECT_EQ(builder.ecc_op_wire_1[0], EccOpCode::ADD_ACCUM); - EXPECT_EQ(builder.ecc_op_wire_1[2], EccOpCode::MUL_ACCUM); - EXPECT_EQ(builder.ecc_op_wire_1[4], EccOpCode::EQUALITY); + EXPECT_EQ(builder.ecc_op_wire_1()[0], EccOpCode::ADD_ACCUM); + EXPECT_EQ(builder.ecc_op_wire_1()[2], EccOpCode::MUL_ACCUM); + EXPECT_EQ(builder.ecc_op_wire_1()[4], EccOpCode::EQUALITY); // Check that we can reconstruct the coordinates of P1 from the op_wires - auto P1_x_lo = uint256_t(builder.variables[builder.ecc_op_wire_2[0]]); - auto P1_x_hi = uint256_t(builder.variables[builder.ecc_op_wire_3[0]]); + auto P1_x_lo = uint256_t(builder.variables[builder.ecc_op_wire_2()[0]]); + auto P1_x_hi = uint256_t(builder.variables[builder.ecc_op_wire_3()[0]]); auto P1_x = P1_x_lo + (P1_x_hi << CHUNK_SIZE); EXPECT_EQ(P1_x, uint256_t(P1.x)); - auto P1_y_lo = uint256_t(builder.variables[builder.ecc_op_wire_4[0]]); - auto P1_y_hi = uint256_t(builder.variables[builder.ecc_op_wire_2[1]]); + auto P1_y_lo = uint256_t(builder.variables[builder.ecc_op_wire_4()[0]]); + auto P1_y_hi = uint256_t(builder.variables[builder.ecc_op_wire_2()[1]]); auto P1_y = P1_y_lo + (P1_y_hi << CHUNK_SIZE); EXPECT_EQ(P1_y, uint256_t(P1.y)); // Check that we can reconstruct the coordinates of P2 from the op_wires - auto P2_x_lo = uint256_t(builder.variables[builder.ecc_op_wire_2[2]]); - auto P2_x_hi = uint256_t(builder.variables[builder.ecc_op_wire_3[2]]); + auto P2_x_lo = uint256_t(builder.variables[builder.ecc_op_wire_2()[2]]); + auto P2_x_hi = uint256_t(builder.variables[builder.ecc_op_wire_3()[2]]); auto P2_x = P2_x_lo + (P2_x_hi << CHUNK_SIZE); EXPECT_EQ(P2_x, uint256_t(P2.x)); - auto P2_y_lo = uint256_t(builder.variables[builder.ecc_op_wire_4[2]]); - auto P2_y_hi = uint256_t(builder.variables[builder.ecc_op_wire_2[3]]); + auto P2_y_lo = uint256_t(builder.variables[builder.ecc_op_wire_4()[2]]); + auto P2_y_hi = uint256_t(builder.variables[builder.ecc_op_wire_2()[3]]); auto P2_y = P2_y_lo + (P2_y_hi << CHUNK_SIZE); EXPECT_EQ(P2_y, uint256_t(P2.y)); } diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp index c9bcaa65b8f..3f930ec331e 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp @@ -15,20 +15,20 @@ namespace proof_system { * Create an addition gate. * * @param in An add_triple containing the indexes of variables to be placed into the - * wires w_l, w_r, w_o and addition coefficients to be placed into q_1, q_2, q_3, q_c. + * wires w_l, w_r, w_o and addition coefficients to be placed into q_1, q_2, q_3, q_c(). */ template void StandardCircuitBuilder_::create_add_gate(const add_triple_& in) { this->assert_valid_variables({ in.a, in.b, in.c }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - q_m.emplace_back(FF::zero()); - q_1.emplace_back(in.a_scaling); - q_2.emplace_back(in.b_scaling); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + q_m().emplace_back(FF::zero()); + q_1().emplace_back(in.a_scaling); + q_2().emplace_back(in.b_scaling); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); ++this->num_gates; } @@ -72,25 +72,25 @@ template void StandardCircuitBuilder_::create_balanced_add_gat FF temp = t0 + t1; uint32_t temp_idx = this->add_variable(temp); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(temp_idx); - q_m.emplace_back(FF::zero()); - q_1.emplace_back(in.a_scaling); - q_2.emplace_back(in.b_scaling); - q_3.emplace_back(FF::neg_one()); - q_c.emplace_back(FF::zero()); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(temp_idx); + q_m().emplace_back(FF::zero()); + q_1().emplace_back(in.a_scaling); + q_2().emplace_back(in.b_scaling); + q_3().emplace_back(FF::neg_one()); + q_c().emplace_back(FF::zero()); ++this->num_gates; - w_l.emplace_back(temp_idx); - w_r.emplace_back(in.c); - w_o.emplace_back(in.d); - q_m.emplace_back(FF::zero()); - q_1.emplace_back(FF::one()); - q_2.emplace_back(in.c_scaling); - q_3.emplace_back(in.d_scaling); - q_c.emplace_back(in.const_scaling); + w_l().emplace_back(temp_idx); + w_r().emplace_back(in.c); + w_o().emplace_back(in.d); + q_m().emplace_back(FF::zero()); + q_1().emplace_back(FF::one()); + q_2().emplace_back(in.c_scaling); + q_3().emplace_back(in.d_scaling); + q_c().emplace_back(in.const_scaling); ++this->num_gates; @@ -98,26 +98,26 @@ template void StandardCircuitBuilder_::create_balanced_add_gat // i.e. in.d * (in.d - 1) * (in.d - 2) = 0 FF temp_2 = this->get_variable(in.d).sqr() - this->get_variable(in.d); uint32_t temp_2_idx = this->add_variable(temp_2); - w_l.emplace_back(in.d); - w_r.emplace_back(in.d); - w_o.emplace_back(temp_2_idx); - q_m.emplace_back(FF::one()); - q_1.emplace_back(FF::neg_one()); - q_2.emplace_back(FF::zero()); - q_3.emplace_back(FF::neg_one()); - q_c.emplace_back(FF::zero()); + w_l().emplace_back(in.d); + w_r().emplace_back(in.d); + w_o().emplace_back(temp_2_idx); + q_m().emplace_back(FF::one()); + q_1().emplace_back(FF::neg_one()); + q_2().emplace_back(FF::zero()); + q_3().emplace_back(FF::neg_one()); + q_c().emplace_back(FF::zero()); ++this->num_gates; constexpr FF neg_two = -FF(2); - w_l.emplace_back(temp_2_idx); - w_r.emplace_back(in.d); - w_o.emplace_back(this->zero_idx); - q_m.emplace_back(FF::one()); - q_1.emplace_back(neg_two); - q_2.emplace_back(FF::zero()); - q_3.emplace_back(FF::zero()); - q_c.emplace_back(FF::zero()); + w_l().emplace_back(temp_2_idx); + w_r().emplace_back(in.d); + w_o().emplace_back(this->zero_idx); + q_m().emplace_back(FF::one()); + q_1().emplace_back(neg_two); + q_2().emplace_back(FF::zero()); + q_3().emplace_back(FF::zero()); + q_c().emplace_back(FF::zero()); ++this->num_gates; } @@ -181,20 +181,20 @@ template void StandardCircuitBuilder_::create_big_mul_gate(con * Create a multiplication gate. * * @param in A mul_tripple containing the indexes of variables to be placed into the - * wires w_l, w_r, w_o and scaling coefficients to be placed into q_m, q_3, q_c. + * wires w_l, w_r, w_o and scaling coefficients to be placed into q_m, q_3, q_c(). */ template void StandardCircuitBuilder_::create_mul_gate(const mul_triple_& in) { this->assert_valid_variables({ in.a, in.b, in.c }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - q_m.emplace_back(in.mul_scaling); - q_1.emplace_back(FF::zero()); - q_2.emplace_back(FF::zero()); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + q_m().emplace_back(in.mul_scaling); + q_1().emplace_back(FF::zero()); + q_2().emplace_back(FF::zero()); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); ++this->num_gates; } @@ -209,15 +209,15 @@ template void StandardCircuitBuilder_::create_bool_gate(const { this->assert_valid_variables({ variable_index }); - w_l.emplace_back(variable_index); - w_r.emplace_back(variable_index); - w_o.emplace_back(variable_index); + w_l().emplace_back(variable_index); + w_r().emplace_back(variable_index); + w_o().emplace_back(variable_index); - q_m.emplace_back(FF::one()); - q_1.emplace_back(FF::zero()); - q_2.emplace_back(FF::zero()); - q_3.emplace_back(FF::neg_one()); - q_c.emplace_back(FF::zero()); + q_m().emplace_back(FF::one()); + q_1().emplace_back(FF::zero()); + q_2().emplace_back(FF::zero()); + q_3().emplace_back(FF::neg_one()); + q_c().emplace_back(FF::zero()); ++this->num_gates; } @@ -231,14 +231,14 @@ template void StandardCircuitBuilder_::create_poly_gate(const { this->assert_valid_variables({ in.a, in.b, in.c }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - q_m.emplace_back(in.q_m); - q_1.emplace_back(in.q_l); - q_2.emplace_back(in.q_r); - q_3.emplace_back(in.q_o); - q_c.emplace_back(in.q_c); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + q_m().emplace_back(in.q_m); + q_1().emplace_back(in.q_l); + q_2().emplace_back(in.q_r); + q_3().emplace_back(in.q_o); + q_c().emplace_back(in.q_c); ++this->num_gates; } @@ -435,14 +435,14 @@ void StandardCircuitBuilder_::fix_witness(const uint32_t witness_index, cons { this->assert_valid_variables({ witness_index }); - w_l.emplace_back(witness_index); - w_r.emplace_back(this->zero_idx); - w_o.emplace_back(this->zero_idx); - q_m.emplace_back(FF::zero()); - q_1.emplace_back(FF::one()); - q_2.emplace_back(FF::zero()); - q_3.emplace_back(FF::zero()); - q_c.emplace_back(-witness_value); + w_l().emplace_back(witness_index); + w_r().emplace_back(this->zero_idx); + w_o().emplace_back(this->zero_idx); + q_m().emplace_back(FF::zero()); + q_1().emplace_back(FF::one()); + q_2().emplace_back(FF::zero()); + q_3().emplace_back(FF::zero()); + q_c().emplace_back(-witness_value); ++this->num_gates; } @@ -499,10 +499,10 @@ template bool StandardCircuitBuilder_::check_circuit() for (size_t i = 0; i < this->num_gates; i++) { gate_sum = FF::zero(); - left = this->get_variable(w_l[i]); - right = this->get_variable(w_r[i]); - output = this->get_variable(w_o[i]); - gate_sum = q_m[i] * left * right + q_1[i] * left + q_2[i] * right + q_3[i] * output + q_c[i]; + left = this->get_variable(w_l()[i]); + right = this->get_variable(w_r()[i]); + output = this->get_variable(w_o()[i]); + gate_sum = q_m()[i] * left * right + q_1()[i] * left + q_2()[i] * right + q_3()[i] * output + q_c()[i]; if (!gate_sum.is_zero()) { info("gate number", i); return false; @@ -543,11 +543,11 @@ template msgpack::sbuffer StandardCircuitBuilder_::export_circ } for (size_t i = 0; i < this->num_gates; i++) { - std::vector tmp_sel = { q_m[i], q_1[i], q_2[i], q_3[i], q_c[i] }; + std::vector tmp_sel = { q_m()[i], q_1()[i], q_2()[i], q_3()[i], q_c()[i] }; std::vector tmp_w = { - this->real_variable_index[w_l[i]], - this->real_variable_index[w_r[i]], - this->real_variable_index[w_o[i]], + this->real_variable_index[w_l()[i]], + this->real_variable_index[w_r()[i]], + this->real_variable_index[w_o()[i]], }; cir.selectors.push_back(tmp_sel); cir.wires.push_back(tmp_w); diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp index 819bc5a3c51..4c379ae9acd 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp @@ -29,15 +29,25 @@ template class StandardCircuitBuilder_ : public CircuitBuilderBase using WireVector = std::vector>; using SelectorVector = std::vector>; - WireVector& w_l = std::get<0>(wires); - WireVector& w_r = std::get<1>(wires); - WireVector& w_o = std::get<2>(wires); - - SelectorVector& q_m = this->selectors.q_m(); - SelectorVector& q_1 = this->selectors.q_1(); - SelectorVector& q_2 = this->selectors.q_2(); - SelectorVector& q_3 = this->selectors.q_3(); - SelectorVector& q_c = this->selectors.q_c(); + WireVector& w_l() { return std::get<0>(wires); }; + WireVector& w_r() { return std::get<1>(wires); }; + WireVector& w_o() { return std::get<2>(wires); }; + + const WireVector& w_l() const { return std::get<0>(wires); }; + const WireVector& w_r() const { return std::get<1>(wires); }; + const WireVector& w_o() const { return std::get<2>(wires); }; + + SelectorVector& q_m() { return this->selectors.q_m(); }; + SelectorVector& q_1() { return this->selectors.q_1(); }; + SelectorVector& q_2() { return this->selectors.q_2(); }; + SelectorVector& q_3() { return this->selectors.q_3(); }; + SelectorVector& q_c() { return this->selectors.q_c(); }; + + const SelectorVector& q_m() const { return this->selectors.q_m(); }; + const SelectorVector& q_1() const { return this->selectors.q_1(); }; + const SelectorVector& q_2() const { return this->selectors.q_2(); }; + const SelectorVector& q_3() const { return this->selectors.q_3(); }; + const SelectorVector& q_c() const { return this->selectors.q_c(); }; static constexpr size_t UINT_LOG2_BASE = 2; @@ -50,9 +60,9 @@ template class StandardCircuitBuilder_ : public CircuitBuilderBase : CircuitBuilderBase(size_hint) { selectors.reserve(size_hint); - w_l.reserve(size_hint); - w_r.reserve(size_hint); - w_o.reserve(size_hint); + w_l().reserve(size_hint); + w_r().reserve(size_hint); + w_o().reserve(size_hint); // To effieciently constrain wires to zero, we set the first value of w_1 to be 0, and use copy constraints for // all future zero values. // (#216)(Adrian): This should be done in a constant way, maybe by initializing the constant_variable_indices diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp index 39443c58c7f..d3d9767bb74 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp @@ -63,22 +63,22 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no { // First add a gate to simultaneously ensure first entries of all wires is zero and to add a non // zero value to all selectors aside from q_c and q_lookup - w_l.emplace_back(this->zero_idx); - w_r.emplace_back(this->zero_idx); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(1); - q_1.emplace_back(1); - q_2.emplace_back(1); - q_3.emplace_back(1); - q_c.emplace_back(0); - q_sort.emplace_back(1); - - q_arith.emplace_back(1); - q_4.emplace_back(1); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(1); - q_aux.emplace_back(1); + w_l().emplace_back(this->zero_idx); + w_r().emplace_back(this->zero_idx); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(1); + q_1().emplace_back(1); + q_2().emplace_back(1); + q_3().emplace_back(1); + q_c().emplace_back(0); + q_sort().emplace_back(1); + + q_arith().emplace_back(1); + q_4().emplace_back(1); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(1); + q_aux().emplace_back(1); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -125,21 +125,21 @@ void UltraCircuitBuilder_::create_add_gate(const add_triple_assert_valid_variables({ in.a, in.b, in.c }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(0); - q_1.emplace_back(in.a_scaling); - q_2.emplace_back(in.b_scaling); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(0); + q_1().emplace_back(in.a_scaling); + q_2().emplace_back(in.b_scaling); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -158,21 +158,21 @@ void UltraCircuitBuilder_::create_big_add_gate(const add_quad_< const bool include_next_gate_w_4) { this->assert_valid_variables({ in.a, in.b, in.c, in.d }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - w_4.emplace_back(in.d); - q_m.emplace_back(0); - q_1.emplace_back(in.a_scaling); - q_2.emplace_back(in.b_scaling); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); - q_arith.emplace_back(include_next_gate_w_4 ? 2 : 1); - q_4.emplace_back(in.d_scaling); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + w_4().emplace_back(in.d); + q_m().emplace_back(0); + q_1().emplace_back(in.a_scaling); + q_2().emplace_back(in.b_scaling); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); + q_arith().emplace_back(include_next_gate_w_4 ? 2 : 1); + q_4().emplace_back(in.d_scaling); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -253,21 +253,21 @@ void UltraCircuitBuilder_::create_big_mul_gate(const mul_quad_< { this->assert_valid_variables({ in.a, in.b, in.c, in.d }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - w_4.emplace_back(in.d); - q_m.emplace_back(in.mul_scaling); - q_1.emplace_back(in.a_scaling); - q_2.emplace_back(in.b_scaling); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); - q_arith.emplace_back(1); - q_4.emplace_back(in.d_scaling); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + w_4().emplace_back(in.d); + q_m().emplace_back(in.mul_scaling); + q_1().emplace_back(in.a_scaling); + q_2().emplace_back(in.b_scaling); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); + q_arith().emplace_back(1); + q_4().emplace_back(in.d_scaling); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -280,21 +280,21 @@ void UltraCircuitBuilder_::create_balanced_add_gate(const add_q { this->assert_valid_variables({ in.a, in.b, in.c, in.d }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - w_4.emplace_back(in.d); - q_m.emplace_back(0); - q_1.emplace_back(in.a_scaling); - q_2.emplace_back(in.b_scaling); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); - q_arith.emplace_back(1); - q_4.emplace_back(in.d_scaling); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + w_4().emplace_back(in.d); + q_m().emplace_back(0); + q_1().emplace_back(in.a_scaling); + q_2().emplace_back(in.b_scaling); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); + q_arith().emplace_back(1); + q_4().emplace_back(in.d_scaling); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -323,21 +323,21 @@ void UltraCircuitBuilder_::create_mul_gate(const mul_triple_assert_valid_variables({ in.a, in.b, in.c }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(in.mul_scaling); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(in.c_scaling); - q_c.emplace_back(in.const_scaling); - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(in.mul_scaling); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(in.c_scaling); + q_c().emplace_back(in.const_scaling); + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -352,22 +352,22 @@ void UltraCircuitBuilder_::create_bool_gate(const uint32_t vari { this->assert_valid_variables({ variable_index }); - w_l.emplace_back(variable_index); - w_r.emplace_back(variable_index); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(1); - q_1.emplace_back(-1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_sort.emplace_back(0); - - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(variable_index); + w_r().emplace_back(variable_index); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(1); + q_1().emplace_back(-1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_sort().emplace_back(0); + + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -384,22 +384,22 @@ void UltraCircuitBuilder_::create_poly_gate(const poly_triple_< { this->assert_valid_variables({ in.a, in.b, in.c }); - w_l.emplace_back(in.a); - w_r.emplace_back(in.b); - w_o.emplace_back(in.c); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(in.q_m); - q_1.emplace_back(in.q_l); - q_2.emplace_back(in.q_r); - q_3.emplace_back(in.q_o); - q_c.emplace_back(in.q_c); - q_sort.emplace_back(0); - - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.a); + w_r().emplace_back(in.b); + w_o().emplace_back(in.c); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(in.q_m); + q_1().emplace_back(in.q_l); + q_2().emplace_back(in.q_r); + q_3().emplace_back(in.q_o); + q_c().emplace_back(in.q_c); + q_sort().emplace_back(0); + + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -427,53 +427,53 @@ void UltraCircuitBuilder_::create_ecc_add_gate(const ecc_add_ga this->assert_valid_variables({ in.x1, in.x2, in.x3, in.y1, in.y2, in.y3 }); bool can_fuse_into_previous_gate = true; - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_r[this->num_gates - 1] == in.x1); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_o[this->num_gates - 1] == in.y1); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_3[this->num_gates - 1] == 0); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_4[this->num_gates - 1] == 0); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_1[this->num_gates - 1] == 0); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_arith[this->num_gates - 1] == 0); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_m[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_r()[this->num_gates - 1] == in.x1); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_o()[this->num_gates - 1] == in.y1); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_3()[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_4()[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_1()[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_arith()[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_m()[this->num_gates - 1] == 0); if (can_fuse_into_previous_gate) { - q_1[this->num_gates - 1] = in.sign_coefficient; - q_elliptic[this->num_gates - 1] = 1; + q_1()[this->num_gates - 1] = in.sign_coefficient; + q_elliptic()[this->num_gates - 1] = 1; } else { - w_l.emplace_back(this->zero_idx); - w_r.emplace_back(in.x1); - w_o.emplace_back(in.y1); - w_4.emplace_back(this->zero_idx); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_1.emplace_back(in.sign_coefficient); - - q_arith.emplace_back(0); - q_2.emplace_back(0); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(1); - q_aux.emplace_back(0); + w_l().emplace_back(this->zero_idx); + w_r().emplace_back(in.x1); + w_o().emplace_back(in.y1); + w_4().emplace_back(this->zero_idx); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_1().emplace_back(in.sign_coefficient); + + q_arith().emplace_back(0); + q_2().emplace_back(0); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(1); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; } - w_l.emplace_back(in.x2); - w_4.emplace_back(in.y2); - w_r.emplace_back(in.x3); - w_o.emplace_back(in.y3); - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(in.x2); + w_4().emplace_back(in.y2); + w_r().emplace_back(in.x3); + w_o().emplace_back(in.y3); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -496,51 +496,51 @@ void UltraCircuitBuilder_::create_ecc_dbl_gate(const ecc_dbl_ga * can also chain double gates together **/ bool can_fuse_into_previous_gate = true; - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_r[this->num_gates - 1] == in.x1); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_o[this->num_gates - 1] == in.y1); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_arith[this->num_gates - 1] == 0); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_lookup_type[this->num_gates - 1] == 0); - can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_aux[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_r()[this->num_gates - 1] == in.x1); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (w_o()[this->num_gates - 1] == in.y1); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_arith()[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_lookup_type()[this->num_gates - 1] == 0); + can_fuse_into_previous_gate = can_fuse_into_previous_gate && (q_aux()[this->num_gates - 1] == 0); if (can_fuse_into_previous_gate) { - q_elliptic[this->num_gates - 1] = 1; - q_m[this->num_gates - 1] = 1; + q_elliptic()[this->num_gates - 1] = 1; + q_m()[this->num_gates - 1] = 1; } else { - w_r.emplace_back(in.x1); - w_o.emplace_back(in.y1); - w_l.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); - q_elliptic.emplace_back(1); - q_m.emplace_back(1); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + w_r().emplace_back(in.x1); + w_o().emplace_back(in.y1); + w_l().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); + q_elliptic().emplace_back(1); + q_m().emplace_back(1); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; } - w_r.emplace_back(in.x3); - w_o.emplace_back(in.y3); - w_l.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_r().emplace_back(in.x3); + w_o().emplace_back(in.y3); + w_l().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -557,21 +557,21 @@ void UltraCircuitBuilder_::fix_witness(const uint32_t witness_i { this->assert_valid_variables({ witness_index }); - w_l.emplace_back(witness_index); - w_r.emplace_back(this->zero_idx); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); - q_m.emplace_back(0); - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(-witness_value); - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + w_l().emplace_back(witness_index); + w_r().emplace_back(this->zero_idx); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); + q_m().emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(-witness_value); + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -633,21 +633,21 @@ plookup::ReadData UltraCircuitBuilder_::create_gates_ read_data[plookup::ColumnIdx::C3].push_back(third_idx); this->assert_valid_variables({ first_idx, second_idx, third_idx }); - q_lookup_type.emplace_back(FF(1)); - q_3.emplace_back(FF(table.table_index)); - w_l.emplace_back(first_idx); - w_r.emplace_back(second_idx); - w_o.emplace_back(third_idx); - w_4.emplace_back(this->zero_idx); - q_1.emplace_back(0); - q_2.emplace_back((i == (num_lookups - 1) ? 0 : -multi_table.column_1_step_sizes[i + 1])); - q_m.emplace_back((i == (num_lookups - 1) ? 0 : -multi_table.column_2_step_sizes[i + 1])); - q_c.emplace_back((i == (num_lookups - 1) ? 0 : -multi_table.column_3_step_sizes[i + 1])); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + q_lookup_type().emplace_back(FF(1)); + q_3().emplace_back(FF(table.table_index)); + w_l().emplace_back(first_idx); + w_r().emplace_back(second_idx); + w_o().emplace_back(third_idx); + w_4().emplace_back(this->zero_idx); + q_1().emplace_back(0); + q_2().emplace_back((i == (num_lookups - 1) ? 0 : -multi_table.column_1_step_sizes[i + 1])); + q_m().emplace_back((i == (num_lookups - 1) ? 0 : -multi_table.column_2_step_sizes[i + 1])); + q_c().emplace_back((i == (num_lookups - 1) ? 0 : -multi_table.column_3_step_sizes[i + 1])); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); ++this->num_gates; @@ -942,42 +942,42 @@ void UltraCircuitBuilder_::create_sort_constraint(const std::ve for (size_t i = 0; i < variable_index.size(); i += gate_width) { - w_l.emplace_back(variable_index[i]); - w_r.emplace_back(variable_index[i + 1]); - w_o.emplace_back(variable_index[i + 2]); - w_4.emplace_back(variable_index[i + 3]); + w_l().emplace_back(variable_index[i]); + w_r().emplace_back(variable_index[i + 1]); + w_o().emplace_back(variable_index[i + 2]); + w_4().emplace_back(variable_index[i + 3]); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(1); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(1); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); } // dummy gate needed because of sort widget's check of next row - w_l.emplace_back(variable_index[variable_index.size() - 1]); - w_r.emplace_back(this->zero_idx); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); + w_l().emplace_back(variable_index[variable_index.size() - 1]); + w_r().emplace_back(this->zero_idx); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); } @@ -997,22 +997,22 @@ void UltraCircuitBuilder_::create_dummy_constraints(const std:: this->assert_valid_variables(padded_list); for (size_t i = 0; i < padded_list.size(); i += gate_width) { - w_l.emplace_back(padded_list[i]); - w_r.emplace_back(padded_list[i + 1]); - w_o.emplace_back(padded_list[i + 2]); - w_4.emplace_back(padded_list[i + 3]); + w_l().emplace_back(padded_list[i]); + w_r().emplace_back(padded_list[i + 1]); + w_o().emplace_back(padded_list[i + 2]); + w_4().emplace_back(padded_list[i + 3]); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); } @@ -1029,86 +1029,86 @@ void UltraCircuitBuilder_::create_sort_constraint_with_edges( this->assert_valid_variables(variable_index); // enforce range checks of first row and starting at start - w_l.emplace_back(variable_index[0]); - w_r.emplace_back(variable_index[1]); - w_o.emplace_back(variable_index[2]); - w_4.emplace_back(variable_index[3]); + w_l().emplace_back(variable_index[0]); + w_r().emplace_back(variable_index[1]); + w_o().emplace_back(variable_index[2]); + w_4().emplace_back(variable_index[3]); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(-start); - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_sort.emplace_back(1); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(-start); + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_sort().emplace_back(1); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); // enforce range check for middle rows for (size_t i = gate_width; i < variable_index.size() - gate_width; i += gate_width) { - w_l.emplace_back(variable_index[i]); - w_r.emplace_back(variable_index[i + 1]); - w_o.emplace_back(variable_index[i + 2]); - w_4.emplace_back(variable_index[i + 3]); + w_l().emplace_back(variable_index[i]); + w_r().emplace_back(variable_index[i + 1]); + w_o().emplace_back(variable_index[i + 2]); + w_4().emplace_back(variable_index[i + 3]); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(1); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(1); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); } // enforce range checks of last row and ending at end if (variable_index.size() > gate_width) { - w_l.emplace_back(variable_index[variable_index.size() - 4]); - w_r.emplace_back(variable_index[variable_index.size() - 3]); - w_o.emplace_back(variable_index[variable_index.size() - 2]); - w_4.emplace_back(variable_index[variable_index.size() - 1]); + w_l().emplace_back(variable_index[variable_index.size() - 4]); + w_r().emplace_back(variable_index[variable_index.size() - 3]); + w_o().emplace_back(variable_index[variable_index.size() - 2]); + w_4().emplace_back(variable_index[variable_index.size() - 1]); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); - q_4.emplace_back(0); - q_sort.emplace_back(1); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); + q_4().emplace_back(0); + q_sort().emplace_back(1); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); } // dummy gate needed because of sort widget's check of next row // use this gate to check end condition - w_l.emplace_back(variable_index[variable_index.size() - 1]); - w_r.emplace_back(this->zero_idx); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(this->zero_idx); + w_l().emplace_back(variable_index[variable_index.size() - 1]); + w_r().emplace_back(this->zero_idx); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(this->zero_idx); ++this->num_gates; - q_m.emplace_back(0); - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_c.emplace_back(-end); - q_arith.emplace_back(1); - q_4.emplace_back(0); - q_sort.emplace_back(0); - q_elliptic.emplace_back(0); - q_lookup_type.emplace_back(0); - q_aux.emplace_back(0); + q_m().emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_c().emplace_back(-end); + q_arith().emplace_back(1); + q_4().emplace_back(0); + q_sort().emplace_back(0); + q_elliptic().emplace_back(0); + q_lookup_type().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); } @@ -1213,67 +1213,67 @@ std::vector UltraCircuitBuilder_::decompose_into_defa template void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECTORS type) { - q_aux.emplace_back(type == AUX_SELECTORS::NONE ? 0 : 1); - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); + q_aux().emplace_back(type == AUX_SELECTORS::NONE ? 0 : 1); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); switch (type) { case AUX_SELECTORS::LIMB_ACCUMULATE_1: { - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(1); - q_4.emplace_back(1); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(1); + q_4().emplace_back(1); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; } case AUX_SELECTORS::LIMB_ACCUMULATE_2: { - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(1); - q_4.emplace_back(0); - q_m.emplace_back(1); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(1); + q_4().emplace_back(0); + q_m().emplace_back(1); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; } case AUX_SELECTORS::NON_NATIVE_FIELD_1: { - q_1.emplace_back(0); - q_2.emplace_back(1); - q_3.emplace_back(1); - q_4.emplace_back(0); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(1); + q_3().emplace_back(1); + q_4().emplace_back(0); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; } case AUX_SELECTORS::NON_NATIVE_FIELD_2: { - q_1.emplace_back(0); - q_2.emplace_back(1); - q_3.emplace_back(0); - q_4.emplace_back(1); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(1); + q_3().emplace_back(0); + q_4().emplace_back(1); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; } case AUX_SELECTORS::NON_NATIVE_FIELD_3: { - q_1.emplace_back(0); - q_2.emplace_back(1); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(1); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(1); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(1); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1283,13 +1283,13 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT // Apply sorted memory read checks with the following additional check: // 1. Assert that if index field across two gates does not change, the value field does not change. // Used for ROM reads and RAM reads across write/read boundaries - q_1.emplace_back(1); - q_2.emplace_back(1); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(1); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1300,13 +1300,13 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT // 2. Validate record computation (r = read_write_flag + index * \eta + \timestamp * \eta^2 + value * \eta^3) // 3. If adjacent index values across 2 gates does not change, and the next gate's read_write_flag is set to // 'read', validate adjacent values do not change Used for ROM reads and RAM reads across read/write boundaries - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(1); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(1); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1314,13 +1314,13 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT case AUX_SELECTORS::RAM_TIMESTAMP_CHECK: { // For two adjacent RAM entries that share the same index, validate the timestamp value is monotonically // increasing - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_4.emplace_back(1); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_4().emplace_back(1); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1329,13 +1329,13 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT // Memory read gate for reading memory cells. // Validates record witness computation (r = read_write_flag + index * \eta + timestamp * \eta^2 + value * // \eta^3) - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(1); // validate record witness is correctly computed - q_c.emplace_back(0); // read/write flag stored in q_c - q_arith.emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(1); // validate record witness is correctly computed + q_c().emplace_back(0); // read/write flag stored in q_c + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1344,13 +1344,13 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT // Memory read gate for reading memory cells. // Validates record witness computation (r = read_write_flag + index * \eta + timestamp * \eta^2 + value * // \eta^3) - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(1); // validate record witness is correctly computed - q_c.emplace_back(0); // read/write flag stored in q_c - q_arith.emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(1); // validate record witness is correctly computed + q_c().emplace_back(0); // read/write flag stored in q_c + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1359,25 +1359,25 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT // Memory read gate for writing memory cells. // Validates record witness computation (r = read_write_flag + index * \eta + timestamp * \eta^2 + value * // \eta^3) - q_1.emplace_back(1); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(1); // validate record witness is correctly computed - q_c.emplace_back(1); // read/write flag stored in q_c - q_arith.emplace_back(0); + q_1().emplace_back(1); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(1); // validate record witness is correctly computed + q_c().emplace_back(1); // read/write flag stored in q_c + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; } default: { - q_1.emplace_back(0); - q_2.emplace_back(0); - q_3.emplace_back(0); - q_4.emplace_back(0); - q_m.emplace_back(0); - q_c.emplace_back(0); - q_arith.emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(0); + q_3().emplace_back(0); + q_4().emplace_back(0); + q_m().emplace_back(0); + q_c().emplace_back(0); + q_arith().emplace_back(0); selectors.pad_additional(); check_selector_length_consistency(); break; @@ -1445,20 +1445,20 @@ void UltraCircuitBuilder_::range_constrain_two_limbs(const uint const std::array lo_sublimbs = get_sublimbs(lo_idx, lo_masks); const std::array hi_sublimbs = get_sublimbs(hi_idx, hi_masks); - w_l.emplace_back(lo_sublimbs[0]); - w_r.emplace_back(lo_sublimbs[1]); - w_o.emplace_back(lo_sublimbs[2]); - w_4.emplace_back(lo_idx); + w_l().emplace_back(lo_sublimbs[0]); + w_r().emplace_back(lo_sublimbs[1]); + w_o().emplace_back(lo_sublimbs[2]); + w_4().emplace_back(lo_idx); - w_l.emplace_back(lo_sublimbs[3]); - w_r.emplace_back(lo_sublimbs[4]); - w_o.emplace_back(hi_sublimbs[0]); - w_4.emplace_back(hi_sublimbs[1]); + w_l().emplace_back(lo_sublimbs[3]); + w_r().emplace_back(lo_sublimbs[4]); + w_o().emplace_back(hi_sublimbs[0]); + w_4().emplace_back(hi_sublimbs[1]); - w_l.emplace_back(hi_sublimbs[2]); - w_r.emplace_back(hi_sublimbs[3]); - w_o.emplace_back(hi_sublimbs[4]); - w_4.emplace_back(hi_idx); + w_l().emplace_back(hi_sublimbs[2]); + w_r().emplace_back(hi_sublimbs[3]); + w_o().emplace_back(hi_sublimbs[4]); + w_4().emplace_back(hi_idx); apply_aux_selectors(AUX_SELECTORS::LIMB_ACCUMULATE_1); apply_aux_selectors(AUX_SELECTORS::LIMB_ACCUMULATE_2); @@ -1618,28 +1618,28 @@ std::array UltraCircuitBuilder_::evaluate_non_nati 0 }, true); - w_l.emplace_back(input.a[1]); - w_r.emplace_back(input.b[1]); - w_o.emplace_back(input.r[0]); - w_4.emplace_back(lo_0_idx); + w_l().emplace_back(input.a[1]); + w_r().emplace_back(input.b[1]); + w_o().emplace_back(input.r[0]); + w_4().emplace_back(lo_0_idx); apply_aux_selectors(AUX_SELECTORS::NON_NATIVE_FIELD_1); ++this->num_gates; - w_l.emplace_back(input.a[0]); - w_r.emplace_back(input.b[0]); - w_o.emplace_back(input.a[3]); - w_4.emplace_back(input.b[3]); + w_l().emplace_back(input.a[0]); + w_r().emplace_back(input.b[0]); + w_o().emplace_back(input.a[3]); + w_4().emplace_back(input.b[3]); apply_aux_selectors(AUX_SELECTORS::NON_NATIVE_FIELD_2); ++this->num_gates; - w_l.emplace_back(input.a[2]); - w_r.emplace_back(input.b[2]); - w_o.emplace_back(input.r[3]); - w_4.emplace_back(hi_0_idx); + w_l().emplace_back(input.a[2]); + w_r().emplace_back(input.b[2]); + w_o().emplace_back(input.r[3]); + w_4().emplace_back(hi_0_idx); apply_aux_selectors(AUX_SELECTORS::NON_NATIVE_FIELD_3); ++this->num_gates; - w_l.emplace_back(input.a[1]); - w_r.emplace_back(input.b[1]); - w_o.emplace_back(input.r[2]); - w_4.emplace_back(hi_1_idx); + w_l().emplace_back(input.a[1]); + w_r().emplace_back(input.b[1]); + w_o().emplace_back(input.r[2]); + w_4().emplace_back(hi_1_idx); apply_aux_selectors(AUX_SELECTORS::NONE); ++this->num_gates; @@ -1703,28 +1703,28 @@ void UltraCircuitBuilder_::process_non_native_field_multiplicat // iterate over the cached items and create constraints for (const auto& input : cached_partial_non_native_field_multiplications) { - w_l.emplace_back(input.a[1]); - w_r.emplace_back(input.b[1]); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(input.lo_0); + w_l().emplace_back(input.a[1]); + w_r().emplace_back(input.b[1]); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(input.lo_0); apply_aux_selectors(AUX_SELECTORS::NON_NATIVE_FIELD_1); ++this->num_gates; - w_l.emplace_back(input.a[0]); - w_r.emplace_back(input.b[0]); - w_o.emplace_back(input.a[3]); - w_4.emplace_back(input.b[3]); + w_l().emplace_back(input.a[0]); + w_r().emplace_back(input.b[0]); + w_o().emplace_back(input.a[3]); + w_4().emplace_back(input.b[3]); apply_aux_selectors(AUX_SELECTORS::NON_NATIVE_FIELD_2); ++this->num_gates; - w_l.emplace_back(input.a[2]); - w_r.emplace_back(input.b[2]); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(input.hi_0); + w_l().emplace_back(input.a[2]); + w_r().emplace_back(input.b[2]); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(input.hi_0); apply_aux_selectors(AUX_SELECTORS::NON_NATIVE_FIELD_3); ++this->num_gates; - w_l.emplace_back(input.a[1]); - w_r.emplace_back(input.b[1]); - w_o.emplace_back(this->zero_idx); - w_4.emplace_back(input.hi_1); + w_l().emplace_back(input.a[1]); + w_r().emplace_back(input.b[1]); + w_o().emplace_back(this->zero_idx); + w_4().emplace_back(input.hi_1); apply_aux_selectors(AUX_SELECTORS::NONE); ++this->num_gates; } @@ -1845,61 +1845,61 @@ std::array UltraCircuitBuilder_::evaluate_non_nati * By setting `q_arith` to `3`, we can validate `x_p + y_p + q_m = z_p` **/ // GATE 1 - w_l.emplace_back(y_p); - w_r.emplace_back(x_0); - w_o.emplace_back(y_0); - w_4.emplace_back(x_p); - w_l.emplace_back(z_p); - w_r.emplace_back(x_1); - w_o.emplace_back(y_1); // | 1 | 2 | 3 | 4 | - w_4.emplace_back(z_0); // |-----|-----|-----|-----| - w_l.emplace_back(x_2); // | y.p | x.0 | y.0 | z.p | (b.p + b.p - c.p = 0) AND (a.0 + b.0 - c.0 = 0) - w_r.emplace_back(y_2); // | x.p | x.1 | y.1 | z.0 | (a.1 + b.1 - c.1 = 0) - w_o.emplace_back(z_2); // | x.2 | y.2 | z.2 | z.1 | (a.2 + b.2 - c.2 = 0) - w_4.emplace_back(z_1); // | x.3 | y.3 | z.3 | --- | (a.3 + b.3 - c.3 = 0) - w_l.emplace_back(x_3); - w_r.emplace_back(y_3); - w_o.emplace_back(z_3); - w_4.emplace_back(this->zero_idx); - - q_m.emplace_back(addconstp); - q_1.emplace_back(0); - q_2.emplace_back(-x_mulconst0 * - 2); // scale constants by 2. If q_arith = 3 then w_4_omega value (z0) gets scaled by 2x - q_3.emplace_back(-y_mulconst0 * 2); // z_0 - (x_0 * -xmulconst0) - (y_0 * ymulconst0) = 0 => z_0 = x_0 + y_0 - q_4.emplace_back(0); - q_c.emplace_back(-addconst0 * 2); - q_arith.emplace_back(3); - - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(-x_mulconst1); - q_3.emplace_back(-y_mulconst1); - q_4.emplace_back(0); - q_c.emplace_back(-addconst1); - q_arith.emplace_back(2); - - q_m.emplace_back(0); - q_1.emplace_back(-x_mulconst2); - q_2.emplace_back(-y_mulconst2); - q_3.emplace_back(1); - q_4.emplace_back(0); - q_c.emplace_back(-addconst2); - q_arith.emplace_back(1); - - q_m.emplace_back(0); - q_1.emplace_back(-x_mulconst3); - q_2.emplace_back(-y_mulconst3); - q_3.emplace_back(1); - q_4.emplace_back(0); - q_c.emplace_back(-addconst3); - q_arith.emplace_back(1); + w_l().emplace_back(y_p); + w_r().emplace_back(x_0); + w_o().emplace_back(y_0); + w_4().emplace_back(x_p); + w_l().emplace_back(z_p); + w_r().emplace_back(x_1); + w_o().emplace_back(y_1); // | 1 | 2 | 3 | 4 | + w_4().emplace_back(z_0); // |-----|-----|-----|-----| + w_l().emplace_back(x_2); // | y.p | x.0 | y.0 | z.p | (b.p + b.p - c.p = 0) AND (a.0 + b.0 - c.0 = 0) + w_r().emplace_back(y_2); // | x.p | x.1 | y.1 | z.0 | (a.1 + b.1 - c.1 = 0) + w_o().emplace_back(z_2); // | x.2 | y.2 | z.2 | z.1 | (a.2 + b.2 - c.2 = 0) + w_4().emplace_back(z_1); // | x.3 | y.3 | z.3 | --- | (a.3 + b.3 - c.3 = 0) + w_l().emplace_back(x_3); + w_r().emplace_back(y_3); + w_o().emplace_back(z_3); + w_4().emplace_back(this->zero_idx); + + q_m().emplace_back(addconstp); + q_1().emplace_back(0); + q_2().emplace_back(-x_mulconst0 * + 2); // scale constants by 2. If q_arith = 3 then w_4_omega value (z0) gets scaled by 2x + q_3().emplace_back(-y_mulconst0 * 2); // z_0 - (x_0 * -xmulconst0) - (y_0 * ymulconst0) = 0 => z_0 = x_0 + y_0 + q_4().emplace_back(0); + q_c().emplace_back(-addconst0 * 2); + q_arith().emplace_back(3); + + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(-x_mulconst1); + q_3().emplace_back(-y_mulconst1); + q_4().emplace_back(0); + q_c().emplace_back(-addconst1); + q_arith().emplace_back(2); + + q_m().emplace_back(0); + q_1().emplace_back(-x_mulconst2); + q_2().emplace_back(-y_mulconst2); + q_3().emplace_back(1); + q_4().emplace_back(0); + q_c().emplace_back(-addconst2); + q_arith().emplace_back(1); + + q_m().emplace_back(0); + q_1().emplace_back(-x_mulconst3); + q_2().emplace_back(-y_mulconst3); + q_3().emplace_back(1); + q_4().emplace_back(0); + q_c().emplace_back(-addconst3); + q_arith().emplace_back(1); for (size_t i = 0; i < 4; ++i) { - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); } check_selector_length_consistency(); @@ -1969,60 +1969,60 @@ std::array UltraCircuitBuilder_::evaluate_non_nati * **/ // GATE 1 - w_l.emplace_back(y_p); - w_r.emplace_back(x_0); - w_o.emplace_back(y_0); - w_4.emplace_back(z_p); - w_l.emplace_back(x_p); - w_r.emplace_back(x_1); - w_o.emplace_back(y_1); // | 1 | 2 | 3 | 4 | - w_4.emplace_back(z_0); // |-----|-----|-----|-----| - w_l.emplace_back(x_2); // | y.p | x.0 | y.0 | z.p | (b.p + c.p - a.p = 0) AND (a.0 - b.0 - c.0 = 0) - w_r.emplace_back(y_2); // | x.p | x.1 | y.1 | z.0 | (a.1 - b.1 - c.1 = 0) - w_o.emplace_back(z_2); // | x.2 | y.2 | z.2 | z.1 | (a.2 - b.2 - c.2 = 0) - w_4.emplace_back(z_1); // | x.3 | y.3 | z.3 | --- | (a.3 - b.3 - c.3 = 0) - w_l.emplace_back(x_3); - w_r.emplace_back(y_3); - w_o.emplace_back(z_3); - w_4.emplace_back(this->zero_idx); - - q_m.emplace_back(-addconstp); - q_1.emplace_back(0); - q_2.emplace_back(-x_mulconst0 * 2); - q_3.emplace_back(y_mulconst0 * 2); // z_0 + (x_0 * -xmulconst0) + (y_0 * ymulconst0) = 0 => z_0 = x_0 - y_0 - q_4.emplace_back(0); - q_c.emplace_back(-addconst0 * 2); - q_arith.emplace_back(3); - - q_m.emplace_back(0); - q_1.emplace_back(0); - q_2.emplace_back(-x_mulconst1); - q_3.emplace_back(y_mulconst1); - q_4.emplace_back(0); - q_c.emplace_back(-addconst1); - q_arith.emplace_back(2); - - q_m.emplace_back(0); - q_1.emplace_back(-x_mulconst2); - q_2.emplace_back(y_mulconst2); - q_3.emplace_back(1); - q_4.emplace_back(0); - q_c.emplace_back(-addconst2); - q_arith.emplace_back(1); - - q_m.emplace_back(0); - q_1.emplace_back(-x_mulconst3); - q_2.emplace_back(y_mulconst3); - q_3.emplace_back(1); - q_4.emplace_back(0); - q_c.emplace_back(-addconst3); - q_arith.emplace_back(1); + w_l().emplace_back(y_p); + w_r().emplace_back(x_0); + w_o().emplace_back(y_0); + w_4().emplace_back(z_p); + w_l().emplace_back(x_p); + w_r().emplace_back(x_1); + w_o().emplace_back(y_1); // | 1 | 2 | 3 | 4 | + w_4().emplace_back(z_0); // |-----|-----|-----|-----| + w_l().emplace_back(x_2); // | y.p | x.0 | y.0 | z.p | (b.p + c.p - a.p = 0) AND (a.0 - b.0 - c.0 = 0) + w_r().emplace_back(y_2); // | x.p | x.1 | y.1 | z.0 | (a.1 - b.1 - c.1 = 0) + w_o().emplace_back(z_2); // | x.2 | y.2 | z.2 | z.1 | (a.2 - b.2 - c.2 = 0) + w_4().emplace_back(z_1); // | x.3 | y.3 | z.3 | --- | (a.3 - b.3 - c.3 = 0) + w_l().emplace_back(x_3); + w_r().emplace_back(y_3); + w_o().emplace_back(z_3); + w_4().emplace_back(this->zero_idx); + + q_m().emplace_back(-addconstp); + q_1().emplace_back(0); + q_2().emplace_back(-x_mulconst0 * 2); + q_3().emplace_back(y_mulconst0 * 2); // z_0 + (x_0 * -xmulconst0) + (y_0 * ymulconst0) = 0 => z_0 = x_0 - y_0 + q_4().emplace_back(0); + q_c().emplace_back(-addconst0 * 2); + q_arith().emplace_back(3); + + q_m().emplace_back(0); + q_1().emplace_back(0); + q_2().emplace_back(-x_mulconst1); + q_3().emplace_back(y_mulconst1); + q_4().emplace_back(0); + q_c().emplace_back(-addconst1); + q_arith().emplace_back(2); + + q_m().emplace_back(0); + q_1().emplace_back(-x_mulconst2); + q_2().emplace_back(y_mulconst2); + q_3().emplace_back(1); + q_4().emplace_back(0); + q_c().emplace_back(-addconst2); + q_arith().emplace_back(1); + + q_m().emplace_back(0); + q_1().emplace_back(-x_mulconst3); + q_2().emplace_back(y_mulconst3); + q_3().emplace_back(1); + q_4().emplace_back(0); + q_c().emplace_back(-addconst3); + q_arith().emplace_back(1); for (size_t i = 0; i < 4; ++i) { - q_sort.emplace_back(0); - q_lookup_type.emplace_back(0); - q_elliptic.emplace_back(0); - q_aux.emplace_back(0); + q_sort().emplace_back(0); + q_lookup_type().emplace_back(0); + q_elliptic().emplace_back(0); + q_aux().emplace_back(0); selectors.pad_additional(); } check_selector_length_consistency(); @@ -2045,10 +2045,10 @@ template void UltraCircuitBuilder_:: // Record wire value can't yet be computed record.record_witness = this->add_variable(0); apply_aux_selectors(AUX_SELECTORS::ROM_READ); - w_l.emplace_back(record.index_witness); - w_r.emplace_back(record.value_column1_witness); - w_o.emplace_back(record.value_column2_witness); - w_4.emplace_back(record.record_witness); + w_l().emplace_back(record.index_witness); + w_r().emplace_back(record.value_column1_witness); + w_o().emplace_back(record.value_column2_witness); + w_4().emplace_back(record.record_witness); record.gate_index = this->num_gates; ++this->num_gates; } @@ -2065,10 +2065,10 @@ void UltraCircuitBuilder_::create_sorted_ROM_gate(RomRecord& re { record.record_witness = this->add_variable(0); apply_aux_selectors(AUX_SELECTORS::ROM_CONSISTENCY_CHECK); - w_l.emplace_back(record.index_witness); - w_r.emplace_back(record.value_column1_witness); - w_o.emplace_back(record.value_column2_witness); - w_4.emplace_back(record.record_witness); + w_l().emplace_back(record.index_witness); + w_r().emplace_back(record.value_column1_witness); + w_o().emplace_back(record.value_column2_witness); + w_4().emplace_back(record.record_witness); record.gate_index = this->num_gates; ++this->num_gates; } @@ -2111,10 +2111,10 @@ template void UltraCircuitBuilder_:: record.record_witness = this->add_variable(0); apply_aux_selectors(record.access_type == RamRecord::AccessType::READ ? AUX_SELECTORS::RAM_READ : AUX_SELECTORS::RAM_WRITE); - w_l.emplace_back(record.index_witness); - w_r.emplace_back(record.timestamp_witness); - w_o.emplace_back(record.value_witness); - w_4.emplace_back(record.record_witness); + w_l().emplace_back(record.index_witness); + w_r().emplace_back(record.timestamp_witness); + w_o().emplace_back(record.value_witness); + w_4().emplace_back(record.record_witness); record.gate_index = this->num_gates; ++this->num_gates; } @@ -2132,10 +2132,10 @@ void UltraCircuitBuilder_::create_sorted_RAM_gate(RamRecord& re { record.record_witness = this->add_variable(0); apply_aux_selectors(AUX_SELECTORS::RAM_CONSISTENCY_CHECK); - w_l.emplace_back(record.index_witness); - w_r.emplace_back(record.timestamp_witness); - w_o.emplace_back(record.value_witness); - w_4.emplace_back(record.record_witness); + w_l().emplace_back(record.index_witness); + w_r().emplace_back(record.timestamp_witness); + w_o().emplace_back(record.value_witness); + w_4().emplace_back(record.record_witness); record.gate_index = this->num_gates; ++this->num_gates; } @@ -2627,10 +2627,10 @@ template void UltraCircuitBuilder_:: uint32_t timestamp_delta_witness = this->add_variable(timestamp_delta); apply_aux_selectors(AUX_SELECTORS::RAM_TIMESTAMP_CHECK); - w_l.emplace_back(current.index_witness); - w_r.emplace_back(current.timestamp_witness); - w_o.emplace_back(timestamp_delta_witness); - w_4.emplace_back(this->zero_idx); + w_l().emplace_back(current.index_witness); + w_r().emplace_back(current.timestamp_witness); + w_o().emplace_back(timestamp_delta_witness); + w_4().emplace_back(this->zero_idx); ++this->num_gates; // store timestamp offsets for later. Need to apply range checks to them, but calling @@ -3329,26 +3329,26 @@ template bool UltraCircuitBuilder_:: FF w_4_value; FF w_4_index; // Get the values of selectors and wires and update tag products along the way - q_arith_value = q_arith[i]; - q_aux_value = q_aux[i]; - q_elliptic_value = q_elliptic[i]; - q_sort_value = q_sort[i]; - q_lookup_type_value = q_lookup_type[i]; - q_1_value = q_1[i]; - q_2_value = q_2[i]; - q_3_value = q_3[i]; - q_4_value = q_4[i]; - q_m_value = q_m[i]; - q_c_value = q_c[i]; - w_1_value = this->get_variable(w_l[i]); - update_tag_check_information(w_l[i], w_1_value); - w_2_value = this->get_variable(w_r[i]); - update_tag_check_information(w_r[i], w_2_value); - w_3_value = this->get_variable(w_o[i]); - update_tag_check_information(w_o[i], w_3_value); - w_4_value = this->get_variable(w_4[i]); + q_arith_value = q_arith()[i]; + q_aux_value = q_aux()[i]; + q_elliptic_value = q_elliptic()[i]; + q_sort_value = q_sort()[i]; + q_lookup_type_value = q_lookup_type()[i]; + q_1_value = q_1()[i]; + q_2_value = q_2()[i]; + q_3_value = q_3()[i]; + q_4_value = q_4()[i]; + q_m_value = q_m()[i]; + q_c_value = q_c()[i]; + w_1_value = this->get_variable(w_l()[i]); + update_tag_check_information(w_l()[i], w_1_value); + w_2_value = this->get_variable(w_r()[i]); + update_tag_check_information(w_r()[i], w_2_value); + w_3_value = this->get_variable(w_o()[i]); + update_tag_check_information(w_o()[i], w_3_value); + w_4_value = this->get_variable(w_4()[i]); // We need to wait before updating tag product for w_4 - w_4_index = w_4[i]; + w_4_index = w_4()[i]; // If we are touching a gate with memory access, we need to update the value of the 4th witness if (memory_read_record_gates.contains(i)) { @@ -3364,10 +3364,10 @@ template bool UltraCircuitBuilder_:: FF w_3_shifted_value; FF w_4_shifted_value; if (i < (this->num_gates - 1)) { - w_1_shifted_value = this->get_variable(w_l[i + 1]); - w_2_shifted_value = this->get_variable(w_r[i + 1]); - w_3_shifted_value = this->get_variable(w_o[i + 1]); - w_4_shifted_value = this->get_variable(w_4[i + 1]); + w_1_shifted_value = this->get_variable(w_l()[i + 1]); + w_2_shifted_value = this->get_variable(w_r()[i + 1]); + w_3_shifted_value = this->get_variable(w_o()[i + 1]); + w_4_shifted_value = this->get_variable(w_4()[i + 1]); } else { w_1_shifted_value = FF::zero(); w_2_shifted_value = FF::zero(); diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp index 9767781e72d..14c7f9cc2b9 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp @@ -344,21 +344,21 @@ class UltraCircuitBuilder_ : public CircuitBuilderBasecircuit_finalized = circuit_finalized; builder->num_gates = num_gates; builder->cached_partial_non_native_field_multiplications = cached_partial_non_native_field_multiplications; - builder->w_l.resize(num_gates); - builder->w_r.resize(num_gates); - builder->w_o.resize(num_gates); - builder->w_4.resize(num_gates); - builder->q_m.resize(num_gates); - builder->q_c.resize(num_gates); - builder->q_1.resize(num_gates); - builder->q_2.resize(num_gates); - builder->q_3.resize(num_gates); - builder->q_4.resize(num_gates); - builder->q_arith.resize(num_gates); - builder->q_sort.resize(num_gates); - builder->q_elliptic.resize(num_gates); - builder->q_aux.resize(num_gates); - builder->q_lookup_type.resize(num_gates); + builder->w_l().resize(num_gates); + builder->w_r().resize(num_gates); + builder->w_o().resize(num_gates); + builder->w_4().resize(num_gates); + builder->q_m().resize(num_gates); + builder->q_c().resize(num_gates); + builder->q_1().resize(num_gates); + builder->q_2().resize(num_gates); + builder->q_3().resize(num_gates); + builder->q_4().resize(num_gates); + builder->q_arith().resize(num_gates); + builder->q_sort().resize(num_gates); + builder->q_elliptic().resize(num_gates); + builder->q_aux().resize(num_gates); + builder->q_lookup_type().resize(num_gates); } /** * @brief Checks that the circuit state is the same as the stored circuit's one @@ -489,49 +489,49 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase>; using SelectorVector = std::vector>; - WireVector& w_l = std::get<0>(wires); - WireVector& w_r = std::get<1>(wires); - WireVector& w_o = std::get<2>(wires); - WireVector& w_4 = std::get<3>(wires); - - SelectorVector& q_m = selectors.q_m(); - SelectorVector& q_c = selectors.q_c(); - SelectorVector& q_1 = selectors.q_1(); - SelectorVector& q_2 = selectors.q_2(); - SelectorVector& q_3 = selectors.q_3(); - SelectorVector& q_4 = selectors.q_4(); - SelectorVector& q_arith = selectors.q_arith(); - SelectorVector& q_sort = selectors.q_sort(); - SelectorVector& q_elliptic = selectors.q_elliptic(); - SelectorVector& q_aux = selectors.q_aux(); - SelectorVector& q_lookup_type = selectors.q_lookup_type(); + WireVector& w_l() { return std::get<0>(wires); }; + WireVector& w_r() { return std::get<1>(wires); }; + WireVector& w_o() { return std::get<2>(wires); }; + WireVector& w_4() { return std::get<3>(wires); }; + + const WireVector& w_l() const { return std::get<0>(wires); }; + const WireVector& w_r() const { return std::get<1>(wires); }; + const WireVector& w_o() const { return std::get<2>(wires); }; + const WireVector& w_4() const { return std::get<3>(wires); }; + + SelectorVector& q_m() { return selectors.q_m(); }; + SelectorVector& q_c() { return selectors.q_c(); }; + SelectorVector& q_1() { return selectors.q_1(); }; + SelectorVector& q_2() { return selectors.q_2(); }; + SelectorVector& q_3() { return selectors.q_3(); }; + SelectorVector& q_4() { return selectors.q_4(); }; + SelectorVector& q_arith() { return selectors.q_arith(); }; + SelectorVector& q_sort() { return selectors.q_sort(); }; + SelectorVector& q_elliptic() { return selectors.q_elliptic(); }; + SelectorVector& q_aux() { return selectors.q_aux(); }; + SelectorVector& q_lookup_type() { return selectors.q_lookup_type(); }; + + const SelectorVector& q_c() const { return selectors.q_c(); }; + const SelectorVector& q_1() const { return selectors.q_1(); }; + const SelectorVector& q_2() const { return selectors.q_2(); }; + const SelectorVector& q_3() const { return selectors.q_3(); }; + const SelectorVector& q_4() const { return selectors.q_4(); }; + const SelectorVector& q_arith() const { return selectors.q_arith(); }; + const SelectorVector& q_sort() const { return selectors.q_sort(); }; + const SelectorVector& q_elliptic() const { return selectors.q_elliptic(); }; + const SelectorVector& q_aux() const { return selectors.q_aux(); }; + const SelectorVector& q_lookup_type() const { return selectors.q_lookup_type(); }; + const SelectorVector& q_m() const { return selectors.q_m(); }; // These are variables that we have used a gate on, to enforce that they are // equal to a defined value. @@ -632,14 +649,14 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase(size_hint) { selectors.reserve(size_hint); - w_l.reserve(size_hint); - w_r.reserve(size_hint); - w_o.reserve(size_hint); - w_4.reserve(size_hint); + w_l().reserve(size_hint); + w_r().reserve(size_hint); + w_o().reserve(size_hint); + w_4().reserve(size_hint); this->zero_idx = put_constant_variable(FF::zero()); this->tau.insert({ DUMMY_TAG, DUMMY_TAG }); // TODO(luke): explain this }; - UltraCircuitBuilder_(const UltraCircuitBuilder_& other) = delete; + UltraCircuitBuilder_(const UltraCircuitBuilder_& other) = default; UltraCircuitBuilder_(UltraCircuitBuilder_&& other) : CircuitBuilderBase(std::move(other)) { @@ -657,7 +674,7 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase::operator=(std::move(other)); diff --git a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp index 608727c812a..6af8c8ad259 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp @@ -11,6 +11,34 @@ namespace proof_system { using plookup::ColumnIdx; using plookup::MultiTableId; +TEST(ultra_circuit_constructor, copy_constructor) +{ + UltraCircuitBuilder circuit_constructor = UltraCircuitBuilder(); + + for (size_t i = 0; i < 16; ++i) { + for (size_t j = 0; j < 16; ++j) { + uint64_t left = static_cast(j); + uint64_t right = static_cast(i); + uint32_t left_idx = circuit_constructor.add_variable(fr(left)); + uint32_t right_idx = circuit_constructor.add_variable(fr(right)); + uint32_t result_idx = circuit_constructor.add_variable(fr(left ^ right)); + + uint32_t add_idx = + circuit_constructor.add_variable(fr(left) + fr(right) + circuit_constructor.get_variable(result_idx)); + circuit_constructor.create_big_add_gate( + { left_idx, right_idx, result_idx, add_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) }); + } + } + + bool result = circuit_constructor.check_circuit(); + EXPECT_EQ(result, true); + + UltraCircuitBuilder duplicate_circuit_constructor{ circuit_constructor }; + + EXPECT_EQ(duplicate_circuit_constructor.get_num_gates(), circuit_constructor.get_num_gates()); + EXPECT_TRUE(duplicate_circuit_constructor.check_circuit()); +} + TEST(ultra_circuit_constructor, create_gates_from_plookup_accumulators) { @@ -742,6 +770,12 @@ TEST(ultra_circuit_constructor, ram) EXPECT_EQ(result, true); EXPECT_TRUE(saved_state.is_same_state(circuit_constructor)); + + // Test the builder copy constructor for a circuit with RAM gates + UltraCircuitBuilder duplicate_circuit_constructor{ circuit_constructor }; + + EXPECT_EQ(duplicate_circuit_constructor.get_num_gates(), circuit_constructor.get_num_gates()); + EXPECT_TRUE(duplicate_circuit_constructor.check_circuit()); } TEST(ultra_circuit_constructor, range_checks_on_duplicates) diff --git a/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp index 8546d793f28..0b5788b8ff7 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp @@ -22,11 +22,11 @@ class ComposerLibTests : public ::testing::Test { TEST_F(ComposerLibTests, ConstructSelectors) { - circuit_constructor.q_m = { 1, 2, 3, 4 }; - circuit_constructor.q_1 = { 5, 6, 7, 8 }; - circuit_constructor.q_2 = { 9, 10, 11, 12 }; - circuit_constructor.q_3 = { 13, 14, 15, 16 }; - circuit_constructor.q_c = { 17, 18, 19, 20 }; + circuit_constructor.q_m() = { 1, 2, 3, 4 }; + circuit_constructor.q_1() = { 5, 6, 7, 8 }; + circuit_constructor.q_2() = { 9, 10, 11, 12 }; + circuit_constructor.q_3() = { 13, 14, 15, 16 }; + circuit_constructor.q_c() = { 17, 18, 19, 20 }; construct_selector_polynomials(circuit_constructor, &proving_key); size_t offset = 0; diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp index 9ed50192778..f7670c9c7da 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp @@ -183,7 +183,7 @@ template class stdlib_field : public testing::Test { auto gates_before = builder.get_num_gates(); uint64_t expected = fidget(builder); auto gates_after = builder.get_num_gates(); - EXPECT_EQ(builder.get_variable(builder.w_o[gates_after - 1]), fr(expected)); + EXPECT_EQ(builder.get_variable(builder.w_o()[gates_after - 1]), fr(expected)); info("Number of gates added", gates_after - gates_before); bool result = builder.check_circuit(); EXPECT_EQ(result, true); @@ -257,7 +257,7 @@ template class stdlib_field : public testing::Test { auto gates_before = builder.get_num_gates(); fibbonaci(builder); auto gates_after = builder.get_num_gates(); - EXPECT_EQ(builder.get_variable(builder.w_l[builder.get_num_gates() - 1]), fr(4181)); + EXPECT_EQ(builder.get_variable(builder.w_l()[builder.get_num_gates() - 1]), fr(4181)); EXPECT_EQ(gates_after - gates_before, 18UL); bool result = builder.check_circuit(); diff --git a/barretenberg/scripts/bindgen.sh b/barretenberg/scripts/bindgen.sh index 1a2034a213a..e3080a84824 100755 --- a/barretenberg/scripts/bindgen.sh +++ b/barretenberg/scripts/bindgen.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu #find ./cpp/src -type f -name "c_bind*.hpp" | ./scripts/decls_json.py > exports.json diff --git a/barretenberg/sol/scripts/init.sh b/barretenberg/sol/scripts/init.sh index 147adc9ae21..70868e37808 100755 --- a/barretenberg/sol/scripts/init.sh +++ b/barretenberg/sol/scripts/init.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PLONK_FLAVOUR="ultra" diff --git a/barretenberg/sol/scripts/run_fuzzer.sh b/barretenberg/sol/scripts/run_fuzzer.sh index e6e235a85e5..2c76ad1de43 100755 --- a/barretenberg/sol/scripts/run_fuzzer.sh +++ b/barretenberg/sol/scripts/run_fuzzer.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PLONK_FLAVOUR=${1:-"ultra"} CIRCUIT_FLAVOUR=${2:-"blake"} diff --git a/barretenberg/ts/bootstrap.sh b/barretenberg/ts/bootstrap.sh index 8b2d5b76c66..2f0fa19bb81 100755 --- a/barretenberg/ts/bootstrap.sh +++ b/barretenberg/ts/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd "$(dirname "$0")" diff --git a/barretenberg/ts/scripts/cjs_postprocess.sh b/barretenberg/ts/scripts/cjs_postprocess.sh index ccfcfc2d8a2..8a805bcdd44 100755 --- a/barretenberg/ts/scripts/cjs_postprocess.sh +++ b/barretenberg/ts/scripts/cjs_postprocess.sh @@ -11,4 +11,6 @@ DIR="./dest/node-cjs" for FILE in $(find "$DIR" -name "*.js"); do # Use sed to replace 'import.meta.url' with '""' sed -i.bak 's/import\.meta\.url/""/g' "$FILE" && rm "$FILE.bak" + # Use sed to remove any lines postfixed // POSTPROCESS ESM ONLY + sed -i.bak '/\/\/ POSTPROCESS ESM ONLY$/d' "$FILE" && rm "$FILE.bak" done \ No newline at end of file diff --git a/barretenberg/ts/scripts/run_tests b/barretenberg/ts/scripts/run_tests index ed93c9a8091..0f0d2895cec 100755 --- a/barretenberg/ts/scripts/run_tests +++ b/barretenberg/ts/scripts/run_tests @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -xe $(aws ecr get-login --region us-east-2 --no-include-email) 2> /dev/null diff --git a/barretenberg/ts/src/barretenberg/index.ts b/barretenberg/ts/src/barretenberg/index.ts index 6019b24e88f..6b00a9b752a 100644 --- a/barretenberg/ts/src/barretenberg/index.ts +++ b/barretenberg/ts/src/barretenberg/index.ts @@ -65,7 +65,7 @@ export class BarretenbergSync extends BarretenbergApiSync { static getSingleton() { if (!barretenbergSyncSingleton) { - throw new Error('Initialise first via initSingleton().'); + throw new Error('First call BarretenbergSync.initSingleton() on @aztec/bb.js module.'); } return barretenbergSyncSingleton; } @@ -75,10 +75,8 @@ export class BarretenbergSync extends BarretenbergApiSync { } } -// If we're loading this module in a test environment, just init the singleton immediately for convienience. -if (process.env.NODE_ENV === 'test') { - // Need to ignore for cjs build. - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - await BarretenbergSync.initSingleton(); -} +// If we're in ESM environment, use top level await. CJS users need to call it manually. +// Need to ignore for cjs build. +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +await BarretenbergSync.initSingleton(); // POSTPROCESS ESM ONLY diff --git a/bootstrap.sh b/bootstrap.sh index 5a953eee6b5..ac402f07baa 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Usage: # Bootstraps the repo. End to end tests should be runnable after a bootstrap: # ./bootstrap.sh diff --git a/bootstrap/bootstrap_test.sh b/bootstrap/bootstrap_test.sh index 805f0d0ef0e..8e05b2650ef 100755 --- a/bootstrap/bootstrap_test.sh +++ b/bootstrap/bootstrap_test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script takes the state of your current repository, and clones it inside of a docker container. # You likely don't have a fresh clone, and it's paramount that to test bootstrapping, we don't have any # intermediate build state in the context. diff --git a/bootstrap_docker.sh b/bootstrap_docker.sh index 6fc48b2b118..6d086d1d331 100755 --- a/bootstrap_docker.sh +++ b/bootstrap_docker.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script builds the projects listed in build_manifest.sh, terminating when it reaches PROJECT_NAME. # If run from within a project, it will build only that project, unless env var ONLY_TARGET=false. # diff --git a/build-system/.gitrepo b/build-system/.gitrepo index b1fdb9bd872..5b99662494d 100644 --- a/build-system/.gitrepo +++ b/build-system/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/build-system branch = master - commit = 4e1ea3fc2cdbbfdb97d21b0920eb681ede20c333 - parent = 379b5adc259ac69b01e61b852172cdfc87cf9350 + commit = 1f7b38d90be36c46b46ac52c5d63ce7a0d627ecf + parent = 9c5443651faaed3dcb9fae36727337a34ce5922b method = merge cmdver = 0.4.6 diff --git a/build-system/remote/bootstrap_build_instance.sh b/build-system/remote/bootstrap_build_instance.sh index 535bcdd7ce7..c911eb113b3 100644 --- a/build-system/remote/bootstrap_build_instance.sh +++ b/build-system/remote/bootstrap_build_instance.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update diff --git a/build-system/scripts/add_timestamps b/build-system/scripts/add_timestamps index 8b658925ba5..230d51fb626 100755 --- a/build-system/scripts/add_timestamps +++ b/build-system/scripts/add_timestamps @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash while IFS= read -r line; do printf '%(%Y-%m-%d %H:%M:%S)T %s\n' -1 "$line" done diff --git a/build-system/scripts/build b/build-system/scripts/build index 6906a275149..c82e6bde0a6 100755 --- a/build-system/scripts/build +++ b/build-system/scripts/build @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Builds a docker image and pushes it to it's repository. Leverages caches where possible. # Cached images include previous successfully built images (including multi-stages) built on this branch. diff --git a/build-system/scripts/build_local b/build-system/scripts/build_local index cdb9f3a60f3..0bc99f17d4a 100755 --- a/build-system/scripts/build_local +++ b/build-system/scripts/build_local @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Builds the PROJECTS in the given order. # Will terminate build at TARGET_PROJECT (if given). # Will only build TARGET_PROJECT if ONLY_TARGET given. diff --git a/build-system/scripts/calculate_content_hash b/build-system/scripts/calculate_content_hash index 28ae8ff2e62..7b7b68ade71 100755 --- a/build-system/scripts/calculate_content_hash +++ b/build-system/scripts/calculate_content_hash @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -euo pipefail diff --git a/build-system/scripts/calculate_image_tag b/build-system/scripts/calculate_image_tag index c273648287c..f2a3cea871f 100755 --- a/build-system/scripts/calculate_image_tag +++ b/build-system/scripts/calculate_image_tag @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Return a repositories build cache image tag based on content hash. # If the second argument is set: # It's used to suffix the tag with the given unique arch descriptor. diff --git a/build-system/scripts/calculate_image_uri b/build-system/scripts/calculate_image_uri index 8efd7ab4cdc..c107647434c 100755 --- a/build-system/scripts/calculate_image_uri +++ b/build-system/scripts/calculate_image_uri @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/calculate_rebuild_files b/build-system/scripts/calculate_rebuild_files index 9be1afd4912..49e07634955 100755 --- a/build-system/scripts/calculate_rebuild_files +++ b/build-system/scripts/calculate_rebuild_files @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/check_rebuild b/build-system/scripts/check_rebuild index 76f99c6540e..df2291065e4 100755 --- a/build-system/scripts/check_rebuild +++ b/build-system/scripts/check_rebuild @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # If this script fails (nonzero exit), then the caller should rebuild. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -euo pipefail diff --git a/build-system/scripts/clean_image_tags b/build-system/scripts/clean_image_tags index 832fdf4cda6..9c4557e68c6 100755 --- a/build-system/scripts/clean_image_tags +++ b/build-system/scripts/clean_image_tags @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -e @@ -20,7 +20,7 @@ fi # Collect all the commits ids in the repository and remove the remote for faster lookups # See warning in https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/ -git config fetch.recurseSubmodules false +git config fetch.recurseSubmodules false git fetch --filter=tree:0 origin ORIGIN_URL=$(git remote get-url origin) git remote remove origin @@ -29,7 +29,7 @@ git remote remove origin # This happens for all commits tagged for PRs that then get squashed and merged IFS=$'\n' for TAG in $IMAGE_TAGS; do - if [[ $TAG =~ ^cache-[0-9a-fA-F]+-builder$ ]]; then + if [[ $TAG =~ ^cache-[0-9a-fA-F]+-builder$ ]]; then TAG_COMMIT=$(echo "$TAG" | cut -d '-' -f 2) if git cat-file -e $TAG_COMMIT; then echo "Commit for $TAG found" diff --git a/build-system/scripts/cond_run_compose b/build-system/scripts/cond_run_compose index ee412325a6a..d1d14c6baca 100755 --- a/build-system/scripts/cond_run_compose +++ b/build-system/scripts/cond_run_compose @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/cond_run_container b/build-system/scripts/cond_run_container index ca8d67fc0bd..12badea45af 100755 --- a/build-system/scripts/cond_run_container +++ b/build-system/scripts/cond_run_container @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Conditionally runs a script if the REPOSITORY content hash has changed and we haven't had a successful run. # # Arguments are: diff --git a/build-system/scripts/cond_run_script b/build-system/scripts/cond_run_script index c1ada5f8cf2..1eb6b3695d9 100755 --- a/build-system/scripts/cond_run_script +++ b/build-system/scripts/cond_run_script @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Conditionally runs a script if the REPOSITORY content hash has changed and we haven't had a successful run. # # Arguments are: diff --git a/build-system/scripts/cond_spot_run_build b/build-system/scripts/cond_spot_run_build index 3333e5dec7c..a2e2663de89 100755 --- a/build-system/scripts/cond_spot_run_build +++ b/build-system/scripts/cond_spot_run_build @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -euo pipefail diff --git a/build-system/scripts/cond_spot_run_compose b/build-system/scripts/cond_spot_run_compose index 51a4529471a..56da3e3da4e 100755 --- a/build-system/scripts/cond_spot_run_compose +++ b/build-system/scripts/cond_spot_run_compose @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -euo pipefail diff --git a/build-system/scripts/cond_spot_run_container b/build-system/scripts/cond_spot_run_container index 48876a65f3b..5b2ebc71f32 100755 --- a/build-system/scripts/cond_spot_run_container +++ b/build-system/scripts/cond_spot_run_container @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/cond_spot_run_script b/build-system/scripts/cond_spot_run_script index 4b1832127ac..23a678fcd32 100755 --- a/build-system/scripts/cond_spot_run_script +++ b/build-system/scripts/cond_spot_run_script @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Conditionally runs a script on a remote spot instance if the REPOSITORY content hash has changed and we haven't had a # successful run. # The TAG_POSTFIX is used by cond_spot_run_test whereby we use an image tag postfixed with JOB_NAME to identifify if @@ -19,7 +19,12 @@ CPUS=$2 ARCH=$3 shift 3 -BASE_TAG=$(calculate_image_tag $REPOSITORY) +MULTIARCH=$(query_manifest multiarch $REPOSITORY) +if [ "$MULTIARCH" == "host" ]; then + BASE_TAG=$(calculate_image_tag $REPOSITORY $ARCH) +else + BASE_TAG=$(calculate_image_tag $REPOSITORY) +fi SUCCESS_TAG=$BASE_TAG if [ -n "${TAG_POSTFIX:-}" ]; then diff --git a/build-system/scripts/cond_spot_run_test b/build-system/scripts/cond_spot_run_test index e8b8f71358d..cc48ffc742e 100755 --- a/build-system/scripts/cond_spot_run_test +++ b/build-system/scripts/cond_spot_run_test @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -euo pipefail diff --git a/build-system/scripts/create_ecr_manifest b/build-system/scripts/create_ecr_manifest index 5bda420039d..fcc96d7651e 100755 --- a/build-system/scripts/create_ecr_manifest +++ b/build-system/scripts/create_ecr_manifest @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script: # 1. Logs into ECR and ensures we have the given repository # 2. Computes the image uri of the cached images for the given repository given the list of architectures diff --git a/build-system/scripts/deploy b/build-system/scripts/deploy index ca43d5b9cfb..a158175c414 100755 --- a/build-system/scripts/deploy +++ b/build-system/scripts/deploy @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_dockerhub b/build-system/scripts/deploy_dockerhub index 606e0952b5d..b8d925b0711 100755 --- a/build-system/scripts/deploy_dockerhub +++ b/build-system/scripts/deploy_dockerhub @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_ecr b/build-system/scripts/deploy_ecr index 3be534694c7..c156f99e71e 100755 --- a/build-system/scripts/deploy_ecr +++ b/build-system/scripts/deploy_ecr @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_global b/build-system/scripts/deploy_global index 28b70a28619..2267474706f 100755 --- a/build-system/scripts/deploy_global +++ b/build-system/scripts/deploy_global @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Deployment script for global service (e.g. company website and metrics). [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_npm b/build-system/scripts/deploy_npm index a35d68c4650..16df5a156d0 100755 --- a/build-system/scripts/deploy_npm +++ b/build-system/scripts/deploy_npm @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_s3 b/build-system/scripts/deploy_s3 index caaa4d00bd9..87acbf004d9 100755 --- a/build-system/scripts/deploy_s3 +++ b/build-system/scripts/deploy_s3 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_service b/build-system/scripts/deploy_service index b014ca0d823..83c45128141 100755 --- a/build-system/scripts/deploy_service +++ b/build-system/scripts/deploy_service @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/deploy_terraform b/build-system/scripts/deploy_terraform index ce2231853aa..b81c4d3f4b2 100755 --- a/build-system/scripts/deploy_terraform +++ b/build-system/scripts/deploy_terraform @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/dockerhub_login b/build-system/scripts/dockerhub_login index dae523fb43b..50a2068377b 100755 --- a/build-system/scripts/dockerhub_login +++ b/build-system/scripts/dockerhub_login @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Retries up to 3 times with 10 second intervals for i in $(seq 1 3); do diff --git a/build-system/scripts/ecr_login b/build-system/scripts/ecr_login index 54a8e6d36da..331b49d4024 100755 --- a/build-system/scripts/ecr_login +++ b/build-system/scripts/ecr_login @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu REGION=${1:-$ECR_REGION} # Retries up to 3 times with 10 second intervals diff --git a/build-system/scripts/ensure_repo b/build-system/scripts/ensure_repo index b767976354f..b71c0fabb2f 100755 --- a/build-system/scripts/ensure_repo +++ b/build-system/scripts/ensure_repo @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Logs the shell into the ECR instance at the given region, establishes if the given repository exists, creates it if it # doesn't, and re-applies thie lifecycle policy (determines when images should be automatically deleted) if it does. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace diff --git a/build-system/scripts/ensure_terraform b/build-system/scripts/ensure_terraform index d7444aa4e4c..ce53dba1b31 100755 --- a/build-system/scripts/ensure_terraform +++ b/build-system/scripts/ensure_terraform @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Downloads and installs `terraform` if it's not installed. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/extract_repo b/build-system/scripts/extract_repo index c2579b5a46f..6bdae1027f9 100755 --- a/build-system/scripts/extract_repo +++ b/build-system/scripts/extract_repo @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Given a repository, extracts the builds entire /usr/src dir to the given path. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/extract_tag_version b/build-system/scripts/extract_tag_version index d142458104d..c0f7c3fd165 100755 --- a/build-system/scripts/extract_tag_version +++ b/build-system/scripts/extract_tag_version @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script takes a repository name as variable, # then checks if the commit tag variable (if any) # is a valid semver & echoes that valid semver. @@ -28,7 +28,7 @@ if [[ "$COMMIT_TAG" == *"/"* ]]; then COMMIT_TAG_VERSION="${COMMIT_TAG#*/}" echo "Tag was made for: $REPO_NAME" >&2 echo "Version: $COMMIT_TAG_VERSION" >&2 - + # Check if REPO_NAME is equal to REPOSITORY if [[ "$REPO_NAME" != "$REPOSITORY" ]]; then echo "REPO_NAME ($REPO_NAME) does not match REPOSITORY ($REPOSITORY). Exiting..." >&2 diff --git a/build-system/scripts/image_exists b/build-system/scripts/image_exists index 0a4bee54d7a..0ad9d90ae69 100755 --- a/build-system/scripts/image_exists +++ b/build-system/scripts/image_exists @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Returns true if the given image exists in the current ECR. aws ecr describe-images --region=$ECR_REGION --repository-name=$1 --image-ids=imageTag=$2 > /dev/null 2>&1 diff --git a/build-system/scripts/init_submodules b/build-system/scripts/init_submodules index a4a9cd62db6..0b89b089866 100755 --- a/build-system/scripts/init_submodules +++ b/build-system/scripts/init_submodules @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # For a given repository, init any required submodules. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -euo pipefail diff --git a/build-system/scripts/query_manifest b/build-system/scripts/query_manifest index 1fee0ee5759..a6e84650331 100755 --- a/build-system/scripts/query_manifest +++ b/build-system/scripts/query_manifest @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu CMD=$1 diff --git a/build-system/scripts/remote_run_script b/build-system/scripts/remote_run_script index e9ef84d723d..8e1d8adf38c 100755 --- a/build-system/scripts/remote_run_script +++ b/build-system/scripts/remote_run_script @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copies the runner script to the remote instance, runs it giving it script and args to run. # The runner script checks out the repository first and runs setup-env. # diff --git a/build-system/scripts/remote_runner b/build-system/scripts/remote_runner index ce1a567a198..6283050283c 100755 --- a/build-system/scripts/remote_runner +++ b/build-system/scripts/remote_runner @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/request_spot b/build-system/scripts/request_spot index 35c4d650bac..3d669fed1df 100755 --- a/build-system/scripts/request_spot +++ b/build-system/scripts/request_spot @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/build-system/scripts/setup_env b/build-system/scripts/setup_env index 8e4058a1c53..3486e5f8653 100755 --- a/build-system/scripts/setup_env +++ b/build-system/scripts/setup_env @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script sets up the global build environment. This should be called before any other build scripts, # as the other build scripts assume these global variables are set. The global variables are written to # the file in $BASH_ENV, which means that any new bash shells launched within the lifetime of the machine diff --git a/build-system/scripts/should_deploy b/build-system/scripts/should_deploy index 53f295b191f..283191f51f3 100755 --- a/build-system/scripts/should_deploy +++ b/build-system/scripts/should_deploy @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Returns success if we are expected to do a deployment. # Right now, that's only if we're master. set -eu diff --git a/build-system/scripts/should_release b/build-system/scripts/should_release index 5473fc6da76..701b8a375db 100755 --- a/build-system/scripts/should_release +++ b/build-system/scripts/should_release @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Returns true if we are expected to proceed with a release job. # Specifically if we have a commit tag, are master, or are being forced to release. # This script should be used at the start of all release steps to early out PR runs. diff --git a/build-system/scripts/spot_run_script b/build-system/scripts/spot_run_script index 7a2377973d5..d5e77e35712 100755 --- a/build-system/scripts/spot_run_script +++ b/build-system/scripts/spot_run_script @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Runs a test script on a remote spot instance. Arguments are: # 1. NAME: Used to identify spot jobs. # 2. CPUS: Number of cpus on spot request. diff --git a/build-system/scripts/tag_remote_image b/build-system/scripts/tag_remote_image index bc7675b237c..0bb9e2a390f 100755 --- a/build-system/scripts/tag_remote_image +++ b/build-system/scripts/tag_remote_image @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu @@ -34,7 +34,7 @@ if [ "$EXISTING_TAG_MANIFEST" != "$NEW_TAG_MANIFEST" ]; then --image-tag $NEW_TAG \ --image-manifest "$EXISTING_TAG_MANIFEST" 2>&1) TAG_EXIT_CODE=$? - + # If we failed to tag due to too many tags on this image, then clean some of them up and try again if [ $TAG_EXIT_CODE -ne 0 ] && $(echo $TAG_RESULT | grep -q LimitExceededException); then echo "Failed to tag due to limit exceeded. Starting tag cleanup." diff --git a/build-system/scripts/untag_remote_image b/build-system/scripts/untag_remote_image index f79fee729bc..aa913c1200b 100755 --- a/build-system/scripts/untag_remote_image +++ b/build-system/scripts/untag_remote_image @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash REPOSITORY=$1 TAG=$2 aws ecr batch-delete-image --region=$ECR_REGION --repository-name $REPOSITORY --image-ids imageTag=$2 > /dev/null \ No newline at end of file diff --git a/build-system/scripts/upload_logs_to_s3 b/build-system/scripts/upload_logs_to_s3 index ede934edae5..25c7fe2e50a 100755 --- a/build-system/scripts/upload_logs_to_s3 +++ b/build-system/scripts/upload_logs_to_s3 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Uploads to S3 the contents of the log file mounted on the end-to-end container, # which contains log entries with an associated event and metrics for it. diff --git a/build-system/start_interactive b/build-system/start_interactive index 2ed1f2df13a..64e24499782 100755 --- a/build-system/start_interactive +++ b/build-system/start_interactive @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Starts an interactive shell with the build system initialised. # Good for playing around with build system on development machines. diff --git a/build_manifest.yml b/build_manifest.yml index 588c3c70a93..43bce1a4071 100644 --- a/build_manifest.yml +++ b/build_manifest.yml @@ -216,4 +216,4 @@ docs: yellow-paper: buildDir: yellow-paper rebuildPatterns: - - ^yellow-paper/ \ No newline at end of file + - ^yellow-paper/ diff --git a/circuits/cpp/bootstrap.sh b/circuits/cpp/bootstrap.sh index 6a64d541b7b..440bf1e44c6 100755 --- a/circuits/cpp/bootstrap.sh +++ b/circuits/cpp/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd "$(dirname "$0")" diff --git a/circuits/cpp/format.sh b/circuits/cpp/format.sh index e12e84ab27a..54047bd6def 100755 --- a/circuits/cpp/format.sh +++ b/circuits/cpp/format.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu if [ "${1:-}" == "staged" ]; then diff --git a/circuits/cpp/scripts/build_run_tests_docker_local b/circuits/cpp/scripts/build_run_tests_docker_local index 19eb1784f71..f861fecbfa8 100755 --- a/circuits/cpp/scripts/build_run_tests_docker_local +++ b/circuits/cpp/scripts/build_run_tests_docker_local @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/circuits/cpp/scripts/collect_coverage_information.sh b/circuits/cpp/scripts/collect_coverage_information.sh index cac9393a9b6..45ad2764a22 100755 --- a/circuits/cpp/scripts/collect_coverage_information.sh +++ b/circuits/cpp/scripts/collect_coverage_information.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Check that the correct number of args have been provided if [ $# -ne 2 ]; then @@ -67,7 +67,7 @@ if [ ${#non_empty_profiles[@]} -gt 1 ]; then additional_objects+="-object $WORKING_DIRECTORY/bin/${non_empty_profile_base}_tests " done object_string=${additional_objects#"-object"} - + # Output the coverage report into `all_tests_coverage_report` folder rm -rf "$WORKING_DIRECTORY/all_tests_coverage_report" mkdir "$WORKING_DIRECTORY/all_tests_coverage_report" diff --git a/circuits/cpp/scripts/run_tests b/circuits/cpp/scripts/run_tests index dd7d7e21388..62fbd90153b 100755 --- a/circuits/cpp/scripts/run_tests +++ b/circuits/cpp/scripts/run_tests @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/circuits/cpp/scripts/run_tests_local b/circuits/cpp/scripts/run_tests_local index d65ff5f358f..4c12807414e 100755 --- a/circuits/cpp/scripts/run_tests_local +++ b/circuits/cpp/scripts/run_tests_local @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/circuits/cpp/scripts/tidy.sh b/circuits/cpp/scripts/tidy.sh index 3283fb89b62..7faab2658c6 100755 --- a/circuits/cpp/scripts/tidy.sh +++ b/circuits/cpp/scripts/tidy.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Run clang-tidy on all C++ source files diff --git a/docs/deploy_netlify.sh b/docs/deploy_netlify.sh index 82b447119f6..24c7c1f3845 100755 --- a/docs/deploy_netlify.sh +++ b/docs/deploy_netlify.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/docs/scripts/build.sh b/docs/scripts/build.sh index e06ae5f2aa9..eb63a05887d 100755 --- a/docs/scripts/build.sh +++ b/docs/scripts/build.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eo pipefail # Helper function for building packages in yarn project @@ -10,7 +10,7 @@ build_package() { (cd "yarn-project/$package_name" && $build_command) } -# Build script. If run on Netlify, first it needs to compile all yarn-projects +# Build script. If run on Netlify, first it needs to compile all yarn-projects # that are involved in typedoc in order to generate their type information. if [ -n "$NETLIFY" ]; then # Move to project root diff --git a/iac/mainnet-fork/scripts/run_nginx_anvil.sh b/iac/mainnet-fork/scripts/run_nginx_anvil.sh index 4b701f13256..38788424ed7 100755 --- a/iac/mainnet-fork/scripts/run_nginx_anvil.sh +++ b/iac/mainnet-fork/scripts/run_nginx_anvil.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eum pipefail diff --git a/iac/mainnet-fork/scripts/wait_for_fork b/iac/mainnet-fork/scripts/wait_for_fork index 326582c25af..831e06723e2 100755 --- a/iac/mainnet-fork/scripts/wait_for_fork +++ b/iac/mainnet-fork/scripts/wait_for_fork @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e # When destroying and applying mainnet fork terraform, it may not be diff --git a/l1-contracts/bootstrap.sh b/l1-contracts/bootstrap.sh index db2a71b8c75..f776b6072dc 100755 --- a/l1-contracts/bootstrap.sh +++ b/l1-contracts/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd "$(dirname "$0")" diff --git a/l1-contracts/scripts/ci_deploy_contracts.sh b/l1-contracts/scripts/ci_deploy_contracts.sh index 128a1702f31..aaedb6f2f7d 100755 --- a/l1-contracts/scripts/ci_deploy_contracts.sh +++ b/l1-contracts/scripts/ci_deploy_contracts.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash export ETHEREUM_HOST=https://$DEPLOY_TAG-mainnet-fork.aztec.network:8545/$FORK_API_KEY diff --git a/l1-contracts/scripts/deploy_contracts.sh b/l1-contracts/scripts/deploy_contracts.sh index 6223a0719a9..0bd743e1567 100755 --- a/l1-contracts/scripts/deploy_contracts.sh +++ b/l1-contracts/scripts/deploy_contracts.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Sets up defaults then runs the E2E Setup script to perform contract deployments diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index c3ad7b227a5..136313fb2d1 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -81,7 +81,7 @@ library Constants { uint256 internal constant EMPTY_NULLIFIED_COMMITMENT = 1000000; uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 144; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; uint256 internal constant COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 4096; uint256 internal constant PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/noir/.github/actions/docs/build-status/script.sh b/noir/.github/actions/docs/build-status/script.sh index 0b282557cf2..2e86de6c173 100755 --- a/noir/.github/actions/docs/build-status/script.sh +++ b/noir/.github/actions/docs/build-status/script.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash BRANCH_NAME=$(echo "$BRANCH_NAME" | sed -e "s#refs/[^/]*/##") DEPLOY_STATUS=$(curl -X GET "https://api.netlify.com/api/v1/sites/$SITE_ID/deploys?branch=$BRANCH_NAME" | jq -r '.[] | select(.created_at != null) | .state' | head -1) diff --git a/noir/Cargo.lock b/noir/Cargo.lock index 43958d2f1cb..3bab28cd1c5 100644 --- a/noir/Cargo.lock +++ b/noir/Cargo.lock @@ -1979,7 +1979,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2227,9 +2227,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libm" @@ -2371,9 +2371,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -2867,9 +2867,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3960,6 +3960,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -4257,27 +4267,26 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", diff --git a/noir/Dockerfile b/noir/Dockerfile index ac818cb8bd2..7ba47b04e31 100644 --- a/noir/Dockerfile +++ b/noir/Dockerfile @@ -1,15 +1,11 @@ -FROM rust:alpine3.17 -RUN apk update \ - && apk upgrade \ - && apk add --no-cache \ - build-base \ - bash +FROM rust:bookworm WORKDIR /usr/src/noir COPY . . RUN ./scripts/bootstrap_native.sh -# When running the container, mount the current working directory to /project. -FROM alpine:3.17 +# When running the container, mount the users home directory to /root +FROM ubuntu:lunar +# Install Tini as nargo doesn't handle signals properly. +RUN apt-get update && apt-get install -y tini && rm -rf /var/lib/apt/lists/* && apt-get clean COPY --from=0 /usr/src/noir/target/release/nargo /usr/src/noir/target/release/nargo -WORKDIR /project -ENTRYPOINT ["/usr/src/noir/target/release/nargo"] \ No newline at end of file +ENTRYPOINT ["/usr/bin/tini", "--", "/usr/src/noir/target/release/nargo"] \ No newline at end of file diff --git a/noir/bootstrap.sh b/noir/bootstrap.sh index bf672ac0ad2..5ebe7ade090 100755 --- a/noir/bootstrap.sh +++ b/noir/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd $(dirname "$0") diff --git a/noir/compiler/integration-tests/scripts/codegen-verifiers.sh b/noir/compiler/integration-tests/scripts/codegen-verifiers.sh index 13667038728..4518141fc13 100644 --- a/noir/compiler/integration-tests/scripts/codegen-verifiers.sh +++ b/noir/compiler/integration-tests/scripts/codegen-verifiers.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash self_path=$(dirname "$(readlink -f "$0")") diff --git a/noir/scripts/bootstrap_native.sh b/noir/scripts/bootstrap_native.sh index 693a9d9678e..fb361c96f57 100755 --- a/noir/scripts/bootstrap_native.sh +++ b/noir/scripts/bootstrap_native.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd $(dirname "$0")/.. @@ -13,4 +13,8 @@ else fi # Build native. -cargo build --features="noirc_driver/aztec" --release +if [ -n "${DEBUG:-}" ]; then + cargo build --features="noirc_driver/aztec" +else + cargo build --features="noirc_driver/aztec" --release +fi diff --git a/noir/scripts/bootstrap_packages.sh b/noir/scripts/bootstrap_packages.sh index 5fce2675037..1363acf51a6 100755 --- a/noir/scripts/bootstrap_packages.sh +++ b/noir/scripts/bootstrap_packages.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd $(dirname "$0")/.. diff --git a/noir/scripts/install_wasm-bindgen.sh b/noir/scripts/install_wasm-bindgen.sh index 5e9f9127506..c6e85bac50b 100755 --- a/noir/scripts/install_wasm-bindgen.sh +++ b/noir/scripts/install_wasm-bindgen.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd $(dirname "$0")/.. diff --git a/noir/test_programs/gates_report.sh b/noir/test_programs/gates_report.sh index e06e6812e9d..4192c581376 100755 --- a/noir/test_programs/gates_report.sh +++ b/noir/test_programs/gates_report.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e # These tests are incompatible with gas reporting diff --git a/noir/test_programs/rebuild.sh b/noir/test_programs/rebuild.sh index dfc3dc5c967..fd3e4478d62 100755 --- a/noir/test_programs/rebuild.sh +++ b/noir/test_programs/rebuild.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e process_dir() { diff --git a/noir/tooling/nargo_cli/src/cli/lsp_cmd.rs b/noir/tooling/nargo_cli/src/cli/lsp_cmd.rs index a41bb877991..e1f0a9dd8b9 100644 --- a/noir/tooling/nargo_cli/src/cli/lsp_cmd.rs +++ b/noir/tooling/nargo_cli/src/cli/lsp_cmd.rs @@ -1,5 +1,5 @@ use async_lsp::{ - client_monitor::ClientProcessMonitorLayer, concurrency::ConcurrencyLayer, + concurrency::ConcurrencyLayer, panic::CatchUnwindLayer, server::LifecycleLayer, tracing::TracingLayer, }; use clap::Args; @@ -39,10 +39,11 @@ pub(crate) fn run( .layer(LifecycleLayer::default()) .layer(CatchUnwindLayer::default()) .layer(ConcurrencyLayer::default()) - .layer(ClientProcessMonitorLayer::new(client)) .service(router) }); + eprintln!("LSP starting..."); + // Prefer truly asynchronous piped stdin/stdout without blocking tasks. #[cfg(unix)] let (stdin, stdout) = ( diff --git a/scripts/ci/assemble_e2e_benchmark.sh b/scripts/ci/assemble_e2e_benchmark.sh index 7456d4e1cbc..4a7b1bbe015 100755 --- a/scripts/ci/assemble_e2e_benchmark.sh +++ b/scripts/ci/assemble_e2e_benchmark.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Grabs the log files uploaded in yarn-project/end-to-end/scripts/upload_logs_to_s3.sh # that contain representative benchmarks, extracts whatever metrics are interesting, # and assembles a single file that shows the current state of the repository. @@ -70,7 +70,7 @@ if [ -n "${BENCHMARK_LATEST_FILE:-}" ]; then aws s3 cp $BENCHMARK_FILE_JSON "s3://${BUCKET_NAME}/${BENCHMARK_LATEST_FILE}" fi -# If on a pull request, get the data from the most recent commit on master where it's available, +# If on a pull request, get the data from the most recent commit on master where it's available, # generate a markdown comment, and post it on the pull request if [ -n "${CIRCLE_PULL_REQUEST:-}" ]; then MASTER_COMMIT_HASH=$(curl -s "https://api.github.com/repos/AztecProtocol/aztec-packages/pulls/${CIRCLE_PULL_REQUEST##*/}" | jq -r '.base.sha') @@ -88,11 +88,9 @@ if [ -n "${CIRCLE_PULL_REQUEST:-}" ]; then done set -e - if [ -z "${BASE_COMMIT_HASH:-}" ]; then + if [ -z "${BASE_COMMIT_HASH:-}" ]; then echo "No base commit data found" fi (yarn-project/scripts/run_script.sh workspace @aztec/scripts bench-comment && echo "commented on pr $CIRCLE_PULL_REQUEST") || echo "failed commenting on pr" fi - - diff --git a/scripts/ci/store_test_benchmark_logs b/scripts/ci/store_test_benchmark_logs index 3554aa746d2..c9ae07fc96a 100755 --- a/scripts/ci/store_test_benchmark_logs +++ b/scripts/ci/store_test_benchmark_logs @@ -1,5 +1,5 @@ -#!/bin/bash -# Script for storing barretenberg benchmark results. +#!/usr/bin/env bash +# Script for storing barretenberg benchmark results. # Uploads results to the AztecProtocol/benchmark-archive repository. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace @@ -36,7 +36,7 @@ cat /tmp/csv/new.csv \ # If there actually were any logs, update the information in the benchmark repository if [ -s /tmp/csv/trimmed.csv ]; then cd /tmp - + git clone --depth 1 https://$AZTEC_GITHUB_TOKEN:@github.com/AztecProtocol/benchmark-archive cd benchmark-archive diff --git a/scripts/git-subrepo/note/init-test b/scripts/git-subrepo/note/init-test index a20854de88a..810dae14a4d 100755 --- a/scripts/git-subrepo/note/init-test +++ b/scripts/git-subrepo/note/init-test @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -ex cat $0 # Show this script in the output diff --git a/scripts/git-subrepo/note/recreate-rebase-conflict.sh b/scripts/git-subrepo/note/recreate-rebase-conflict.sh index 8e1103e575d..6dc0a51e300 100644 --- a/scripts/git-subrepo/note/recreate-rebase-conflict.sh +++ b/scripts/git-subrepo/note/recreate-rebase-conflict.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu set -x diff --git a/scripts/git-subrepo/note/subtree-rebase-fail-example/test.bash b/scripts/git-subrepo/note/subtree-rebase-fail-example/test.bash index df8b818cee6..9118236848a 100755 --- a/scripts/git-subrepo/note/subtree-rebase-fail-example/test.bash +++ b/scripts/git-subrepo/note/subtree-rebase-fail-example/test.bash @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -ex @@ -24,6 +24,6 @@ git clone repo1 repo3 git subrepo clone ../repo2 subrepo bash git rebase -i HEAD^ - git log -p + git log -p ls ) diff --git a/scripts/git-subrepo/note/test-subrepo-push.sh b/scripts/git-subrepo/note/test-subrepo-push.sh index afceb5efa92..13b76e47fc8 100644 --- a/scripts/git-subrepo/note/test-subrepo-push.sh +++ b/scripts/git-subrepo/note/test-subrepo-push.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -ex diff --git a/scripts/git-subrepo/note/test.sh b/scripts/git-subrepo/note/test.sh index fae278795d1..d27548f0937 100755 --- a/scripts/git-subrepo/note/test.sh +++ b/scripts/git-subrepo/note/test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -x diff --git a/scripts/git_subrepo.sh b/scripts/git_subrepo.sh index df9743a2bd5..969789cdcc8 100755 --- a/scripts/git_subrepo.sh +++ b/scripts/git_subrepo.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu SCRIPT_DIR=$(dirname "$(realpath "$0")") @@ -11,10 +11,10 @@ fi # git subrepo is quite nice, but has one flaw in our workflow: # We frequently squash commits in PRs, and we might update the .gitrepo file -# with a parent commit that later does not exist. +# with a parent commit that later does not exist. # A backup heuristic is used to later find the squashed commit's parent -# using the .gitrepo file's git history. This might be brittle -# in the face of e.g. a .gitrepo whitespace change, but it's a fallback, +# using the .gitrepo file's git history. This might be brittle +# in the face of e.g. a .gitrepo whitespace change, but it's a fallback, # we only have this issue in master, and the file should only be edited # generally by subrepo commands. SUBREPO_PATH="${2:-}" diff --git a/scripts/migrate_barretenberg_branch.sh b/scripts/migrate_barretenberg_branch.sh index 8cf396867c3..36c128a6232 100755 --- a/scripts/migrate_barretenberg_branch.sh +++ b/scripts/migrate_barretenberg_branch.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu # Usage: ./this.sh diff --git a/scripts/tmux-splits b/scripts/tmux-splits index 296cdb36632..6b1e28f8559 100755 --- a/scripts/tmux-splits +++ b/scripts/tmux-splits @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Launches tmux with 1 window that has 2 panes running, from top to bottom: # - aztec.js # - a shell in end-to-end. If a test is given as an argument, the test will be run here automatically. diff --git a/yarn-project/Dockerfile b/yarn-project/Dockerfile index 257d93af911..696c60fbe1c 100644 --- a/yarn-project/Dockerfile +++ b/yarn-project/Dockerfile @@ -6,8 +6,6 @@ # Any subsequent build steps needed to support downstream containers should be done in those containers build files. FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base as builder -RUN apk add bash perl - # Copy in the entire workspace. COPY . . diff --git a/yarn-project/Dockerfile.prod b/yarn-project/Dockerfile.prod index 95e4479137b..16f65db4740 100644 --- a/yarn-project/Dockerfile.prod +++ b/yarn-project/Dockerfile.prod @@ -3,8 +3,8 @@ FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project AS yarn-project # Need new arch specific image. -FROM node:18.19.0-alpine AS builder -RUN apk add bash jq --no-cache +FROM node:18.19.0 AS builder +RUN apt update && apt install -y jq && rm -rf /var/lib/apt/lists/* && apt-get clean COPY --from=yarn-project /usr/src /usr/src WORKDIR /usr/src/yarn-project ARG COMMIT_TAG="" @@ -18,5 +18,32 @@ RUN yarn workspaces focus @aztec/cli @aztec/aztec-sandbox @aztec/aztec-faucet -- RUN rm -rf /usr/src/noir/target # Create fresh minimal size image. -FROM node:18.19.0-alpine -COPY --from=builder /usr/src /usr/src \ No newline at end of file +# Installs our specific version of node, stripping out the unnecessary. +# We could probably just apt install nodejs, but it's both a different version, and seemingly a bit slower. +# We could also use distroless, to get us about 20mb off, but meh. It's actually useful to shell into containers. +#FROM gcr.io/distroless/nodejs18-debian12 +FROM ubuntu:lunar +# RUN apt update && apt install -y nodejs && rm -rf /var/lib/apt/lists/* && apt-get clean +RUN apt update && apt install -y curl && rm -rf /var/lib/apt/lists/* && apt-get clean +ENV NODE_VERSION=18.19.0 +RUN ARCH= && \ + dpkgArch="$(dpkg --print-architecture)" && \ + case "${dpkgArch##*-}" in \ + amd64) ARCH='x64';; \ + arm64) ARCH='arm64';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac && \ + curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.gz" && \ + tar zxf "node-v$NODE_VERSION-linux-$ARCH.tar.gz" -C /usr --strip-components=1 --no-same-owner \ + --exclude "*/share/*" \ + --exclude "*/bin/corepack" \ + --exclude "*/bin/npx" \ + --exclude "*/bin/npm" \ + --exclude "*/corepack/*" \ + --exclude "*/npm/man/*" \ + --exclude "*/npm/docs/*" \ + --exclude "*/include/*" && \ + rm "node-v$NODE_VERSION-linux-$ARCH.tar.gz" && \ + node --version +COPY --from=builder /usr/src /usr/src +ENTRYPOINT ["/usr/bin/node"] \ No newline at end of file diff --git a/yarn-project/acir-simulator/src/acvm/oracle/oracle.ts b/yarn-project/acir-simulator/src/acvm/oracle/oracle.ts index 87a32f072c0..5b93133e406 100644 --- a/yarn-project/acir-simulator/src/acvm/oracle/oracle.ts +++ b/yarn-project/acir-simulator/src/acvm/oracle/oracle.ts @@ -119,6 +119,17 @@ export class Oracle { return blockHeader.toArray().map(toACVMField); } + // TODO(#3564) - Nuke this oracle and inject the number directly to context + async getNullifierRootBlockNumber([nullifierTreeRoot]: ACVMField[]): Promise { + const parsedRoot = fromACVMField(nullifierTreeRoot); + + const blockNumber = await this.typedOracle.getNullifierRootBlockNumber(parsedRoot); + if (!blockNumber) { + throw new Error(`Block header not found for block ${parsedRoot}.`); + } + return toACVMField(blockNumber); + } + async getAuthWitness([messageHash]: ACVMField[]): Promise { const messageHashField = fromACVMField(messageHash); const witness = await this.typedOracle.getAuthWitness(messageHashField); diff --git a/yarn-project/acir-simulator/src/acvm/oracle/typed_oracle.ts b/yarn-project/acir-simulator/src/acvm/oracle/typed_oracle.ts index 7013689a8ca..556da1bebf8 100644 --- a/yarn-project/acir-simulator/src/acvm/oracle/typed_oracle.ts +++ b/yarn-project/acir-simulator/src/acvm/oracle/typed_oracle.ts @@ -106,6 +106,11 @@ export abstract class TypedOracle { throw new Error('Not available.'); } + // TODO(#3564) - Nuke this oracle and inject the number directly to context + getNullifierRootBlockNumber(_nullifierTreeRoot: Fr): Promise { + throw new Error('Not available.'); + } + getCompleteAddress(_address: AztecAddress): Promise { throw new Error('Not available.'); } diff --git a/yarn-project/acir-simulator/src/client/db_oracle.ts b/yarn-project/acir-simulator/src/client/db_oracle.ts index 6ed7a6a8e6a..5d866dac224 100644 --- a/yarn-project/acir-simulator/src/client/db_oracle.ts +++ b/yarn-project/acir-simulator/src/client/db_oracle.ts @@ -159,4 +159,10 @@ export interface DBOracle extends CommitmentsDB { * @returns - The block corresponding to the given block number. Undefined if it does not exist. */ getBlock(blockNumber: number): Promise; + + /** + * Fetches the current block number. + * @returns The block number. + */ + getBlockNumber(): Promise; } diff --git a/yarn-project/acir-simulator/src/client/view_data_oracle.ts b/yarn-project/acir-simulator/src/client/view_data_oracle.ts index 8a1c2258737..1edcfe3998b 100644 --- a/yarn-project/acir-simulator/src/client/view_data_oracle.ts +++ b/yarn-project/acir-simulator/src/client/view_data_oracle.ts @@ -3,7 +3,14 @@ import { computeGlobalsHash, siloNullifier } from '@aztec/circuits.js/abis'; import { AztecAddress } from '@aztec/foundation/aztec-address'; import { Fr } from '@aztec/foundation/fields'; import { createDebugLogger } from '@aztec/foundation/log'; -import { AuthWitness, AztecNode, CompleteAddress, MerkleTreeId, NullifierMembershipWitness } from '@aztec/types'; +import { + AuthWitness, + AztecNode, + CompleteAddress, + INITIAL_L2_BLOCK_NUM, + MerkleTreeId, + NullifierMembershipWitness, +} from '@aztec/types'; import { NoteData, TypedOracle } from '../acvm/index.js'; import { DBOracle } from './db_oracle.js'; @@ -113,6 +120,30 @@ export class ViewDataOracle extends TypedOracle { ); } + /** + * Gets number of a block in which a given nullifier tree root was included. + * @param nullifierTreeRoot - The nullifier tree root to get the block number for. + * @returns The block number. + * + * TODO(#3564) - Nuke this oracle and inject the number directly to context + */ + public async getNullifierRootBlockNumber(nullifierTreeRoot: Fr): Promise { + const currentBlockNumber = await this.db.getBlockNumber(); + for (let i = currentBlockNumber; i >= INITIAL_L2_BLOCK_NUM; i -= 2) { + const block = await this.db.getBlock(i); + if (!block) { + throw new Error(`Block ${i} not found`); + } + if (block.endNullifierTreeSnapshot.root.equals(nullifierTreeRoot)) { + return i; + } + if (block.startNullifierTreeSnapshot.root.equals(nullifierTreeRoot)) { + return i - 1; + } + } + throw new Error(`Failed to find block containing nullifier tree root ${nullifierTreeRoot}`); + } + /** * Retrieve the complete address associated to a given address. * @param address - Address to fetch the complete address for. diff --git a/yarn-project/acir-simulator/src/public/index.test.ts b/yarn-project/acir-simulator/src/public/index.test.ts index 1ab7da481be..c23e07b9eff 100644 --- a/yarn-project/acir-simulator/src/public/index.test.ts +++ b/yarn-project/acir-simulator/src/public/index.test.ts @@ -64,6 +64,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); publicContracts.getBytecode.mockResolvedValue(Buffer.from(mintArtifact.bytecode, 'base64')); @@ -141,6 +142,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); recipientStorageSlot = computeSlotForMapping(new Fr(6n), recipient.toField()); @@ -236,6 +238,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); // eslint-disable-next-line require-await @@ -304,6 +307,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); publicContracts.getBytecode.mockResolvedValue(Buffer.from(shieldArtifact.bytecode, 'base64')); @@ -336,6 +340,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); publicContracts.getBytecode.mockResolvedValue(Buffer.from(createL2ToL1MessagePublicArtifact.bytecode, 'base64')); @@ -385,6 +390,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); publicContracts.getBytecode.mockResolvedValue(Buffer.from(mintPublicArtifact.bytecode, 'base64')); @@ -427,6 +433,7 @@ describe('ACIR public execution simulator', () => { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); publicContracts.getBytecode.mockResolvedValue(Buffer.from(createNullifierPublicArtifact.bytecode, 'base64')); diff --git a/yarn-project/acir-simulator/src/public/public_execution_context.ts b/yarn-project/acir-simulator/src/public/public_execution_context.ts index de7ee848009..705c380b7ee 100644 --- a/yarn-project/acir-simulator/src/public/public_execution_context.ts +++ b/yarn-project/acir-simulator/src/public/public_execution_context.ts @@ -199,6 +199,7 @@ export class PublicExecutionContext extends TypedOracle { isContractDeployment: false, isDelegateCall: false, isStaticCall: false, + startSideEffectCounter: Fr.ZERO, }); const nestedExecution: PublicExecution = { diff --git a/yarn-project/aztec-node/terraform/servicediscovery-drain.sh b/yarn-project/aztec-node/terraform/servicediscovery-drain.sh index 1fa02e92d91..b8d6c301519 100755 --- a/yarn-project/aztec-node/terraform/servicediscovery-drain.sh +++ b/yarn-project/aztec-node/terraform/servicediscovery-drain.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 diff --git a/yarn-project/aztec-nr/.gitrepo b/yarn-project/aztec-nr/.gitrepo index 0930abc8a30..6fc3eca0c44 100644 --- a/yarn-project/aztec-nr/.gitrepo +++ b/yarn-project/aztec-nr/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/aztec-nr branch = master - commit = 4e873ce0d34cad3743be460f5ed703350435a974 + commit = a3aa6bd5d8f2ad9d44e3d9340550203fbe38c4d6 method = merge cmdver = 0.4.6 - parent = 379b5adc259ac69b01e61b852172cdfc87cf9350 + parent = 9c5443651faaed3dcb9fae36727337a34ce5922b diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 172e14b9afc..723fcb3cda6 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -126,7 +126,7 @@ impl PrivateContext { self.inputs.call_context.function_selector } - pub fn get_block_header(self, block_number: Field) -> BlockHeader { + pub fn get_block_header(self, block_number: u32) -> BlockHeader { get_block_header(block_number, self) } diff --git a/yarn-project/aztec-nr/aztec/src/oracle/get_block_header.nr b/yarn-project/aztec-nr/aztec/src/oracle/get_block_header.nr index 9d15d693393..7d10a895646 100644 --- a/yarn-project/aztec-nr/aztec/src/oracle/get_block_header.nr +++ b/yarn-project/aztec-nr/aztec/src/oracle/get_block_header.nr @@ -13,34 +13,44 @@ use crate::{ }, }; +// TODO(#3564) - Nuke this oracle and Inject the number directly to context +#[oracle(getNullifierRootBlockNumber)] +fn get_nullifier_root_block_number_oracle(_nullifier_tree_root: Field) -> Field {} + +unconstrained pub fn get_nullifier_root_block_number(nullifier_tree_root: Field) -> u32 { + get_nullifier_root_block_number_oracle(nullifier_tree_root) as u32 +} + #[oracle(getBlockHeader)] -fn get_block_header_oracle(_block_number: Field) -> [Field; BLOCK_HEADER_LENGTH] {} +fn get_block_header_oracle(_block_number: u32) -> [Field; BLOCK_HEADER_LENGTH] {} -unconstrained pub fn get_block_header_internal(block_number: Field) -> BlockHeader { +unconstrained pub fn get_block_header_internal(block_number: u32) -> BlockHeader { let block_header = get_block_header_oracle(block_number); BlockHeader::deserialize(block_header) } -pub fn get_block_header(block_number: Field, context: PrivateContext) -> BlockHeader { - // 1) Get block header of a given block from oracle +pub fn get_block_header(block_number: u32, context: PrivateContext) -> BlockHeader { + // 1) Get block number corresponding to block header inside context + // Using nullifier tree root to get the block header block number because that changes in every block (every tx emits a nullifier). + let block_header_block_number = get_nullifier_root_block_number(context.block_header.nullifier_tree_root); + + // 2) Check that the block header block number is more than or equal to the block number we want to prove against + // We could not perform the proof otherwise because the archive root from the header would not "contain" the block we want to prove against + assert(block_header_block_number >= block_number, "Block header block number is smaller than the block number we want to prove against"); + + // 3) Get block header of a given block from oracle let block_header = get_block_header_internal(block_number); - // 2) Compute the block hash from the block header + // 4) Compute the block hash from the block header let block_hash = block_header.block_hash(); - // 3) Get the membership witness of the block in the archive + // 5) Get the membership witness of the block in the archive let archive_id = 5; // TODO(#3443) - - // Using `block_number` here for path is incorrect and it will break if we pass in an incorrect block number on input. - // Instead here should be the block number corresponding to `context.block_header.blocks_tree_root` - // This is not currently available in private context. See issue #3564 - let path_block_number = block_number; - - let witness: MembershipWitness = get_membership_witness(path_block_number, archive_id, block_hash); - - // 4) Check that the block is in the archive (i.e. the witness is valid) + let witness: MembershipWitness = get_membership_witness(block_header_block_number, archive_id, block_hash); + + // 6) Check that the block is in the archive (i.e. the witness is valid) assert(context.block_header.archive_root == compute_merkle_root(block_hash, witness.index, witness.path), "Proving membership of a block in archive failed"); - // 5) Return the block header + // 7) Return the block header block_header } diff --git a/yarn-project/aztec-nr/aztec/src/oracle/get_membership_witness.nr b/yarn-project/aztec-nr/aztec/src/oracle/get_membership_witness.nr index 1f43ae52f57..320b57cedc3 100644 --- a/yarn-project/aztec-nr/aztec/src/oracle/get_membership_witness.nr +++ b/yarn-project/aztec-nr/aztec/src/oracle/get_membership_witness.nr @@ -14,9 +14,9 @@ struct MembershipWitness { } #[oracle(getMembershipWitness)] -fn get_membership_witness_oracle(_block_number: Field, _tree_id: Field, _leaf_value: Field) -> [Field; M] {} +fn get_membership_witness_oracle(_block_number: u32, _tree_id: Field, _leaf_value: Field) -> [Field; M] {} -unconstrained pub fn get_membership_witness(block_number: Field, tree_id: Field, leaf_value: Field) -> MembershipWitness { +unconstrained pub fn get_membership_witness(block_number: u32, tree_id: Field, leaf_value: Field) -> MembershipWitness { let fields: [Field; M] = get_membership_witness_oracle(block_number, tree_id, leaf_value); MembershipWitness { index: fields[0], path: arr_copy_slice(fields, [0; N], 1) } } diff --git a/yarn-project/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr b/yarn-project/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr index 2cc493d7966..204bde2b1c1 100644 --- a/yarn-project/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr +++ b/yarn-project/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr @@ -32,11 +32,11 @@ struct NullifierMembershipWitness { } #[oracle(getLowNullifierMembershipWitness)] -fn get_low_nullifier_membership_witness_oracle(_block_number: Field, _nullifier: Field) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {} +fn get_low_nullifier_membership_witness_oracle(_block_number: u32, _nullifier: Field) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {} // Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower // nullifier's next_value is bigger than the nullifier) -unconstrained pub fn get_low_nullifier_membership_witness(block_number: Field, nullifier: Field) -> NullifierMembershipWitness { +unconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness { let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier); NullifierMembershipWitness { index: fields[0], @@ -46,11 +46,11 @@ unconstrained pub fn get_low_nullifier_membership_witness(block_number: Field, n } #[oracle(getNullifierMembershipWitness)] -fn get_nullifier_membership_witness_oracle(_block_number: Field, _nullifier: Field) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {} +fn get_nullifier_membership_witness_oracle(_block_number: u32, _nullifier: Field) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {} // Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower // nullifier's next_value is bigger than the nullifier) -unconstrained pub fn get_nullifier_membership_witness(block_number: Field, nullifier: Field) -> NullifierMembershipWitness { +unconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness { let fields = get_nullifier_membership_witness_oracle(block_number, nullifier); NullifierMembershipWitness { index: fields[0], diff --git a/yarn-project/aztec-nr/aztec/src/oracle/get_sibling_path.nr b/yarn-project/aztec-nr/aztec/src/oracle/get_sibling_path.nr index 7fbe0936997..2109767a211 100644 --- a/yarn-project/aztec-nr/aztec/src/oracle/get_sibling_path.nr +++ b/yarn-project/aztec-nr/aztec/src/oracle/get_sibling_path.nr @@ -2,9 +2,9 @@ use dep::protocol_types::constants::NOTE_HASH_TREE_HEIGHT; use crate::utils::arr_copy_slice; #[oracle(getSiblingPath)] -fn get_sibling_path_oracle(_block_number: Field, _tree_id: Field, _leaf_index: Field) -> [Field; N] {} +fn get_sibling_path_oracle(_block_number: u32, _tree_id: Field, _leaf_index: Field) -> [Field; N] {} -unconstrained pub fn get_sibling_path(block_number: Field, tree_id: Field, leaf_index: Field) -> [Field; N] { +unconstrained pub fn get_sibling_path(block_number: u32, tree_id: Field, leaf_index: Field) -> [Field; N] { let value: [Field; N] = get_sibling_path_oracle(block_number, tree_id, leaf_index); value } diff --git a/yarn-project/aztec-sandbox/Dockerfile b/yarn-project/aztec-sandbox/Dockerfile index 2f9644563e0..afdfb2094e1 100644 --- a/yarn-project/aztec-sandbox/Dockerfile +++ b/yarn-project/aztec-sandbox/Dockerfile @@ -1,8 +1,7 @@ FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-prod AS yarn-project-prod +ENTRYPOINT ["node", "--no-warnings", "/usr/src/yarn-project/aztec-sandbox/dest/bin/index.js"] +EXPOSE 8079 8080 # The version has been updated in yarn-project-prod. # Adding COMMIT_TAG here to rebuild versioned image. -ARG COMMIT_TAG="" - -ENTRYPOINT ["node", "--no-warnings", "/usr/src/yarn-project/aztec-sandbox/dest/bin/index.js"] -EXPOSE 8079 8080 +ARG COMMIT_TAG="" \ No newline at end of file diff --git a/yarn-project/aztec-sandbox/src/bin/index.ts b/yarn-project/aztec-sandbox/src/bin/index.ts index 72a9413454d..95ce182ff8a 100644 --- a/yarn-project/aztec-sandbox/src/bin/index.ts +++ b/yarn-project/aztec-sandbox/src/bin/index.ts @@ -160,7 +160,7 @@ async function main() { const port = process.env.AZTEC_NODE_PORT || 8080; // Use standard 8080 when no PXE is running const nodeRpcServer = createAztecNodeRpcServer(node); - const app = nodeRpcServer.getApp(); + const app = nodeRpcServer.getApp(API_PREFIX); // Add a /status endpoint const statusRouter = createStatusRouter(API_PREFIX); diff --git a/yarn-project/aztec.js/src/api/init.ts b/yarn-project/aztec.js/src/api/init.ts index 2b5203c9d0b..9654b9c8042 100644 --- a/yarn-project/aztec.js/src/api/init.ts +++ b/yarn-project/aztec.js/src/api/init.ts @@ -1 +1,10 @@ -export { init as initAztecJs } from '@aztec/foundation/crypto'; +import { init } from '@aztec/foundation/crypto'; + +/** + * This should only be needed to be called in CJS environments that don't have top level await. + * Initializes any asynchronous subsystems required to use the library. + * At time of writing, this is just our foundation crypto lib. + */ +export async function initAztecJs() { + await init(); +} diff --git a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json index 061ae56ba1d..c12668e42ae 100644 --- a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json @@ -48,7 +48,7 @@ } } ], - "bytecode": "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", + "bytecode": "H4sIAAAAAAAA/+2deZxVxZXH7+vX230Xk1EzSSZGg9ljjHY3kGQ06sOsJtHomImZZGJEgehExWAj7vuCu6KouG+4gAtuuCE2KAqIoqKgyNLsiyzCGDPmj/kMVe/+6F8X1Y9X06fs2+mqz6c/79Zyz/meU8utqnv73l5RFOWiUshv/quOtg7IL6a/DZ0LjTk5WQ0+Oau6CWdekFOx1UR+67/ag1+lGWu6AWNtN2Cs6waM9ZFs/wEjxtJ4819h81+y+a/X5r+jkrZ0c7xVaTWGnSqtNj2uorS69Dif/qoy9cK+qSU2IZn9auXrsCEm37Df4ZuaaGuf11p8XmfxeT3J+DTlR0adfCo9ZzvhOlC6ekXtQ86IF+l4O7LvU7IsDQmxfIr0/JMHmz8dVW4z9Cd0HvPt4IFvewe+HYhvewvfZzzw7ejA9xni29HC91kPfP/swPdZYvmcLItu02D5HOn5Fw82fz6q3GboT+g85tvJA98XHPh2Ir4vWPh29sD3RQe+nYkP53Gb/pIHvl0c+L5EfLtY+Hb1wNfbgW9X4utt4fuKB74vO/B9hfi+bOH7mge+rzrwfY34vmrh+4YHvq878H2D+L5u4fuWB75vOvB9i/i+aeH7tge+3Rz4vk18u1n4vuOBb3cHvu8Q3+4Wvj098O3hwLcn8e1h4Wv0wNcQVc7XSHwNFr4+HviaHPj6EF+Tha+fLF+T4uvrwNePWL4vy9JXsXzXgeX7xPI9WRa9Rv5XWZm6ue1F/LAVehLK5zrfS9i2HOmEXMSZL7D2bFbF0tfgjKlc3wzwIe17Hllig0WFcuOSjY/r8geyfHoM39uB7wfEsp8oSx+9Z7ePA8t+xLKvKEv7vXQhmXoM70/8+xjyE8rnOu8vbBvfb4NcxJkvsAbWwBpYA2tgDayBNbAG1sAaWANrYA2sgTWwBtbAGlgDa2ANrIE1sAbWwBpYA2tgDazyrIplb4MzpnJ7Z4APaft6ZIkNFhVyRpzzbXxclz+U5dPP1OzvwPdDYvmJKEuTfqbmRw4sPyGWH4uylJ6p+amsTP1Mzc+IH7ZCT0L5XOc/E7YtRzohF3HmC6yBNbAG1sAaWANrYA2sgTWwBtbAGlgDa2ANrIE1sAbW7sKqWPY3OGMqt38G+JD2Y48sscGiQrl9dhsf1+XPZfn0PYkDHPh+TiwHyrLodzX8woHlQGL5pSyLvidxkKxMfU/iV8QPW6EnoXyu818J25YjnZCLOPMF1p7NqlgOMDhjKndABviQ9kuPLLHBokK5ccnGx3V5iCyfHsMPduA7hFh+LcrSqO8r/5sDy6+J5VBRltIY/u+yMvUY/hvih63Qk1A+1/lvhG3LkU7IRZz5AmtgDayBNbAG1sAaWANrz2ZVLAcbnDGVOzgDfEg71CNLbLCoUG6dYuPjuvytLJ9e0x3mwPdbYvm9KEtpTfcfDiy/J5bfibKU1nT/KStTr+n+QPywFXoSyuc6/4OwbTnSCbmIM19gDayBNbAG1sAaWANrYO3ZrIrlMIMzpnKHZYAPab/zyBIbLCqUW6fY+Lgu/yjLp9d0hzvw/ZFYjvTAcoQDy5HEMkCWRa/pjpKVqdd0A4n/iPQXehLK5zofKGxbjnRCLuLM111YFcvhBmdM5Q7PAB/SBnhkiQ0WFcr1Hxsf1+VgWT7dvwc58A0mlmM8sPzJgeUYYjlalkWPNf8lK1OPNX8mftgKPQnlc53/Wdi2HOmEXMSZr7uwKpZBBmdM5QZlgA9pR3tkiQ0WFcr1Hxsf1+VxHviOdeA7jviOtfAN8cB3vAPfEOI73sL3Fw98Jzjw/YX4TrDwneiBb6gD34nEN9TCN8wDX7MD3zDia7bwDffAd5ID33DiO8nCd4oHvpMd+E4hvpMtfKd54DvVge804jvVwneGB77THfjOIL7TLXxneeA704HvLOI708J3jge+sx34ziG+sy1853ngO9eB7zziO9fCd4EHvvMd+C4gvvMtfBd54LvQge8i4sN5/L3wiz3wjXDgu5j4Rlj4LvXAd4kD36XEd4mF73IPfJc58F1OfDiP29+VHviucOC7kviusPBd7YHvKge+q4nvKgvfNR74RjrwXUN8Iy18ozzwXevAN4r4rrXwXe+B7zoHvuuJ7zoL32gPfDc48I0mvhssfDd54LvRge8m4rvRwneLB76bHfhuIb6bLXy3eeC71YHvNuK71cJ3hwe+2x347iC+2y18d3ngu9OB7y7iu9PCN8YD390OfGOI724L370e+O5x4LuX+O6x8N3vge8+B777ie8+C984D3xjHfjGEd9YC9+Dsnx6f/8BB74HiWW8LIv+H/KHHFjGE8vDsiz6XsMjsjL1vYZHiR+2Qk9C+VznjwrbliOdkIs48wXWns2qWB4wOGMq90AG+JD2sEeW2GBRody4ZOPjunxclk+P4Y858D1OLE+KspTeTf6EA8uTxDJBlKU0hj8lK1OP4U8TP2yFnoTyuc6fFrYtRzohF3HmC6yBNbAG1sAaWANrYA2sgTWwBtbAGlgDa2ANrIE1sAbW7sKqWB4zOGMq91gG+JA2wSNLbLCoUG6f3cbHdfmsLJ++J/GMA9+zxDJJlKX0DqSJDiyTiOU5UZbSPYnnZWXqexItxA9boSehfK7zFmHbcqQTchFvofTAGlgDa2ANrIE1sAbWwNqzWRXLMwZnTOWeyQAf0p7zyBIbLCqUW6e0WPi4LqfI8uk13WQHvinEMlWUpbSme8GBZSqxvCjKUlrTvSQrU6/pXiZ+2Ao9CeVznb8sbFuOdEIu4swXWANrYA2sgTWwBtbAGlh7NqtimWxwxlRucgb4kPaiR5bYYFGh3DrFxsd1OV2WT6/ppjnwTSeWmaIspTXdDAeWmcTyiihLaU33qqxMvaZ7jfhhK/QklM91/pqwbTnSCbmIM19gDayBNbAG1sAaWANrYO3ZrIplmsEZU7lpGeBD2iseWWKDRYVy6xQbH9fl67J8ek03y4HvdWKZLcui3+nzhgPLbGJ5U5ZFr+nekpWp13RvEz9shZ6E8rnO3xa2LUc6IRdx5gusPZtVscwyOGMqNysDfEh70yNLbLCoUG5csvFxXc6V5dNj+BwHvrnEMk+WRY/h7ziwzCOWd2VZ9Bj+nqxMPYbPJ37YCj0J5XOdzxe2LUc6IRdx5gusPZtVscwxOGMqNycDfEh71yNLbLCoUG5csvFxXS6U5dNj+AIHvoXEstgDyyIHlsXE0irLosfwJbIy9Ri+lPhhK/QklM91vlTYthzphFzEma+7sCqWBQZnTOUWZIAPaa0eWWKDRYVy/cfGx3W53APfMge+5cS3zMK30gPfCge+lcS3wsK32gPfKge+1cS3ysL3vge+NQ587xPfGgvfOg98ax341hHfWgvfBg986x34NhDfegvfRg98HzjwbSS+Dyx8/y3Mp2RsSmVVp38R6clT/rCa0u92KcsmYZZcKpf9gvgm8kFX6f1QVq+eu22K2odybeNDYvmbLEs/xfJXB5a/EctHsix6Hvk/sjL1PPJj4oet0JNQPve3j4Vty5FOyEWc+QJrYO0urIplk8EZU7lNGeBD2kfEV2f4T137bq5pY/1AlrWfYt1IvjiLGKArT2V2Sdq4bk+5CpS/iWzZEG3t6/Wy/NrX0AO5iENXgWzZQCzS875c1H5eVexAr7APmtjXCOWuk+uJRXbtUHon/zoHlveJZa0oS+mavUZWZoOH9aCeB/B6EP4DO6/7VpO/Vgn7Kxe1X/cVKc58gTWwBtbAGlgDa2ANrIE1sAbWwBpYA2tgDayBNbAG1sDaXVgVywaDk5+B2ZABPqSt9cfS5PrczypikX3GrHQfYaUDy3JiWSHKUrqPsExW5lbPkMJW6OHnMrl/+HjucZnhU8Q7eoY0sAbWwBpYA2tgDayBNbAG1sAaWANrYA2sgTWwBtbAGlizzMp76uCMqdyaDPAhbYU/Fr0PvYRYNhocBeJYQhxLJDkaS8/VL5aUmd5DaE1lQbZKW2ikKd0LRHWX/sfW5R0YC4kP7w5ZRnzC71lqUCz8vpQi6eB3g7wj7BfWm0v/oAPpeTp+r7atLMpVb/77X/LTEpKHd1NVpWXesZR5j45ZDs41j1GP8E9C+Sxr/jb4aiPxd3dpf84j1iLF5xLPa7VtDMLvxmlin1anctGG5vuzvYHbBNqwWS8qfY4Hn0Mv2rD5jqQ8HW9MfR9F7d+zhnYF5gL5C+XUeGDrlz5smkc2FSk+h9I7KsP9xWbjPLLxXUu5cn7hd1C9W6EePofboA+/se1FikOX6hMLqf8Jj+WaYYHBsMDwh49riGqb9YYeZetHZKvsuz8aBytb+f8Xi8QAXXkqs6bQxvX3lKtA+Xi2g98pws97vC/KX6orfndJkeLQVSBb1npkUTJWE8tGCwf083xd9P8f07mf7LMs7Z8fgWyVttxI8/Bsh/P7h5YTH+bdXO+y8+LSdbOV5BdJBz9Hs0jYL6wX103oQHqejj9f11YW5TC3MteRqgyuj5j7LbKU4Xkgy8G55jHqEf5JKJ9lLd0GX20k/s4/7c/FxFqk+ELiSeraGITXj03sU8z90IaW+rO9gdsE2rBZLz7WdawXbdh8Z12ejvfAyxSi9tdotCswF8hfKKfGA1u/9GHTYrKpSPEFlN5RGe4vNhsXk42tlnLl/MLvBGytUA+fw23Qh9/Y9iLFoUv1iZ2o/7XKMjTYxoCVhr/k+31pHsbyi6SD91V8jHno3+r1I8wBXXkq893U99ulcd6TQbvhva4lRjn59XKTnu8Iv1daz+V4Do7543vkE+TvU9dWbr/0mPer1pOcgyz5COXmNLzmEt5DauA1F9reOxa9Ptd65rof6Xk6PpDGfl6rwr9gdlkT4xzbmtj3XgfkvmPwqXayP7Wpg2i8kx5z2V72C++bI38JpW0wyvO+Cq/3pPtluf05ft830hb4Y2lSMvi94xsNjgJxzCc/4ZjXUe8YaT72NpUermsVyo05/H5ytE3e/5D+Hoti4W/IFEkH70tKf1uG9WIcgg6k5+n4OFpHoRzWKfATr5HwrQ6so960lHmbjlkOf3+Hj1GP/J0S5LOsOdvgq6XziulvQ+dC2W+FvEE8R9C4JjzONrFPsY4yx1kPtjdwm0AbNutFpQt/N6qR9aINQwfS83R8Hl1LX2873NKuwFwgf6GcGg9s/dKHTW+RTUWKv07pHZXh/mKz8S2ycbalXDm/JJQ/u0I9fA63QR9+Y9uLFIcu1SdOoP4nPJaX3cd/K/KmV+9TxoYeZesIsvWT2EMHg20PfQLtoV+WcvEeOp6V4D10fn7iH3gPvY+SEfbQwx56McrmHvrYsIe+TX+a+2e2PfRbwh56l+2ht4Q99B6/h/5g2EPvsj30aWEPfYtPkD+L9jvf2MYeemvYQ9/iY9c99EU9aA/9LWpTrRncQ19jlOc9dF7vZWUPnfez+Tmv+UZabST/7dhc1H6vvUjxd4nP/J6l/FhZ2Xc0fent6LnE+f5831fJ4P620eJ36Of9QB/Punfkd9br43vOLt9Q5uuAj7GvozbAe4rC39x2/qY173XPFvYB7z9XwsL3lKTvdSiWNx1Y3iCWWR5YXndg4e/Fv+qB5TUHlleJ5RUPLDMdWF4hlhnCLOXGsBme9XY0bvjWm1V71RwH4zrmNTHl8zVluge+GQYf4tOJD2k8L8M4vMjCPCdDzAsoDeM1f8cb42YVpWH8ylMaxpFqsk24vTQoPRgjZnj2YUf9YbpnvR31B996s2zvNGG9MclHKHetmUYsL8uy6DYNlpdJz1QPNr8UVW4z9Cd0HvO94IHvRQe+F4hlijBLQixTSM9kDzant5m3yFbj5771bTpl14lNDbz3jD0wMPD/IqPMtXQffH9vXI2DlQx+FmGewVQgJpSL6Zj30/lZj0UWOW8b5WI6fpvKYR0wndIwH0ef8DAX1t8AxlwbodK58ExZlkYf13ElYxrxw1ae8yGf12LS14FycyXmq5R1bjdindWNWGd3I9b5Xczqo796mPf06xWV/ocZvnzZ8CnbIzzX0PtkmN8gVDrXeFGWpdHD/EWPr5OJH7ZCTxK1n2/ANun5TY50Qi7izFcp67QuZvWgtwn9YKqha4bhB6V7krBu1Q9aovahXD+YRCzPy7LofvCcrEzdDyYSf0v6Cz0J5VeRbROFbcuRTshFnPkqZZ3Sxawe6qqvkvmsrMwtfasllfes4VO25ylh3apvPRO1D+X61lPE8rQsi+5bT8rK1H1rAvHDVuhJKD9Ptk0Qti1HOiEXcearlHViF7N6qKs+SuYTsjK39C348gnDp7BHrZkfT4/5f9UeNdIU4yMe/A09kIv4I8T3WHr8KKXhmN9JNd5IU8wPe2AebzAj/jDxgX88peGY/2cG57xJaQ+lx69T2oPp8Wtk2wMebIOvIRfxBzzrfcTQ+8gnpDfYG+wN9gZ7g73B3mBvsJf1jhPWG5N8hHJrznHEMlaWRd/XBstY0nOfB5vvjyq3GfoTOo/57vHAd68D3z3EMkaYJSGWMaTnbg82J6ksyFb7zAvo/nGLqM7SfW3epy0SA3TlqcxQuq+92BtX6b429kpVeNxgKhATysV0zHvjvC/3qEXOJKNcTMeTqBz2wR6gNKzj0Sc87EPo+9rY20Io1xeeJBbh/blGD3siek9sHPHDVuhJKP9Zsk36OpAjnZCLOPNVyvp8N2J9phuxPteNWMd3MauP/uph3rPlvjZ8OdbwKdsjPNfQ9xwwv0GodK5xryxLo4f5ix5f7yZ+2Ao9CeU/SLZJz29ypBNyEWe+SlnHdTGrB71b7g/cZ+h6wvCD0n2HsG7VD+6K2ody/eAOYrlTlkX3g9tlZep+cBvxw1boSSj/YbLtNmHbcqQTchFnvkpZx3Qxq4e60ve1b5WVuaVvwZe3Gj5le24S1q361i1R+1Cub91ELDfLsui+daOsTN23RhM/bIWehPIfIttGC9uWI52QizjzVcp6WxezeqgrfV/7BlmZW/oWfHmD4dPR5FsEfnboeg++jQzfIlxvYanLEMvEDLHUZ4ilkCGW6gyxTMkQS5IhltEZYslniGV8hlgmZIglzhBLTYZYajPEkutiljjaet4eU/54SqsyzlV1+tOkLX9Uml5F51ybHuctskdR2nXp8bWWc9lHowxbGjoXtI9YT5Hi0FUghmszwFKbIZaaDLHEGWKZkCGW8RliyWeIZXSGWJIMsUzJEEt1hlgKGWKpzxDLxAyx1GWIpeoTYsHcCXKvM1iU3mtk9er90ZGkF3O6a8h+6B9JHFcL269kXGXhuJo4oP8q4rhSlkN/X+oKC8eVxAH9VxDHZbIcfWKDQ4Vy64DLiOVyWRa9L3+prEzd7i4hftgKPQnlc/u/RNi2HOmEXMSZr1LWkd2I9aouZvXQrgYrmRfLyuyDewjw5cWGT9nfI9LfakrHvD1P+S3pIme7qON7DyM81AmHooW7o3sPXc0yMUMs9RliKWSIpTpDLFMyxJJkiGVkhlhGZ4glnyGWCRliiTPEMipDLDUZYqnNEEuui1k6ug+CfL5XcVF6PJLSqizyMDagvKr7Q+h+yYVpOt8vuSA9zlv0XWjhusByLvsS5xTT34bOBe1L1lOkOHTx/ZILMsBSmyGWmgyxjMoQS5whlgkZYslniGV0hlhGZoglyRDLlAyxVGeIpZAhlvoMsUzMEEtdhliqLCznybI08RwwIiYORTo+j1jOF/aL2qvkueYIwye8v3iusO4c2QO5iJ9Les+R1avvJZxNemEr9BRIP5fDsRrfRhmcecrfNx10tkv5zxL2m5JxpoX/LOI/Oz3mcmcS/0jDpjzl/8jgP12WX9+rYi4VyrV/6FcsZ8iy6HtVp8nK1O3r1Ghrv0NPQvm8p3WqsG050gm5iDNfpawXdSPWEV3M6qNdKZmnyMrccq8KvjzF8Cnbc5Ks7r5qHDg5ah/KjQMnEctwWRY9DgyTlanHgWbih63Qk1A+339oFrYtRzohF3Hmq5R1YjdindCNWE/tYtaY0k6mNOQPp7Qqww7e90T5usjPO3WULZNTWZjLt5A/4cNOvqO80UxQuvgd6P2jrd/dk6cyJ9M8KqJ0FR5Pf3F+gWRMIp9OMuSrcnhvCL+/B++T4XdN4V0oVSTnWcrnd/E8Z5zD7+9COWVzJ9/DY/Upv+eHfQpdeSpzvuFTfp8y3onEPn3KKBfT8VNU7on0+H5KG5ces0/Hpr9VJGcc5d9Hx08Y5/A7x+4jPfcYepQfRN/H0Fi6Fo0hdui8m9hs7wa7U5IjHYf43QzFqK3PQhe/PwxlzfeHSX9/SnHhG1IYU/ibUdA7t3N6re3/bZLfP9r6O1d5KnOj0f6RrgK+mbWQuOca5WI6nkvl8I2d6ZSGby/xd9nw3aAqkvMG5fN3q2Yb5/C37vhbsjPT42L62+AWrD59heSzT6ErT2XuMXyKdBXw/TD26UyjXEzHM6ncjPT4JUqblh6zT/HtmyqSw98bmkrHM4xzEpI/lfS8YOhRfsC4WEx/GzoT0jFlCrFD52Ris31HT/rbIaq+W6K2UIza+iy/Uw9pKMvf2lN569P0NXTOWiNN8b/vgX9t1J4fcehSfOvS47WfMEtssCi9qzun19pnV5H8/sQBXXkqM5n6bI7K1Br+4+9xrewcs9VX4KkxOFZamF8yxpkVUVvAtQbcBTpvBdmwTNSGJr2nsFRUZml/ckkqS/UxtNul5BPkv0rv4ZyVHsdk83qSs9CSj1Bu32AZ+a9V1lbdbheR/CLpYL0LZfU2st5c+gcdSM/T8QIMflH7b2XCv63pryq22FKOj1cY5ySUv9izza3EUaQ4dKl28ia1KbQZxbNcmIftZb/E5Bfk89gm3d+UX5ZE7f0ChqXEssbCiTbK17fFHviWGXyILyY+pC0nPtjB48mI9IYhX7M30DlrjbSeeM2uN1iycM3+a4XX7FZK7+pr9t/LXLMxtva0a3YuaSuXp+cabdfsHSz5CJVes+fL2qrb7Xskv0g6WO88Wb2NrBfXbOhAep6Ot6cHZee1HW7xL5j5ms3l+HiFcU5C+Ys92zyfOIoUhy7VTmqpTaHNfJLX7HryS1dds8HA1+wNBidfs/n6lqVrNuzg8eSj2tKxaqsb0/RNdM4GI00VX+/BJuiBXMShS/F9ELX3L+erUJP+1tE5phzFv1aWv5+PuYOSgblfNdkOPXnK34366O40rsPmjSRnb0s+Qrlxn+dJq2Rt1eP+SpJfJB2sd4Ws3kbWi3EfOnjOgeO9aNznayb8C2bV7lZbyvHxeuOchPJXe7Z5FXEUo63nRqqd7Eltam8a99cJ87C97Jc68gvyfa4blIw1xAH97xPHJoOR1zQ8PnZyPr8VW7k1zWriQ9o64oMdPJbcXNPGWiPL2ofvNyOUG1f4/6+qhf2mrnc7p7L+NKj54GFHHnvMUb8YdEr/4wcePGBo8zEDju0/cODQQSeemCNQwOct8FXk2FqjHDu7mtKqyECk4Zw6+q2lMkUZB+gHWsESWexhXczooWHoyuiVytpcGYcOOmrooObNlcG+B2uV8Wse8z951glz5sh2yDUnFkpvvaxefdMmJr3wBfTwA9n8z5wFYfuVjMTCUaBf3kgDT2L4SKX1omP8VlnORX32IhlmOxVtiFGqoCpVroysidoaVL3FAbhTlaSgBZKD0C+1fsc0fsDxAwed3HvIsObeQwb3PnLIsOMHnsjFX3YrPjxVuWsaH9DcPOi4E5p7Nw/pfeKwI5uHDjiquffwY5qP7j3kpEFDBx87ZDiffF5nTh7dmZPHdObklvTkL2598oCBAzs+b2rBybUf/j/VfLxtNf8HdWDpXob0AQA=", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -84,7 +84,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -147,7 +147,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -164,7 +164,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -424,7 +424,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -691,7 +691,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ], diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json index 8a0d04a998d..9f185c0f667 100644 --- a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json @@ -48,7 +48,7 @@ } } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -72,7 +72,7 @@ } ], "returnTypes": [], - "bytecode": "H4sIAAAAAAAA/+2d93cUVRTHZ3ezJSEJIErvoHTYmuxSNIDYQIxdrCRkg1FIMCxqrIi9Y1ewIHbF3jvyh3m8X86MXCbL4Ye9G/PO13fO90x2d/Lmfd68ufPezHv3HvM874h3IkX8bYe/TdeWMnHJI14l31y6LZ8vt2fLmVymK50tdRcL6Xyhu62YKWYKxUJPtpjLlYv5Ynupu9SeLmXyuXKmt1DK9foZx+3KmK4Hd0LySNSBOzHKuZOSR7IO3Elj7lO191rLOcWwnBG/Lmf7+U0S/S2a7G+nkG2Xiqb65wz1Ms6vl6mjoFzTvJOTdbua7tldo0H9BWWc7nPAtsxQ9Rvzfw+3u6i/RZqp9o+G8pup9pvl5xfzTp06DPlipzkf6dpSZpJnb4+syzjZgTJGvZGx6+naUmaWZ2vXgzRbNMH/u7FKu8V3DSEmXKdxY75GP1+kqDqOZ3ucXLU+UbrG1KjKHKtSlw1V6jKuvouHePG5Rf3uheql1d83YXwOIqp8Qb4NobKlROP9v/sHKn29Q+sHy12Vcs/mgUpZN6xEqEI0gDaQ+nddKclQPrqSk2qrj/lvqS1qQ+dpfTXPtssrHatWCd7otpQRVcagAcwRzRXN8060MH3Sg1QHq5Cut1UItmjgScXmhX4Prmxj65qrZtnDbaZD/a0tUoNtWTKwIDP8vLaXK517unf0bdtYHlrb39PZNVjp69qxtqdnsLx7d7VGEqtS+Kiq0LDV0ZZEm+HwLUZX0IhYl3AfF60ffdW5/naevx0rmh8qQzRUllr79oZXdma+Z2vZ4t7w5Eof0LrN1LMO5tSpDqzLOdezvQv9P07jG6fpG0tgS88WnSNa4H/W/XJPfZcI8ekbjL4Rpfy/9Y0ouOPrPnWTcT25OGbS3f6Yqpvgu6C+dM8p+J+UN/zcNFY5N03qWOND+3ne8B5Yyvi8RFRZgnyTIQZsg2eK5Z19lQ392waHdsnYatPAdt0RSSmWcPmRtE3T47lg/4g3vKOEz2NsmbO6zXvq2F6oHoI0RpWlHtdFs22ex21diyp/wNqseILfU4qtxZgtoo4Z5Bt8bqnfcY/zt56Gv7VKOVpHkL9Vla05VM5G9XuT+i4a4tB2Kdj/P3v0UGtnf4FNOXvz2fxJHb2ocR1EDJkXevYdnHowRw2ZFznCHDNkXuwIc4Mh8xJHmOOGzEsdYU4YMi9zhDlpyLzcEeZphswrHGGeYsicJmTOEDJnCZlzhMx5QuYCIXMbIXM7IXORkLlEyLySkHkVIfNqQuY1hMznEjKfR8jcQci8lpB5HSHzekLm8wmZNxAyX0DIfCEh80WEzBcTMl9CyLyRkHkTIfOlhMybCZkvI2TuJGS+nJD5CkLmKwmZryJkvpqQ+RpC5msJma8jZN5CyHw9IfMNhMw3EjLfRMh8MyHzLYTMWwmZuwiZuwmZtxEy9xAylwmZewmZtxMy30rI3EfIfBsh8+2EzDsImXcSMvcTMg8QMu8iZL6DkHmQkHm3I8yzDJkrhOd5DyHznYTMdxEy303IPETIfA8h872EzPcRMt9PyPwAIfODhMx7CZkfImTeR8j8sCPMMwyZHyE8z48SMj9GyPw4IfMThMxPEjI/Rcj8NCHzM4TMzxIyP0fI/Dwh835C5hcImV8kZH7JEeYFhswvE57nVwiZXyVkfo2Q+XVC5jcImQ8QMh8kZH6TkPktQua3CZnfIWQ+RMj8LiHzYULm9wiZ3ydk/oCQ+UNC5o8ImT8mZP6EkPlTQubPCJmPEDJ/Tsj8BSHzl4TMXxEyf03I/A0h87eOMKcMmb9zhLnRkPl7R5ibDJl/cIR5jCHzj44wNxsy/+QIc4sh88+OMLcaMv/iCPNYQ+ZfHWEeZ8j8myPM4w2Zf3eE+QxD5j8cYZ5gyPynI8xnGjIfdYT5LEPmvxxhnmjIfMyQeaKfT8RnjokaRHFRQpQUYUyIMRLGDOhDo0+JPhb6HLgH454EGw2bhWsYbRrneKKqx0miyaKD/ueFokWixaIloqWiZaLlohXgEmVEWdSXKC8qiNpE7aKiqCRaKVolWi1aI0Ks+yD2O2KDrxMhdjRiKSO2MGLtIvYsYrEiNilidSJ2JWI5IrYhYv0h9l2nCLHRECsMsbMQSwqxlRBrCLF3EItmiwixShC7A7EsENsBsQ7g+3+rCL7hu0XwHQ5f2vAtDV/L8D0MX7zwTQtfrfBdCl+e8G0JX4/wfbhLBN948BUH32nwJQbfWvA1Bd9L8EU0JIKvGvhugS8T+PaArwv4ftgrgm+AfSKsHcdaaqwtxlpbrD3FWkysTcRaPaxdw1ourG3CWh+sfdkvwtoIrBXA3HnMJcfcasw1xtxbzEXF3MwD/jnFXDbM7cJcJ8z9OSTC3JDDIswdwLt0vFvGu1a8e8S7OLybwrsavLvAs3w828azXjz7xLNAPBvDsyI8O8GzBIytMdbE2AtjEfTN0VdF3w19Gdzbca+D7T8qgm3AtRKkfwBWCLmdZbQAAA==", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -135,7 +135,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -152,7 +152,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -412,7 +412,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -679,7 +679,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ], diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json index 5496e442409..c2f7e461284 100644 --- a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json @@ -7,7 +7,7 @@ "isInternal": false, "parameters": [], "returnTypes": [], - "bytecode": "H4sIAAAAAAAA/+XdZZOTZxSH8V0gSd27uLu1ySbZJFVK3alSL6Rk6y1V6qXU3XB390/IuWbCwAt4xb0z3HNl5j9590x+m+yj5z7nZE9Pz7aeM6/e7vuC7nv5wl6VQmyjcI7tVssDtVqn0d+pVCtLy/2tdrNertXbA81Ks1Jv1pf1N6vVTrPWbLTarUa5ValVO5XBeqs62N1wId1nLA+FuxjbKA6Bu3iRu0uxjdIQuEuJ3ef7vV/o5xw5RJ9zWOLvqTeheVQm5mEJzaMzMQ9PaB6TiXlEQvPYTMyFhOZxmZiLCc3jMzGXEponZGIemdA8UWieJDRPFpqnCM1TheZpQvN0oXmG0DxTaJ4lNM8WmucIzXOF5nlC83yh+Sah+WahuSw0V4TmfqG5KjTXhOa60DwgNDeE5qbQ3BKabxGabxWabxOabxea7xCa7xSaFwjNdwnNC4Xmu4Xme4Tme4Xm+4Tm+4XmB4TmB4Xmh4Tmh4XmR4TmR4Xmx4Tmx4XmRULzE0Lzk0LzU0Lz00LzM0Lzs0LzYqH5OaH5eaH5BaH5RaH5JaH5ZaH5FaH5VaF5idC8VGhuC82vCc3LhOaO0DwoNL8uNL8hNL8pNL8lNL8tNL8jNL8rNL8nNL8vNC8Xmj8Qmj8Umj8Smj8Wmj8Rmj8VmlcIzZ8JzZ8LzV8IzV8KzV8JzV8Lzd8Izd8KzSuF5u+E5lVC8/dC8w9C849C809C889C8y9C869C829C8+9C8x9C859C819C899C8z9C879C839C8/9C82qheY3QvFZoXic0rxeaNwjNG4XmTULzZqF5i9C8VWjeJjRvF5p3CM07heZdmZgvSWjenYn50oTmPZmYL0to3puJ+fKE5n2ZmK9IaN6fifnKhOYDmZivSmg+mIn56oTmQ5mYr0loPpyJ+dqE5iOZmK9LaD6aifn6hOZjmZhvSGg+non5xoTmE5mY+xKaTyY093W309s1D4+MiBQixUgpwjUh10hcM3AOzTkl51icc3AM5pjEPpp9Fv/D/Kb5jvvO+ntu6r6PioyOjImMjYyLjI9MiEyMTIpMjkyJTI1Mi0yPzIjMjMyKzI7MicyNzIvMjzDjnpnvfInMBGdGNjOjmaHMTGFm7DYizGBlJikzOplZyQxHZhoy4+/0zDtmoi2MMDOLGVLMVGLGEDN3mEHDTBZmlDCzgxkWzHRgxgE9/xdF6AlPj3R6htNDm57S9FheHKEHLz1p6dFKz1J6eNLTkh6P9DxcEqEnXjtCzzR6iNFTix5T9FyiBxE9eehRQ88WepjQ04MeF/R8WB6hJwBr5Fkzzhpq1hSzxnZFhDWYrElkjR5r1ljDxZom1viw5mVlhDURqyLUzFNDTk01NcbU3FKDSk0mNYrU7FHDRk0XNU7U/FADQ00INRLUDPAMnWfKPGPlmSPP4HgmxTMafhPcw+eeNvd4uee5PcI9Me4Rcc+EewhcU3ONyTUX1yCck3OOyjkb5zAc0znGsc9nH8g+gf+R069TXMw0LzyaAAA=", + "bytecode": "H4sIAAAAAAAA/+XdV2/TUBjG8aSQhL1J2ZSytx1n2MxS9i6zbNrQhL13C7TsvfKJ8V8yKhdw1TcSR0+ko9xZ+cWJfY7POxqpVGowNfxKJ+8dybs3spefiY+R+ctxA69cLNYqhZof+L1eIaqGJa9YqpZDP/RLYamvEAZBLSyGlagaVbzILwY1v16Kgnpy4IzdZ/Sa4c7Gx8g2wZ39z925+Bi5Jrhzxu5//d5H+jlbm/Q5W4zPU9rQPMsRc4uhebYj5lGG5jmOmEcbmuc6Ys4Ymuc5Ys4amuc7Ys4Zmhc4Ym41NC8UNLcJmhcJmtsFzYsFzUsEzUsFzcsEzcsFzSsEzSsFzasEzasFzWsEzWsFzesEzesFzZ6g2Rc0FwTNgaC5KGguCZrLguaKoDkUNEeC5g2C5o2C5k2C5s2C5i2C5q2C5g5B8zZBc6egebugeYegeaegeZegebegeY+gea+geZ+geb+g+YCg+aCg+ZCg+bCguUvQfETQfFTQfEzQfFzQfELQfFLQ3C1oPiVoPi1oPiNoPitoPidoPi9oviBoviho7hE09wqaq4LmS4LmPkFzTdBcFzRfFjRfETRfFTRfEzRfFzTfEDTfFDTfEjTfFjTfETTfFTTfEzTfFzQ/EDQ/FDQ/EjQ/FjQ/ETQ/FTT3C5oHBM3PBM3PBc0vBM2DguYhQfNLQfMrQfNrR8xjDM1vHDGPNTS/dcQ8ztD8zhHzeEPze0fMEwzNHxwxTzQ0f3TEPMnQ/MkR82RD82dHzFMMzV8cMU81NH91xDzN0PzNEfN0Q/N3R8wzDM0/HDHPNDT/dMScNzQ3DM355DjpxEwfTPpC0ieRvoH00WNNyBqJNQNzaOaUzLGYc3AP5p7ENZprFv9hftOc4/wf3+dA8k4PVHqC0iOTnpH0UKSnID326DnXFg96krXHg55V9HCipxE9fuh5Qw8YeqLQI4SeGfSQoKcCPQaouc9JpCY7Ncqp2U0Na2o6U+O4Eg9q4FITlhqp1AylhiY1Jamx+LvmIDXpOuNBzTJqeFHTihpP1DyiBhA1cagRQ80UaohQU4MaE9Rc6IoHOfnkqJOzTQ4zOb3kuHbHgxxIcgLJkSNnjBwqcorIsSHnpCce5CRU40HMOjHcxDQT40vMKzGgxEQSI0jMHDFkxFQRY0TMDTEoxGQQo8CePXvY7Omyx8meH3tg7An1J+eEZ+g8U+YZK88ch+LBMyme0fDMgjU8a1rWeKx5WAMwJ2aOyJyJOQT3VO4xXHO5BvGfbKSGX78ABsSI/zx7AAA=", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -70,7 +70,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -87,7 +87,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -347,7 +347,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -614,7 +614,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ], diff --git a/yarn-project/aztec.js/src/index.ts b/yarn-project/aztec.js/src/index.ts index 38f1bc8970f..353457cd6f5 100644 --- a/yarn-project/aztec.js/src/index.ts +++ b/yarn-project/aztec.js/src/index.ts @@ -16,6 +16,8 @@ * import { AztecAddress } from '@aztec/aztec.js/aztec_address'; * import { EthAddress } from '@aztec/aztec.js/eth_address'; * ``` + * + * TODO: Ultimately reimplement this mega exporter by mega exporting a granular api (then deprecate it). */ export { WaitOpts, @@ -118,7 +120,7 @@ export { // External devs will almost certainly have their own methods of doing these things. // If we want to use them in our own "aztec.js consuming code", import them from foundation as needed. export { ContractArtifact, FunctionArtifact, encodeArguments } from '@aztec/foundation/abi'; -export { sha256, init } from '@aztec/foundation/crypto'; +export { sha256 } from '@aztec/foundation/crypto'; export { DebugLogger, createDebugLogger, onLog } from '@aztec/foundation/log'; export { retry, retryUntil } from '@aztec/foundation/retry'; export { sleep } from '@aztec/foundation/sleep'; @@ -127,6 +129,7 @@ export { fileURLToPath } from '@aztec/foundation/url'; export { to2Fields, toBigInt } from '@aztec/foundation/serialize'; export { toBigIntBE } from '@aztec/foundation/bigint-buffer'; export { makeFetch } from '@aztec/foundation/json-rpc/client'; +export { FieldsOf } from '@aztec/foundation/types'; export { DeployL1Contracts, @@ -135,4 +138,7 @@ export { deployL1Contracts, } from '@aztec/ethereum'; -export { FieldsOf } from '@aztec/foundation/types'; +// Start of section that exports public api via granular api. +// Here you *can* do `export *` as the granular api defacto exports things explicitly. +// This entire index file will be deprecated at some point after we're satisfied. +export * from './api/init.js'; diff --git a/yarn-project/bootstrap.sh b/yarn-project/bootstrap.sh index 6f9acecd7db..ff01dcb5e80 100755 --- a/yarn-project/bootstrap.sh +++ b/yarn-project/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu cd "$(dirname "$0")" diff --git a/yarn-project/boxes/bootstrap.sh b/yarn-project/boxes/bootstrap.sh index 340bc0e8972..9d1b562be36 100755 --- a/yarn-project/boxes/bootstrap.sh +++ b/yarn-project/boxes/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # should be run from yarn-project/boxes original_path=$(pwd) @@ -7,16 +7,16 @@ original_path=$(pwd) for dir in *; do # Check if it's a directory if [ -d "${dir}" ]; then - + cd "${dir}" # Run the compile command echo "Running compile command inside ${dir}..." # Runs ts-node command from "../cli" to use latest "compile" code. this uses the yarn command to use the subpackage ts-node dep yarn compile:local - + # Change back to the original directory cd "${original_path}" - + fi done diff --git a/yarn-project/boxes/run_tests b/yarn-project/boxes/run_tests index 24a089b203c..c358a9366ee 100755 --- a/yarn-project/boxes/run_tests +++ b/yarn-project/boxes/run_tests @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script is used to run an e2e type test in CI (see .circleci/config.yml). # It pulls images and runs docker-compose, which has the test as the entrypoint. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace diff --git a/yarn-project/canary/scripts/cond_run_script b/yarn-project/canary/scripts/cond_run_script index 32834cef2f1..84c03bd4574 100755 --- a/yarn-project/canary/scripts/cond_run_script +++ b/yarn-project/canary/scripts/cond_run_script @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Conditionally runs a script if any dependent code has changed between # the last successful run and the present commit. # diff --git a/yarn-project/canary/scripts/extract_packages.sh b/yarn-project/canary/scripts/extract_packages.sh index 24499e23375..78255e01b24 100755 --- a/yarn-project/canary/scripts/extract_packages.sh +++ b/yarn-project/canary/scripts/extract_packages.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash FILE=$1 diff --git a/yarn-project/canary/scripts/run_tests b/yarn-project/canary/scripts/run_tests index 21894dbedb0..6bde0b451a4 100755 --- a/yarn-project/canary/scripts/run_tests +++ b/yarn-project/canary/scripts/run_tests @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script is used to run an e2e test in CI (see config.yml and cond_spot_run_tests). # It sets a few environment variables used inside the docker-compose.yml, pulls images, and runs docker-compose. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace diff --git a/yarn-project/canary/scripts/update_packages.sh b/yarn-project/canary/scripts/update_packages.sh index c8fe7740bb7..085dfd217bd 100755 --- a/yarn-project/canary/scripts/update_packages.sh +++ b/yarn-project/canary/scripts/update_packages.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu DIST_TAG=$1 diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index 71d1cdce74a..e811fca3825 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -45,41 +45,41 @@ Fr { exports[`abis compute private call stack item hash 1`] = ` Fr { - "asBigInt": 3230879723118793997125108252427471059552102155544558929105689542823769599571n, + "asBigInt": 13809192571322547240575515130918617158374968996681790502325202985787581532861n, "asBuffer": { "data": [ - 7, - 36, - 156, - 245, - 105, - 70, - 179, - 10, - 128, - 189, - 85, - 143, - 184, - 14, - 255, - 238, - 59, - 2, - 250, + 30, + 135, + 185, + 220, + 55, + 60, + 119, + 134, + 22, + 123, + 87, + 99, + 43, + 234, + 86, + 169, + 206, + 146, + 188, + 13, + 134, + 227, 190, - 165, - 228, - 189, - 154, - 182, - 111, - 18, + 25, + 44, + 67, + 75, 122, - 180, - 216, - 238, - 83, + 160, + 244, + 10, + 189, ], "type": "Buffer", }, @@ -88,41 +88,41 @@ Fr { exports[`abis compute public call stack item hash 1`] = ` Fr { - "asBigInt": 1369626479296628599511967895314683808250163038382688147156251959177959447826n, + "asBigInt": 6223289183536253521779927953358130745841073382012179962378917401223198931043n, "asBuffer": { "data": [ - 3, - 7, - 46, - 93, - 156, - 140, - 48, - 165, - 187, - 71, - 235, - 199, - 129, - 159, - 8, - 25, - 33, - 227, - 241, - 253, - 4, - 14, + 13, + 194, + 65, + 193, + 43, 185, - 7, + 1, + 164, + 96, + 75, + 0, + 90, + 150, + 55, + 137, + 42, + 2, + 88, + 48, + 192, + 92, + 40, + 188, + 171, + 210, + 158, 30, - 112, - 136, - 232, - 202, - 252, - 29, - 18, + 216, + 251, + 47, + 248, + 99, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index 37bdad4b7bc..8daaae1f822 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -28,6 +28,8 @@ import { PrivateCircuitPublicInputs, PublicCallStackItem, PublicCircuitPublicInputs, + SideEffect, + SideEffectLinkedToNoteHash, TxContext, TxRequest, VerificationKey, @@ -529,9 +531,18 @@ function computePrivateInputsHash(input: PrivateCircuitPublicInputs) { computeCallContextHash(input.callContext), input.argsHash.toBuffer(), ...input.returnValues.map(fr => fr.toBuffer()), - ...input.readRequests.map(fr => fr.toBuffer()), - ...input.newCommitments.map(fr => fr.toBuffer()), - ...input.newNullifiers.map(fr => fr.toBuffer()), + ...input.readRequests + .map(se => se.toFieldArray()) + .flat() + .map(fr => fr.toBuffer()), + ...input.newCommitments + .map(se => se.toFieldArray()) + .flat() + .map(fr => fr.toBuffer()), + ...input.newNullifiers + .map(selinked => selinked.toFieldArray()) + .flat() + .map(fr => fr.toBuffer()), ...input.nullifiedCommitments.map(fr => fr.toBuffer()), ...input.privateCallStackHashes.map(fr => fr.toBuffer()), ...input.publicCallStackHashes.map(fr => fr.toBuffer()), @@ -593,6 +604,22 @@ function computeContractStorageUpdateRequestHash(input: ContractStorageUpdateReq function computeContractStorageReadsHash(input: ContractStorageRead) { return pedersenHash([input.storageSlot.toBuffer(), input.currentValue.toBuffer()], GeneratorIndex.PUBLIC_DATA_READ); } +/** + * + */ +function computeCommitmentsHash(input: SideEffect) { + return pedersenHash([input.value.toBuffer(), input.counter.toBuffer()], GeneratorIndex.SIDE_EFFECT); +} + +/** + * + */ +function computeNullifierHash(input: SideEffectLinkedToNoteHash) { + return pedersenHash( + [input.value.toBuffer(), input.noteHash.toBuffer(), input.counter.toBuffer()], + GeneratorIndex.SIDE_EFFECT, + ); +} /** * @@ -605,8 +632,8 @@ function computePublicInputsHash(input: PublicCircuitPublicInputs) { ...input.contractStorageUpdateRequests.map(computeContractStorageUpdateRequestHash), ...input.contractStorageReads.map(computeContractStorageReadsHash), ...input.publicCallStackHashes.map(fr => fr.toBuffer()), - ...input.newCommitments.map(fr => fr.toBuffer()), - ...input.newNullifiers.map(fr => fr.toBuffer()), + ...input.newCommitments.map(computeCommitmentsHash), + ...input.newNullifiers.map(computeNullifierHash), ...input.newL2ToL1Msgs.map(fr => fr.toBuffer()), ...input.unencryptedLogsHash.map(fr => fr.toBuffer()), input.unencryptedLogPreimagesLength.toBuffer(), diff --git a/yarn-project/circuits.js/src/barretenberg/crypto/aes128/index.test.ts b/yarn-project/circuits.js/src/barretenberg/crypto/aes128/index.test.ts index df34d06d305..9b8afc328e2 100644 --- a/yarn-project/circuits.js/src/barretenberg/crypto/aes128/index.test.ts +++ b/yarn-project/circuits.js/src/barretenberg/crypto/aes128/index.test.ts @@ -1,5 +1,3 @@ -import { init } from '@aztec/foundation/crypto'; - import { createCipheriv, createDecipheriv, randomBytes } from 'crypto'; import { Aes128 } from './index.js'; @@ -7,8 +5,7 @@ import { Aes128 } from './index.js'; describe('aes128', () => { let aes128!: Aes128; - beforeAll(async () => { - await init(); + beforeAll(() => { aes128 = new Aes128(); }); diff --git a/yarn-project/circuits.js/src/barretenberg/crypto/grumpkin/index.test.ts b/yarn-project/circuits.js/src/barretenberg/crypto/grumpkin/index.test.ts index 671c019291b..154ab39075f 100644 --- a/yarn-project/circuits.js/src/barretenberg/crypto/grumpkin/index.test.ts +++ b/yarn-project/circuits.js/src/barretenberg/crypto/grumpkin/index.test.ts @@ -1,4 +1,3 @@ -import { init } from '@aztec/foundation/crypto'; import { createDebugLogger } from '@aztec/foundation/log'; import { GrumpkinScalar, Point } from '../../../index.js'; @@ -9,8 +8,7 @@ const debug = createDebugLogger('bb:grumpkin_test'); describe('grumpkin', () => { let grumpkin!: Grumpkin; - beforeAll(async () => { - await init(); + beforeAll(() => { grumpkin = new Grumpkin(); }); diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 0277288cd4a..1ae727dfe1f 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -67,7 +67,7 @@ export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 144; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 4096; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/circuits.js/src/structs/call_request.ts b/yarn-project/circuits.js/src/structs/call_request.ts index 357aead7679..845318155af 100644 --- a/yarn-project/circuits.js/src/structs/call_request.ts +++ b/yarn-project/circuits.js/src/structs/call_request.ts @@ -94,7 +94,13 @@ export class CallRequest { ) {} toBuffer() { - return serializeToBuffer(this.hash, this.callerContractAddress, this.callerContext); + return serializeToBuffer( + this.hash, + this.callerContractAddress, + this.callerContext, + this.startSideEffectCounter, + this.endSideEffectCounter, + ); } /** @@ -108,8 +114,8 @@ export class CallRequest { Fr.fromBuffer(reader), reader.readObject(AztecAddress), reader.readObject(CallerContext), - new Fr(0), - new Fr(0), + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), ); } diff --git a/yarn-project/cli/Dockerfile b/yarn-project/cli/Dockerfile index dfffe9b1843..dc70ce119ca 100644 --- a/yarn-project/cli/Dockerfile +++ b/yarn-project/cli/Dockerfile @@ -1,17 +1,6 @@ FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-prod AS yarn-project-prod - ENTRYPOINT ["node", "--no-warnings", "/usr/src/yarn-project/cli/dest/bin/index.js"] # The version has been updated in yarn-project-prod. # Adding COMMIT_TAG here to rebuild versioned image. -ARG COMMIT_TAG="" - -# Setup cache volume. -ENV XDG_CACHE_HOME /cache -RUN mkdir /cache && chmod 777 /cache -VOLUME [ "/cache" ] - -# Run as non-root user. -RUN corepack enable -RUN addgroup -S aztec && adduser -S aztec -G aztec -USER aztec +ARG COMMIT_TAG="" \ No newline at end of file diff --git a/yarn-project/cli/src/cmds/add_note.ts b/yarn-project/cli/src/cmds/add_note.ts index 64340034370..33ad5a52f80 100644 --- a/yarn-project/cli/src/cmds/add_note.ts +++ b/yarn-project/cli/src/cmds/add_note.ts @@ -3,7 +3,7 @@ import { DebugLogger } from '@aztec/foundation/log'; import { ExtendedNote, Note, TxHash } from '@aztec/types'; import { createCompatibleClient } from '../client.js'; -import { parseFields } from '../utils.js'; +import { parseFields } from '../parse_args.js'; /** * diff --git a/yarn-project/cli/src/index.ts b/yarn-project/cli/src/index.ts index 27a7275880f..83d5ebd3f96 100644 --- a/yarn-project/cli/src/index.ts +++ b/yarn-project/cli/src/index.ts @@ -1,4 +1,3 @@ -import { initAztecJs } from '@aztec/aztec.js/init'; import { DebugLogger, LogFn } from '@aztec/foundation/log'; import { fileURLToPath } from '@aztec/foundation/url'; import { addNoirCompilerCommanderActions } from '@aztec/noir-compiler/cli'; @@ -22,7 +21,7 @@ import { parsePublicKey, parseSaltFromHexString, parseTxHash, -} from './utils.js'; +} from './parse_args.js'; /** * If we can successfully resolve 'host.docker.internal', then we are running in a container, and we should treat @@ -63,8 +62,6 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { .argParser(parsePrivateKey) .makeOptionMandatory(mandatory); - program.hook('preAction', initAztecJs); - program .command('deploy-l1-contracts') .description('Deploys all necessary Ethereum contracts for Aztec.') @@ -486,11 +483,12 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { .description('Updates Nodejs and Noir dependencies') .argument('[projectPath]', 'Path to the project directory', process.cwd()) .option('--contract [paths...]', 'Paths to contracts to update dependencies', []) - .option('--sandbox-version ', 'The sandbox version to update to. Defaults to latest', 'latest') + .option('--aztec-version ', 'The version to update Aztec packages to. Defaults to latest', 'latest') .addOption(pxeOption) .action(async (projectPath: string, options) => { const { update } = await import('./update/update.js'); - await update(projectPath, options.contract, options.rpcUrl, options.sandboxVersion, log, debugLogger); + const { contract, aztecVersion, rpcUrl } = options; + await update(projectPath, contract, rpcUrl, aztecVersion, log); }); addNoirCompilerCommanderActions(program, log); diff --git a/yarn-project/cli/src/parse_args.ts b/yarn-project/cli/src/parse_args.ts new file mode 100644 index 00000000000..e2641005cd2 --- /dev/null +++ b/yarn-project/cli/src/parse_args.ts @@ -0,0 +1,248 @@ +import { FunctionSelector } from '@aztec/aztec.js/abi'; +import { AztecAddress } from '@aztec/aztec.js/aztec_address'; +import { EthAddress } from '@aztec/aztec.js/eth_address'; +import { Fr, GrumpkinScalar, Point } from '@aztec/aztec.js/fields'; +import { LogId } from '@aztec/aztec.js/log_id'; +import { TxHash } from '@aztec/aztec.js/tx_hash'; + +import { InvalidArgumentError } from 'commander'; + +/** + * Removes the leading 0x from a hex string. If no leading 0x is found the string is returned unchanged. + * @param hex - A hex string + * @returns A new string with leading 0x removed + */ +const stripLeadingHex = (hex: string) => { + if (hex.length > 2 && hex.startsWith('0x')) { + return hex.substring(2); + } + return hex; +}; + +/** + * Parses a hex encoded string to an Fr integer to be used as salt + * @param str - Hex encoded string + * @returns A integer to be used as salt + */ +export function parseSaltFromHexString(str: string): Fr { + const hex = stripLeadingHex(str); + + // ensure it's a hex string + if (!hex.match(/^[0-9a-f]+$/i)) { + throw new InvalidArgumentError('Invalid hex string'); + } + + // pad it so that we may read it as a buffer. + // Buffer needs _exactly_ two hex characters per byte + const padded = hex.length % 2 === 1 ? '0' + hex : hex; + + // finally, turn it into an integer + return Fr.fromBuffer(Buffer.from(padded, 'hex')); +} + +/** + * Parses an AztecAddress from a string. + * @param address - A serialized Aztec address + * @returns An Aztec address + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseAztecAddress(address: string): AztecAddress { + try { + return AztecAddress.fromString(address); + } catch { + throw new InvalidArgumentError(`Invalid address: ${address}`); + } +} + +/** + * Parses an Ethereum address from a string. + * @param address - A serialized Ethereum address + * @returns An Ethereum address + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseEthereumAddress(address: string): EthAddress { + try { + return EthAddress.fromString(address); + } catch { + throw new InvalidArgumentError(`Invalid address: ${address}`); + } +} + +/** + * Parses an AztecAddress from a string. + * @param address - A serialized Aztec address + * @returns An Aztec address + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseOptionalAztecAddress(address: string): AztecAddress | undefined { + if (!address) { + return undefined; + } + return parseAztecAddress(address); +} + +/** + * Parses an optional log ID string into a LogId object. + * + * @param logId - The log ID string to parse. + * @returns The parsed LogId object, or undefined if the log ID is missing or empty. + */ +export function parseOptionalLogId(logId: string): LogId | undefined { + if (!logId) { + return undefined; + } + return LogId.fromString(logId); +} + +/** + * Parses a selector from a string. + * @param selector - A serialized selector. + * @returns A selector. + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseOptionalSelector(selector: string): FunctionSelector | undefined { + if (!selector) { + return undefined; + } + try { + return FunctionSelector.fromString(selector); + } catch { + throw new InvalidArgumentError(`Invalid selector: ${selector}`); + } +} + +/** + * Parses a string into an integer or returns undefined if the input is falsy. + * + * @param value - The string to parse into an integer. + * @returns The parsed integer, or undefined if the input string is falsy. + * @throws If the input is not a valid integer. + */ +export function parseOptionalInteger(value: string): number | undefined { + if (!value) { + return undefined; + } + const parsed = Number(value); + if (!Number.isInteger(parsed)) { + throw new InvalidArgumentError('Invalid integer.'); + } + return parsed; +} + +/** + * Parses a TxHash from a string. + * @param txHash - A transaction hash + * @returns A TxHash instance + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseTxHash(txHash: string): TxHash { + try { + return TxHash.fromString(txHash); + } catch { + throw new InvalidArgumentError(`Invalid transaction hash: ${txHash}`); + } +} + +/** + * Parses an optional TxHash from a string. + * Calls parseTxHash internally. + * @param txHash - A transaction hash + * @returns A TxHash instance, or undefined if the input string is falsy. + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseOptionalTxHash(txHash: string): TxHash | undefined { + if (!txHash) { + return undefined; + } + return parseTxHash(txHash); +} + +/** + * Parses a public key from a string. + * @param publicKey - A public key + * @returns A Point instance + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parsePublicKey(publicKey: string): Point { + try { + return Point.fromString(publicKey); + } catch (err) { + throw new InvalidArgumentError(`Invalid public key: ${publicKey}`); + } +} + +/** + * Parses a partial address from a string. + * @param address - A partial address + * @returns A Fr instance + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parsePartialAddress(address: string): Fr { + try { + return Fr.fromString(address); + } catch (err) { + throw new InvalidArgumentError(`Invalid partial address: ${address}`); + } +} + +/** + * Parses a private key from a string. + * @param privateKey - A string + * @returns A private key + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parsePrivateKey(privateKey: string): GrumpkinScalar { + try { + const value = GrumpkinScalar.fromString(privateKey); + // most likely a badly formatted key was passed + if (value.isZero()) { + throw new Error('Private key must not be zero'); + } + + return value; + } catch (err) { + throw new InvalidArgumentError(`Invalid private key: ${privateKey}`); + } +} + +/** + * Parses a field from a string. + * @param field - A string representing the field. + * @returns A field. + * @throws InvalidArgumentError if the input string is not valid. + */ +export function parseField(field: string): Fr { + try { + const isHex = field.startsWith('0x') || field.match(new RegExp(`^[0-9a-f]{${Fr.SIZE_IN_BYTES * 2}}$`, 'i')); + if (isHex) { + return Fr.fromString(field); + } + + if (['true', 'false'].includes(field)) { + return new Fr(field === 'true'); + } + + const isNumber = +field || field === '0'; + if (isNumber) { + return new Fr(BigInt(field)); + } + + const isBigInt = field.endsWith('n'); + if (isBigInt) { + return new Fr(BigInt(field.replace(/n$/, ''))); + } + + return new Fr(BigInt(field)); + } catch (err) { + throw new InvalidArgumentError(`Invalid field: ${field}`); + } +} + +/** + * Parses an array of strings to Frs. + * @param fields - An array of strings representing the fields. + * @returns An array of Frs. + */ +export function parseFields(fields: string[]): Fr[] { + return fields.map(parseField); +} diff --git a/yarn-project/cli/src/test/utils.test.ts b/yarn-project/cli/src/test/utils.test.ts index e465138083b..d0c9ff1b7ef 100644 --- a/yarn-project/cli/src/test/utils.test.ts +++ b/yarn-project/cli/src/test/utils.test.ts @@ -5,7 +5,8 @@ import { InvalidArgumentError } from 'commander'; import { MockProxy, mock } from 'jest-mock-extended'; import { encodeArgs } from '../encoding.js'; -import { getTxSender, parseSaltFromHexString, stripLeadingHex } from '../utils.js'; +import { parseSaltFromHexString } from '../parse_args.js'; +import { getTxSender, stripLeadingHex } from '../utils.js'; import { mockContractArtifact } from './mocks.js'; describe('CLI Utils', () => { diff --git a/yarn-project/cli/src/update/npm.ts b/yarn-project/cli/src/update/npm.ts index 6d73c1ca7d6..703dc29219f 100644 --- a/yarn-project/cli/src/update/npm.ts +++ b/yarn-project/cli/src/update/npm.ts @@ -9,6 +9,15 @@ import { SemVer, parse } from 'semver'; import { atomicUpdateFile } from '../utils.js'; import { DependencyChanges } from './common.js'; +const deprecatedNpmPackages = new Set([]); +const npmDeprecationMessage = ` +The following packages have been deprecated and will no longer be updated on the npm registry: +${Array.from(deprecatedNpmPackages) + .map(pkg => ` - ${pkg}`) + .join('\n')} +Remove them from package.json +`; + /** * Looks up a package.json file and returns its contents * @param projectPath - Path to Nodejs project @@ -68,6 +77,8 @@ export async function updateAztecDeps( log(`Updating @aztec packages to ${aztecVersion} in ${relative(process.cwd(), changes.file)}`); const version = aztecVersion.version; + let detectedDeprecatedPackages = false; + for (const depType of ['dependencies', 'devDependencies'] as const) { const dependencies = pkg[depType]; if (!dependencies) { @@ -84,6 +95,11 @@ export async function updateAztecDeps( continue; } + if (deprecatedNpmPackages.has(name)) { + detectedDeprecatedPackages = true; + continue; + } + if (dependencies[name] !== version) { changes.dependencies.push({ name, @@ -96,6 +112,10 @@ export async function updateAztecDeps( } } + if (detectedDeprecatedPackages) { + log(npmDeprecationMessage); + } + if (changes.dependencies.length > 0) { const contents = JSON.stringify(pkg, null, 2) + '\n'; await atomicUpdateFile(resolve(join(projectPath, 'package.json')), contents); diff --git a/yarn-project/cli/src/update/update.ts b/yarn-project/cli/src/update/update.ts index 977cb699c4e..9f78d0caab2 100644 --- a/yarn-project/cli/src/update/update.ts +++ b/yarn-project/cli/src/update/update.ts @@ -1,84 +1,68 @@ /* eslint-disable jsdoc/require-jsdoc */ -import { DebugLogger, LogFn } from '@aztec/foundation/log'; +import { LogFn } from '@aztec/foundation/log'; import { relative, resolve } from 'path'; -import { SemVer, coerce, gt, lt, parse } from 'semver'; +import { parse } from 'semver'; -import { createCompatibleClient } from '../client.js'; import { GITHUB_TAG_PREFIX } from '../github.js'; import { DependencyChanges } from './common.js'; import { updateAztecNr } from './noir.js'; -import { getNewestVersion as getLatestVersion, readPackageJson, updateAztecDeps, updateLockfile } from './npm.js'; +import { getNewestVersion, updateAztecDeps, updateLockfile } from './npm.js'; -const SANDBOX_PACKAGE = '@aztec/aztec-sandbox'; +const AZTECJS_PACKAGE = '@aztec/aztec.js'; +const UPDATE_DOCS_URL = 'https://docs.aztec.network/dev_docs/updating'; export async function update( projectPath: string, contracts: string[], pxeUrl: string, - sandboxVersion: string, + aztecVersion: string, log: LogFn, - debugLog: DebugLogger, ): Promise { - const targetSandboxVersion = - sandboxVersion === 'latest' ? await getLatestVersion(SANDBOX_PACKAGE, 'latest') : parse(sandboxVersion); + const targetAztecVersion = + aztecVersion === 'latest' ? await getNewestVersion(AZTECJS_PACKAGE, 'latest') : parse(aztecVersion); - if (!targetSandboxVersion) { - throw new Error(`Invalid aztec version ${sandboxVersion}`); + if (!targetAztecVersion) { + throw new Error(`Invalid aztec version ${aztecVersion}`); } - let currentSandboxVersion = await getNpmSandboxVersion(projectPath, log); - - if (!currentSandboxVersion) { - currentSandboxVersion = await getRemoteSandboxVersion(pxeUrl, log, debugLog); - - if (currentSandboxVersion && lt(currentSandboxVersion, targetSandboxVersion)) { - log(` -Sandbox is older than version ${targetSandboxVersion}. If running via docker-compose, follow update instructions: -https://docs.aztec.network/dev_docs/cli/updating - -Once the sandbox is updated, run the \`aztec-cli update\` command again`); - return; + const projectDependencyChanges: DependencyChanges[] = []; + try { + const npmChanges = await updateAztecDeps(resolve(process.cwd(), projectPath), targetAztecVersion, log); + if (npmChanges.dependencies.length > 0) { + updateLockfile(projectPath, log); } - } - - if (!currentSandboxVersion) { - throw new Error('Sandbox version could not be detected'); - } - - // sanity check - if (gt(currentSandboxVersion, targetSandboxVersion)) { - throw new Error('Local sandbox version is newer than latest version.'); - } - const npmChanges = await updateAztecDeps(projectPath, targetSandboxVersion, log); - if (npmChanges.dependencies.length > 0) { - updateLockfile(projectPath, log); + projectDependencyChanges.push(npmChanges); + } catch (err) { + if (err instanceof Error && 'code' in err && err.code === 'ENOENT') { + log(`No package.json found in ${projectPath}. Skipping npm update...`); + } else { + throw err; + } } - const contractChanges: DependencyChanges[] = []; for (const contract of contracts) { try { - contractChanges.push( + projectDependencyChanges.push( await updateAztecNr( - resolve(projectPath, contract), - `${GITHUB_TAG_PREFIX}-v${targetSandboxVersion.version}`, + resolve(process.cwd(), projectPath, contract), + `${GITHUB_TAG_PREFIX}-v${targetAztecVersion.version}`, log, ), ); } catch (err) { if (err instanceof Error && 'code' in err && err.code === 'ENOENT') { log(`No Nargo.toml found in ${relative(process.cwd(), contract)}. Skipping...`); - process.exit(1); + } else { + throw err; } - - throw err; } } - printChanges(npmChanges, log); + log(`To update Docker containers follow instructions at ${UPDATE_DOCS_URL}`); - contractChanges.forEach(changes => { + projectDependencyChanges.forEach(changes => { printChanges(changes, log); }); } @@ -93,40 +77,3 @@ function printChanges(changes: DependencyChanges, log: LogFn): void { }); } } - -async function getNpmSandboxVersion(projectPath: string, log: LogFn): Promise { - try { - const pkg = await readPackageJson(projectPath); - // use coerce instead of parse because it eliminates semver operators like ~ and ^ - if (pkg.dependencies?.[SANDBOX_PACKAGE]) { - return coerce(pkg.dependencies[SANDBOX_PACKAGE]); - } else if (pkg.devDependencies?.[SANDBOX_PACKAGE]) { - return coerce(pkg.devDependencies[SANDBOX_PACKAGE]); - } else { - return null; - } - } catch (err) { - if (err instanceof Error && 'code' in err && err.code === 'ENOENT') { - log(`No package.json found in ${projectPath}`); - process.exit(1); - } - - throw err; - } -} - -async function getRemoteSandboxVersion(pxeUrl: string, log: LogFn, debugLog: DebugLogger): Promise { - try { - const client = await createCompatibleClient(pxeUrl, debugLog); - const nodeInfo = await client.getNodeInfo(); - - return parse(nodeInfo.sandboxVersion); - } catch (err) { - if (err instanceof Error && err.message === 'fetch failed') { - log(`Could not connect to Sandbox running on ${pxeUrl}`); - process.exit(1); - } - - throw err; - } -} diff --git a/yarn-project/cli/src/utils.ts b/yarn-project/cli/src/utils.ts index ed8dd3cc017..40867e8fbb0 100644 --- a/yarn-project/cli/src/utils.ts +++ b/yarn-project/cli/src/utils.ts @@ -1,11 +1,7 @@ -import { type ContractArtifact, type FunctionArtifact, FunctionSelector } from '@aztec/aztec.js/abi'; +import { type ContractArtifact, type FunctionArtifact } from '@aztec/aztec.js/abi'; import { AztecAddress } from '@aztec/aztec.js/aztec_address'; -import { EthAddress } from '@aztec/aztec.js/eth_address'; import { type L1ContractArtifactsForDeployment } from '@aztec/aztec.js/ethereum'; -import { Fr, GrumpkinScalar, Point } from '@aztec/aztec.js/fields'; import { type PXE } from '@aztec/aztec.js/interfaces/pxe'; -import { LogId } from '@aztec/aztec.js/log_id'; -import { TxHash } from '@aztec/aztec.js/tx_hash'; import { DebugLogger, LogFn } from '@aztec/foundation/log'; import { CommanderError, InvalidArgumentError } from 'commander'; @@ -182,234 +178,6 @@ export const stripLeadingHex = (hex: string) => { return hex; }; -/** - * Parses a hex encoded string to an Fr integer to be used as salt - * @param str - Hex encoded string - * @returns A integer to be used as salt - */ -export function parseSaltFromHexString(str: string): Fr { - const hex = stripLeadingHex(str); - - // ensure it's a hex string - if (!hex.match(/^[0-9a-f]+$/i)) { - throw new InvalidArgumentError('Invalid hex string'); - } - - // pad it so that we may read it as a buffer. - // Buffer needs _exactly_ two hex characters per byte - const padded = hex.length % 2 === 1 ? '0' + hex : hex; - - // finally, turn it into an integer - return Fr.fromBuffer(Buffer.from(padded, 'hex')); -} - -/** - * Parses an AztecAddress from a string. - * @param address - A serialized Aztec address - * @returns An Aztec address - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseAztecAddress(address: string): AztecAddress { - try { - return AztecAddress.fromString(address); - } catch { - throw new InvalidArgumentError(`Invalid address: ${address}`); - } -} - -/** - * Parses an Ethereum address from a string. - * @param address - A serialized Ethereum address - * @returns An Ethereum address - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseEthereumAddress(address: string): EthAddress { - try { - return EthAddress.fromString(address); - } catch { - throw new InvalidArgumentError(`Invalid address: ${address}`); - } -} - -/** - * Parses an AztecAddress from a string. - * @param address - A serialized Aztec address - * @returns An Aztec address - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseOptionalAztecAddress(address: string): AztecAddress | undefined { - if (!address) { - return undefined; - } - return parseAztecAddress(address); -} - -/** - * Parses an optional log ID string into a LogId object. - * - * @param logId - The log ID string to parse. - * @returns The parsed LogId object, or undefined if the log ID is missing or empty. - */ -export function parseOptionalLogId(logId: string): LogId | undefined { - if (!logId) { - return undefined; - } - return LogId.fromString(logId); -} - -/** - * Parses a selector from a string. - * @param selector - A serialized selector. - * @returns A selector. - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseOptionalSelector(selector: string): FunctionSelector | undefined { - if (!selector) { - return undefined; - } - try { - return FunctionSelector.fromString(selector); - } catch { - throw new InvalidArgumentError(`Invalid selector: ${selector}`); - } -} - -/** - * Parses a string into an integer or returns undefined if the input is falsy. - * - * @param value - The string to parse into an integer. - * @returns The parsed integer, or undefined if the input string is falsy. - * @throws If the input is not a valid integer. - */ -export function parseOptionalInteger(value: string): number | undefined { - if (!value) { - return undefined; - } - const parsed = Number(value); - if (!Number.isInteger(parsed)) { - throw new InvalidArgumentError('Invalid integer.'); - } - return parsed; -} - -/** - * Parses a TxHash from a string. - * @param txHash - A transaction hash - * @returns A TxHash instance - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseTxHash(txHash: string): TxHash { - try { - return TxHash.fromString(txHash); - } catch { - throw new InvalidArgumentError(`Invalid transaction hash: ${txHash}`); - } -} - -/** - * Parses an optional TxHash from a string. - * Calls parseTxHash internally. - * @param txHash - A transaction hash - * @returns A TxHash instance, or undefined if the input string is falsy. - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseOptionalTxHash(txHash: string): TxHash | undefined { - if (!txHash) { - return undefined; - } - return parseTxHash(txHash); -} - -/** - * Parses a public key from a string. - * @param publicKey - A public key - * @returns A Point instance - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parsePublicKey(publicKey: string): Point { - try { - return Point.fromString(publicKey); - } catch (err) { - throw new InvalidArgumentError(`Invalid public key: ${publicKey}`); - } -} - -/** - * Parses a partial address from a string. - * @param address - A partial address - * @returns A Fr instance - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parsePartialAddress(address: string): Fr { - try { - return Fr.fromString(address); - } catch (err) { - throw new InvalidArgumentError(`Invalid partial address: ${address}`); - } -} - -/** - * Parses a private key from a string. - * @param privateKey - A string - * @returns A private key - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parsePrivateKey(privateKey: string): GrumpkinScalar { - try { - const value = GrumpkinScalar.fromString(privateKey); - // most likely a badly formatted key was passed - if (value.isZero()) { - throw new Error('Private key must not be zero'); - } - - return value; - } catch (err) { - throw new InvalidArgumentError(`Invalid private key: ${privateKey}`); - } -} - -/** - * Parses a field from a string. - * @param field - A string representing the field. - * @returns A field. - * @throws InvalidArgumentError if the input string is not valid. - */ -export function parseField(field: string): Fr { - try { - const isHex = field.startsWith('0x') || field.match(new RegExp(`^[0-9a-f]{${Fr.SIZE_IN_BYTES * 2}}$`, 'i')); - if (isHex) { - return Fr.fromString(field); - } - - if (['true', 'false'].includes(field)) { - return new Fr(field === 'true'); - } - - const isNumber = +field || field === '0'; - if (isNumber) { - return new Fr(BigInt(field)); - } - - const isBigInt = field.endsWith('n'); - if (isBigInt) { - return new Fr(BigInt(field.replace(/n$/, ''))); - } - - return new Fr(BigInt(field)); - } catch (err) { - throw new InvalidArgumentError(`Invalid field: ${field}`); - } -} - -/** - * Parses an array of strings to Frs. - * @param fields - An array of strings representing the fields. - * @returns An array of Frs. - */ -export function parseFields(fields: string[]): Fr[] { - return fields.map(parseField); -} - /** * Updates a file in place atomically. * @param filePath - Path to file diff --git a/yarn-project/deploy_npm.sh b/yarn-project/deploy_npm.sh index 04f6ab46841..f092e6fe106 100755 --- a/yarn-project/deploy_npm.sh +++ b/yarn-project/deploy_npm.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/yarn-project/end-to-end/scripts/setup_canary.sh b/yarn-project/end-to-end/scripts/setup_canary.sh index 2d4cd7fa2ef..14d7e176652 100755 --- a/yarn-project/end-to-end/scripts/setup_canary.sh +++ b/yarn-project/end-to-end/scripts/setup_canary.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu TARGET_PKGS_FILE=$1 diff --git a/yarn-project/end-to-end/src/e2e_inclusion_proofs_contract.test.ts b/yarn-project/end-to-end/src/e2e_inclusion_proofs_contract.test.ts index 56807979809..4240a863566 100644 --- a/yarn-project/end-to-end/src/e2e_inclusion_proofs_contract.test.ts +++ b/yarn-project/end-to-end/src/e2e_inclusion_proofs_contract.test.ts @@ -19,12 +19,15 @@ describe('e2e_inclusion_proofs_contract', () => { let accounts: CompleteAddress[]; let contract: InclusionProofsContract; + let deploymentBlockNumber: number; const publicValue = 236n; beforeAll(async () => { ({ pxe, teardown, wallets, accounts } = await setup(1)); - contract = await InclusionProofsContract.deploy(wallets[0], publicValue).send().deployed(); + const receipt = await InclusionProofsContract.deploy(wallets[0], publicValue).send().wait(); + contract = receipt.contract; + deploymentBlockNumber = receipt.blockNumber!; }, 100_000); afterAll(() => teardown()); @@ -32,11 +35,15 @@ describe('e2e_inclusion_proofs_contract', () => { it('proves note existence and its nullifier non-existence and nullifier non-existence failure case', async () => { // Owner of a note const owner = accounts[0].address; + let noteCreationBlockNumber: number; { // Create a note const value = 100n; const receipt = await contract.methods.create_note(owner, value).send().wait({ debug: true }); + + noteCreationBlockNumber = receipt.blockNumber!; const { newCommitments, visibleNotes } = receipt.debugInfo!; + expect(newCommitments.length).toBe(1); expect(visibleNotes.length).toBe(1); const [receivedValue, receivedOwner, _randomness] = visibleNotes[0].note.items; @@ -46,17 +53,14 @@ describe('e2e_inclusion_proofs_contract', () => { { // Prove note inclusion in a given block. - // TODO: Use here note block number from the creation note tx to test archival node. This is currently not - // possible because of issue #3564 - const blockNumber = await pxe.getBlockNumber(); const ignoredCommitment = 0; // Not ignored only when the note doesn't exist - await contract.methods.proveNoteInclusion(owner, blockNumber, ignoredCommitment).send().wait(); + await contract.methods.proveNoteInclusion(owner, noteCreationBlockNumber, ignoredCommitment).send().wait(); } { // Prove that the note has not been nullified - // TODO: Use here note block number from the creation note tx to test archival node. This is currently not - // possible because of issue #3564 + // TODO(#3535): Prove the nullifier non-inclusion at older block to test archival node. This is currently not + // possible because of issue https://github.com/AztecProtocol/aztec-packages/issues/3535 const blockNumber = await pxe.getBlockNumber(); const ignoredNullifier = 0; // Not ignored only when the note doesn't exist await contract.methods.proveNullifierNonInclusion(owner, blockNumber, ignoredNullifier).send().wait(); @@ -93,12 +97,16 @@ describe('e2e_inclusion_proofs_contract', () => { }); it('proves an existence of a public value in private context', async () => { - const blockNumber = await pxe.getBlockNumber(); + // Chose random block number between deployment and current block number to test archival node + const blockNumber = await getRandomBlockNumberSinceDeployment(); + await contract.methods.provePublicValueInclusion(publicValue, blockNumber).send().wait(); }); it('public value existence failure case', async () => { - const blockNumber = await pxe.getBlockNumber(); + // Chose random block number between deployment and current block number to test archival node + const blockNumber = await getRandomBlockNumberSinceDeployment(); + const randomPublicValue = Fr.random(); await expect( contract.methods.provePublicValueInclusion(randomPublicValue, blockNumber).send().wait(), @@ -106,6 +114,8 @@ describe('e2e_inclusion_proofs_contract', () => { }); it('proves existence of a nullifier in private context', async () => { + // TODO(#3535): Test this at "random" block to test archival node. This is currently not possible because of + // issue https://github.com/AztecProtocol/aztec-packages/issues/3535 const blockNumber = await pxe.getBlockNumber(); const block = await pxe.getBlock(blockNumber); const nullifier = block?.newNullifiers[0]; @@ -114,6 +124,8 @@ describe('e2e_inclusion_proofs_contract', () => { }); it('nullifier existence failure case', async () => { + // TODO(#3535): Test this at "random" block to test archival node. This is currently not possible because of + // issue https://github.com/AztecProtocol/aztec-packages/issues/3535 const blockNumber = await pxe.getBlockNumber(); const randomNullifier = Fr.random(); @@ -121,4 +133,9 @@ describe('e2e_inclusion_proofs_contract', () => { /Low nullifier witness not found for nullifier 0x[0-9a-fA-F]+ at block/, ); }); + + const getRandomBlockNumberSinceDeployment = async () => { + const currentBlockNumber = await pxe.getBlockNumber(); + return deploymentBlockNumber + Math.floor(Math.random() * (currentBlockNumber - deploymentBlockNumber)); + }; }); diff --git a/yarn-project/end-to-end/src/shared/browser.ts b/yarn-project/end-to-end/src/shared/browser.ts index 9c7cfdfc154..72b064bc903 100644 --- a/yarn-project/end-to-end/src/shared/browser.ts +++ b/yarn-project/end-to-end/src/shared/browser.ts @@ -84,9 +84,8 @@ export const browserTestSuite = (setup: () => Server, pageLogger: AztecJs.DebugL }); it('Loads Aztec.js in the browser', async () => { - const generatePublicKeyExists = await page.evaluate(async () => { - const { generatePublicKey, init } = window.AztecJs; - await init(); + const generatePublicKeyExists = await page.evaluate(() => { + const { generatePublicKey } = window.AztecJs; return typeof generatePublicKey === 'function'; }); expect(generatePublicKeyExists).toBe(true); diff --git a/yarn-project/foundation/src/abi/abi_coder.ts b/yarn-project/foundation/src/abi/abi_coder.ts index 6971b423757..a702e65153a 100644 --- a/yarn-project/foundation/src/abi/abi_coder.ts +++ b/yarn-project/foundation/src/abi/abi_coder.ts @@ -1,4 +1,4 @@ -import { ABIType } from '@aztec/foundation/abi'; +import { type ABIType } from './abi.js'; /** * Get the size of an ABI type in field elements. diff --git a/yarn-project/foundation/src/abi/decoder.ts b/yarn-project/foundation/src/abi/decoder.ts index 9ea69388f76..cd37ba361e5 100644 --- a/yarn-project/foundation/src/abi/decoder.ts +++ b/yarn-project/foundation/src/abi/decoder.ts @@ -1,5 +1,5 @@ -import { ABIParameter, ABIType, ABIVariable, FunctionArtifact } from '@aztec/foundation/abi'; -import { Fr } from '@aztec/foundation/fields'; +import { Fr } from '../fields/index.js'; +import { ABIParameter, type ABIType, ABIVariable, FunctionArtifact } from './abi.js'; /** * The type of our decoded ABI. diff --git a/yarn-project/foundation/src/abi/encoder.ts b/yarn-project/foundation/src/abi/encoder.ts index 2e4b1844060..a4db8e24230 100644 --- a/yarn-project/foundation/src/abi/encoder.ts +++ b/yarn-project/foundation/src/abi/encoder.ts @@ -1,6 +1,6 @@ -import { ABIType, FunctionAbi, isAddressStruct } from '@aztec/foundation/abi'; - import { Fr } from '../fields/index.js'; +import { ABIType, FunctionAbi } from './abi.js'; +import { isAddressStruct } from './utils.js'; /** * Encodes arguments for a function call. diff --git a/yarn-project/foundation/src/abi/function_selector.ts b/yarn-project/foundation/src/abi/function_selector.ts index df53ef9a1fb..de0b879cf6b 100644 --- a/yarn-project/foundation/src/abi/function_selector.ts +++ b/yarn-project/foundation/src/abi/function_selector.ts @@ -1,9 +1,11 @@ -import { ABIParameter, decodeFunctionSignature } from '@aztec/foundation/abi'; import { toBigIntBE, toBufferBE } from '@aztec/foundation/bigint-buffer'; -import { keccak } from '@aztec/foundation/crypto'; -import { Fr } from '@aztec/foundation/fields'; import { BufferReader } from '@aztec/foundation/serialize'; +import { keccak } from '../crypto/keccak/index.js'; +import { Fr } from '../fields/index.js'; +import { ABIParameter } from './abi.js'; +import { decodeFunctionSignature } from './decoder.js'; + /** * A function selector is the first 4 bytes of the hash of a function signature. */ diff --git a/yarn-project/foundation/src/abi/utils.ts b/yarn-project/foundation/src/abi/utils.ts index b2ee62d2dd5..d7d15a4d94a 100644 --- a/yarn-project/foundation/src/abi/utils.ts +++ b/yarn-project/foundation/src/abi/utils.ts @@ -1,4 +1,4 @@ -import { ABIType } from './abi.js'; +import { type ABIType } from './abi.js'; /** * Returns whether the ABI type is an Aztec or Ethereum Address defined in Aztec.nr. diff --git a/yarn-project/foundation/src/crypto/pedersen/pedersen.wasm.ts b/yarn-project/foundation/src/crypto/pedersen/pedersen.wasm.ts index 6793b368c8f..7cc23bd8503 100644 --- a/yarn-project/foundation/src/crypto/pedersen/pedersen.wasm.ts +++ b/yarn-project/foundation/src/crypto/pedersen/pedersen.wasm.ts @@ -6,7 +6,7 @@ import { BarretenbergSync, Fr } from '@aztec/bb.js'; */ export function pedersenCommit(input: Buffer[]) { if (!input.every(i => i.length <= 32)) { - throw new Error('All input buffers must be <= 32 bytes.'); + throw new Error('All Pedersen Commit input buffers must be <= 32 bytes.'); } input = input.map(i => (i.length < 32 ? Buffer.concat([Buffer.alloc(32 - i.length, 0), i]) : i)); const point = BarretenbergSync.getSingleton().pedersenCommit(input.map(i => new Fr(i))); @@ -21,7 +21,7 @@ export function pedersenCommit(input: Buffer[]) { */ export function pedersenHash(input: Buffer[], index = 0) { if (!input.every(i => i.length <= 32)) { - throw new Error('All input buffers must be <= 32 bytes.'); + throw new Error('All Pedersen Hash input buffers must be <= 32 bytes.'); } input = input.map(i => (i.length < 32 ? Buffer.concat([Buffer.alloc(32 - i.length, 0), i]) : i)); return Buffer.from( diff --git a/yarn-project/foundation/src/eth-address/index.ts b/yarn-project/foundation/src/eth-address/index.ts index 2571f09790c..76587ecab26 100644 --- a/yarn-project/foundation/src/eth-address/index.ts +++ b/yarn-project/foundation/src/eth-address/index.ts @@ -1,4 +1,5 @@ -import { keccak256String, randomBytes } from '../crypto/index.js'; +import { keccak256String } from '../crypto/keccak/index.js'; +import { randomBytes } from '../crypto/random/index.js'; import { Fr } from '../fields/index.js'; import { BufferReader } from '../serialize/index.js'; diff --git a/yarn-project/foundation/src/fields/fields.ts b/yarn-project/foundation/src/fields/fields.ts index 591b57f6892..90600643cfe 100644 --- a/yarn-project/foundation/src/fields/fields.ts +++ b/yarn-project/foundation/src/fields/fields.ts @@ -1,5 +1,5 @@ import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js'; -import { randomBytes } from '../crypto/index.js'; +import { randomBytes } from '../crypto/random/index.js'; import { BufferReader } from '../serialize/buffer_reader.js'; const ZERO_BUFFER = Buffer.alloc(32); diff --git a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh index 1c4bd5e2ba9..37a07c35e17 100755 --- a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh +++ b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail; target_dir=./generated diff --git a/yarn-project/noir-compiler/src/cli/add_noir_compiler_commander_actions.ts b/yarn-project/noir-compiler/src/cli/add_noir_compiler_commander_actions.ts index f651eecd996..7dff5ecb7b1 100644 --- a/yarn-project/noir-compiler/src/cli/add_noir_compiler_commander_actions.ts +++ b/yarn-project/noir-compiler/src/cli/add_noir_compiler_commander_actions.ts @@ -26,7 +26,7 @@ export function addNoirCompilerCommanderActions(program: Command, log: LogFn = ( .option('-o, --outdir ', 'Output folder for the binary artifacts, relative to the project path', 'target') .option('-ts, --typescript ', 'Optional output folder for generating typescript wrappers', undefined) .option('-i, --interface ', 'Optional output folder for generating an Aztec.nr contract interface', undefined) - .option('-c --compiler ', 'Which compiler to use. Either nargo or wasm. Defaults to nargo', 'wasm') + .option('-c --compiler ', 'Which compiler to use. Either nargo or wasm.', 'wasm') .description('Compiles the Noir Source in the target project') .action(async (projectPath: string, options: Options) => { diff --git a/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts b/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts index df819ae6578..d97f66f1a43 100644 --- a/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts +++ b/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts @@ -89,6 +89,10 @@ export function generateContractArtifact( { contract, debug }: NoirContractCompilationArtifacts, aztecNrVersion?: string, ): ContractArtifact { + const constructorArtifact = contract.functions.find(({ name }) => name === 'constructor'); + if (constructorArtifact === undefined) { + throw new Error('Contract must have a constructor function'); + } if (contract.functions.length > 2 ** FUNCTION_TREE_HEIGHT) { throw new Error(`Contract can only have a maximum of ${2 ** FUNCTION_TREE_HEIGHT} functions`); } diff --git a/yarn-project/noir-contracts/scripts/catch.sh b/yarn-project/noir-contracts/scripts/catch.sh index 8a0a894b93f..87b485eb3f3 100644 --- a/yarn-project/noir-contracts/scripts/catch.sh +++ b/yarn-project/noir-contracts/scripts/catch.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Handler for SIGCHLD, cleanup if child exit with error, used by nargo_test.sh and compile.sh handle_sigchld() { diff --git a/yarn-project/noir-contracts/scripts/compile.sh b/yarn-project/noir-contracts/scripts/compile.sh index bc217a6156b..055485220e0 100755 --- a/yarn-project/noir-contracts/scripts/compile.sh +++ b/yarn-project/noir-contracts/scripts/compile.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail; diff --git a/yarn-project/noir-contracts/scripts/compile_all.sh b/yarn-project/noir-contracts/scripts/compile_all.sh index 32de820a630..7445dbbc854 100755 --- a/yarn-project/noir-contracts/scripts/compile_all.sh +++ b/yarn-project/noir-contracts/scripts/compile_all.sh @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash echo "Compiling all contracts" ./scripts/compile.sh $(./scripts/get_all_contracts.sh) diff --git a/yarn-project/noir-contracts/scripts/get_all_contracts.sh b/yarn-project/noir-contracts/scripts/get_all_contracts.sh index caaf81c1a13..1311a4862a4 100755 --- a/yarn-project/noir-contracts/scripts/get_all_contracts.sh +++ b/yarn-project/noir-contracts/scripts/get_all_contracts.sh @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash # Utility to get the names of all contracts echo $(ls -d src/contracts/*_contract/Nargo.toml | sed -r "s/src\\/contracts\\/(.+)_contract\\/Nargo.toml/\\1/") \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/get_all_libraries.sh b/yarn-project/noir-contracts/scripts/get_all_libraries.sh index f1913a46caf..8fbe7bb1b19 100755 --- a/yarn-project/noir-contracts/scripts/get_all_libraries.sh +++ b/yarn-project/noir-contracts/scripts/get_all_libraries.sh @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash # Utility to get the names of all noir libraries located in ../aztec-nr echo $(ls -d ../aztec-nr/*/Nargo.toml | sed -r "s/..\\/aztec-nr\\/(.+)\\/Nargo.toml/\\1/") \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/install_noir.sh b/yarn-project/noir-contracts/scripts/install_noir.sh index 325e9a56620..b1105d6ad46 100755 --- a/yarn-project/noir-contracts/scripts/install_noir.sh +++ b/yarn-project/noir-contracts/scripts/install_noir.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Script to install noirup and the latest aztec nargo set -eu diff --git a/yarn-project/noir-contracts/scripts/install_noirup.sh b/yarn-project/noir-contracts/scripts/install_noirup.sh index 11ba9b15d31..025237333cd 100755 --- a/yarn-project/noir-contracts/scripts/install_noirup.sh +++ b/yarn-project/noir-contracts/scripts/install_noirup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Script to install noirup and the latest nargo set -eu diff --git a/yarn-project/noir-contracts/scripts/nargo_check.sh b/yarn-project/noir-contracts/scripts/nargo_check.sh index 10d9d14c2c1..45209d4ee43 100644 --- a/yarn-project/noir-contracts/scripts/nargo_check.sh +++ b/yarn-project/noir-contracts/scripts/nargo_check.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Check nargo version matches the expected one nargo_check() { diff --git a/yarn-project/noir-contracts/scripts/nargo_test.sh b/yarn-project/noir-contracts/scripts/nargo_test.sh index 8468c19f492..0666714388d 100755 --- a/yarn-project/noir-contracts/scripts/nargo_test.sh +++ b/yarn-project/noir-contracts/scripts/nargo_test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Tests noir contracts, if multiple are provided, then they are testing in parallel, bubbling any testing errors # diff --git a/yarn-project/noir-contracts/scripts/nargo_test_ci.sh b/yarn-project/noir-contracts/scripts/nargo_test_ci.sh index 5a4458d4da5..d835f972324 100755 --- a/yarn-project/noir-contracts/scripts/nargo_test_ci.sh +++ b/yarn-project/noir-contracts/scripts/nargo_test_ci.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Runs tests scripts for all contracts, then for all libraries. ./scripts/nargo_test.sh CONTRACT $(./scripts/get_all_contracts.sh) diff --git a/yarn-project/noir-contracts/scripts/types.sh b/yarn-project/noir-contracts/scripts/types.sh index ebbc24bdc5f..3e2410e4004 100755 --- a/yarn-project/noir-contracts/scripts/types.sh +++ b/yarn-project/noir-contracts/scripts/types.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Example: # - this script will automatically be run when running `yarn noir:build` diff --git a/yarn-project/noir-contracts/scripts/types_all.sh b/yarn-project/noir-contracts/scripts/types_all.sh index 5cbb3ce9d91..38081dc6efe 100755 --- a/yarn-project/noir-contracts/scripts/types_all.sh +++ b/yarn-project/noir-contracts/scripts/types_all.sh @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash # Run the types script for all files ./scripts/types.sh $(./scripts/get_all_contracts.sh) diff --git a/yarn-project/noir-contracts/src/contracts/inclusion_proofs_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/inclusion_proofs_contract/src/main.nr index d9235ccd6ee..a06c832cd50 100644 --- a/yarn-project/noir-contracts/src/contracts/inclusion_proofs_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/inclusion_proofs_contract/src/main.nr @@ -98,14 +98,9 @@ contract InclusionProofs { #[aztec(private)] fn proveNoteInclusion( owner: AztecAddress, - block_number: Field, // The block at which we'll prove that the note exists + block_number: u32, // The block at which we'll prove that the note exists spare_commitment: Field, // This is only used when the note is not found --> used to test the failure case ) { - // TODO: assert that block number is less than the block number of context.block_header - // --> This will either require a new oracle method that returns block_header.global_variables_hash preimage - // or modifying the private context so that we somehow expose it. - // Blocked by #3564 - // 1) Get block header from oracle and ensure that the block hash is included in the current blocks tree // root. let block_header = context.get_block_header(block_number); @@ -142,14 +137,9 @@ contract InclusionProofs { #[aztec(private)] fn proveNullifierNonInclusion( owner: AztecAddress, - block_number: Field, // The block at which we'll prove that the nullifier does not exists + block_number: u32, // The block at which we'll prove that the nullifier does not exists spare_nullifier: Field, // This is only used when the note is not found --> used to test the failure case ) { - // TODO: assert that block number is less than the block number of context.block_header - // --> This will either require a new oracle method that returns block_header.global_variables_hash preimage - // or modifying the private context so that we somehow expose it. - // Blocked by #3564 - // 1) Get block header from oracle and ensure that the block hash is included in the current blocks tree // root. let block_header = context.get_block_header(block_number); @@ -215,13 +205,8 @@ contract InclusionProofs { #[aztec(private)] fn proveNullifierInclusion( nullifier: Field, - block_number: Field, // The block at which we'll prove that the nullifier not exists in the tree + block_number: u32, // The block at which we'll prove that the nullifier not exists in the tree ) { - // TODO: assert that block number is less than the block number of context.block_header - // --> This will either require a new oracle method that returns block_header.global_variables_hash preimage - // or modifying the private context so that we somehow expose it. - // Blocked by #3564 - // 1) Get block header from oracle and ensure that the block hash is included in the current blocks tree // root. let block_header = context.get_block_header(block_number); @@ -248,13 +233,8 @@ contract InclusionProofs { #[aztec(private)] fn provePublicValueInclusion( public_value: Field, - block_number: Field, // The block at which we'll prove that the public value exists + block_number: u32, // The block at which we'll prove that the public value exists ) { - // TODO: assert that block number is less than the block number of context.block_header - // --> This will either require a new oracle method that returns block_header.global_variables_hash preimage - // or modifying the private context so that we somehow expose it. - // Blocked by #3564 - // 1) Get block header from oracle and ensure that the block hash is included in the current blocks tree // root. let block_header = context.get_block_header(block_number); diff --git a/yarn-project/noir-contracts/src/scripts/compile.sh b/yarn-project/noir-contracts/src/scripts/compile.sh index 551f7a74869..adedfaeba4f 100755 --- a/yarn-project/noir-contracts/src/scripts/compile.sh +++ b/yarn-project/noir-contracts/src/scripts/compile.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Example: diff --git a/yarn-project/noir-protocol-circuits/package.json b/yarn-project/noir-protocol-circuits/package.json index f5eccb835a5..d771d081207 100644 --- a/yarn-project/noir-protocol-circuits/package.json +++ b/yarn-project/noir-protocol-circuits/package.json @@ -11,15 +11,13 @@ "build:dev": "tsc -b --watch", "clean": "rm -rf ./dest .tsbuildinfo", "formatting": "run -T prettier --check ./src && run -T eslint ./src", - "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src", + "formatting:fix": "NODE_OPTIONS='--max-old-space-size=8096' run -T eslint --fix ./src && run -T prettier -w ./src", "noir:build": "cd src && ../../../noir/target/release/nargo compile --silence-warnings && rm -rf ./target/debug_*", "noir:types": "yarn ts-node --esm src/scripts/generate_ts_from_abi.ts && yarn formatting:fix", "noir:test": "cd src && ../../../noir/target/release/nargo test", - "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests" + "test": "yarn test:js && yarn noir:test", + "test:js": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests" }, - "inherits": [ - "../package.common.json" - ], "jest": { "preset": "ts-jest/presets/default-esm", "moduleNameMapper": { diff --git a/yarn-project/noir-protocol-circuits/src/Nargo.toml b/yarn-project/noir-protocol-circuits/src/Nargo.toml index 8bd7b69d009..40096bdb01a 100644 --- a/yarn-project/noir-protocol-circuits/src/Nargo.toml +++ b/yarn-project/noir-protocol-circuits/src/Nargo.toml @@ -4,15 +4,13 @@ members = [ "crates/private-kernel-lib", "crates/private-kernel-init", "crates/private-kernel-init-simulated", + "crates/private-kernel-inner", + "crates/private-kernel-inner-simulated", "crates/private-kernel-ordering", "crates/private-kernel-ordering-simulated", "crates/public-kernel-lib", "crates/public-kernel-private-previous", "crates/public-kernel-private-previous-simulated", -] -rest = [ - "crates/private-kernel-inner", - "crates/private-kernel-inner-simulated", "crates/public-kernel-public-previous", "crates/public-kernel-public-previous-simulated", "crates/rollup-lib", diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index 850acabc9de..83629524134 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -1053,2652 +1053,2195 @@ KernelCircuitPublicInputs { }, ], "newCommitments": [ - Fr { - "asBigInt": 8240305160289019381083256608879877337799989644951984162356314972952353509340n, - "asBuffer": { - "data": [ - 18, - 55, - 216, - 241, - 215, - 66, - 41, - 46, - 0, - 125, - 4, - 230, - 109, - 173, - 105, - 145, - 109, - 210, - 57, - 161, - 19, - 69, - 62, - 207, - 135, - 242, - 27, - 70, - 147, - 51, - 15, - 220, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 8240305160289019381083256608879877337799989644951984162356314972952353509340n, + "asBuffer": { + "data": [ + 18, + 55, + 216, + 241, + 215, + 66, + 41, + 46, + 0, + 125, + 4, + 230, + 109, + 173, + 105, + 145, + 109, + 210, + 57, + 161, + 19, + 69, + 62, + 207, + 135, + 242, + 27, + 70, + 147, + 51, + 15, + 220, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "newContracts": [ - NewContractData { - "contractAddress": AztecAddress { - "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 37, - 226, - 192, - 23, - 245, - 218, - 31, - 153, - 68, - 1, - 230, - 29, - 38, - 190, - 67, - 94, - 60, - 250, - 38, - 239, - 238, - 120, - 76, - 107, - 78, - 148, - 127, - 118, - 81, - 189, - 65, - 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "functionTreeRoot": Fr { - "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 12, - 173, - 59, - 83, - 145, - 228, - 10, - 248, - 116, - 62, - 16, - 83, - 192, - 21, - 225, - 106, - 186, - 198, - 16, - 10, - 139, - 145, - 117, - 18, - 192, - 131, - 203, - 76, - 187, - 140, - 204, - 3, - ], - "type": "Buffer", - }, - }, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -3724,2772 +3267,3153 @@ KernelCircuitPublicInputs { }, }, }, - ], - "newL2ToL1Msgs": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "newNullifiers": [ - Fr { - "asBigInt": 2567833015098009695197683741929052765845567165156134398536953771337640275556n, - "asBuffer": { - "data": [ - 5, - 173, - 87, - 140, - 34, - 169, - 107, - 104, - 191, - 247, - 76, - 132, - 57, - 231, - 109, - 208, - 71, - 246, - 205, - 22, - 148, - 50, - 20, - 219, - 39, - 232, - 4, - 177, - 237, - 31, - 110, - 100, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 131391450486342918604555900920288880952936359657946230216264970318333633026n, - "asBuffer": { - "data": [ - 0, - 74, - 93, - 107, - 195, - 78, - 132, - 197, - 163, - 215, - 166, - 37, - 163, - 119, - 47, - 77, - 47, - 132, - 199, - 212, - 102, - 55, - 105, - 30, - 246, - 78, - 226, - 113, - 30, - 108, - 98, - 2, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 11322578994265849565401386951246010528140686424276775038536393177707801557130n, - "asBuffer": { - "data": [ - 25, - 8, - 90, - 68, - 120, - 196, - 170, - 57, - 148, - 212, - 165, - 147, - 94, - 175, - 94, - 13, - 88, - 114, - 106, - 117, - 141, - 57, - 138, - 151, - 246, - 52, - 223, - 34, - 211, - 61, - 56, - 138, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - ], - "nullifiedCommitments": [ - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "newContracts": [ + NewContractData { + "contractAddress": AztecAddress { + "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, + "asBuffer": { + "data": [ + 37, + 226, + 192, + 23, + 245, + 218, + 31, + 153, + 68, + 1, + 230, + 29, + 38, + 190, + 67, + 94, + 60, + 250, + 38, + 239, + 238, + 120, + 76, + 107, + 78, + 148, + 127, + 118, + 81, + 189, + 65, + 4, + ], + "type": "Buffer", + }, + }, + "functionTreeRoot": Fr { + "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "asBuffer": { + "data": [ + 12, + 173, + 59, + 83, + 145, + 228, + 10, + 248, + 116, + 62, + 16, + 83, + 192, + 21, + 225, + 106, + 186, + 198, + 16, + 10, + 139, + 145, + 117, + 18, + 192, + 131, + 203, + 76, + 187, + 140, + 204, + 3, + ], + "type": "Buffer", + }, + }, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, + ], + "newL2ToL1Msgs": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -6570,2370 +6494,1880 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "newNullifiers": [ + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 2567833015098009695197683741929052765845567165156134398536953771337640275556n, + "asBuffer": { + "data": [ + 5, + 173, + 87, + 140, + 34, + 169, + 107, + 104, + 191, + 247, + 76, + 132, + 57, + 231, + 109, + 208, + 71, + 246, + 205, + 22, + 148, + 50, + 20, + 219, + 39, + 232, + 4, + 177, + 237, + 31, + 110, + 100, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 2567833015098009695197683741929052765845567165156134398536953771337640275556n, + "asBuffer": { + "data": [ + 5, + 173, + 87, + 140, + 34, + 169, + 107, + 104, + 191, + 247, + 76, + 132, + 57, + 231, + 109, + 208, + 71, + 246, + 205, + 22, + 148, + 50, + 20, + 219, + 39, + 232, + 4, + 177, + 237, + 31, + 110, + 100, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 131391450486342918604555900920288880952936359657946230216264970318333633026n, + "asBuffer": { + "data": [ + 0, + 74, + 93, + 107, + 195, + 78, + 132, + 197, + 163, + 215, + 166, + 37, + 163, + 119, + 47, + 77, + 47, + 132, + 199, + 212, + 102, + 55, + 105, + 30, + 246, + 78, + 226, + 113, + 30, + 108, + 98, + 2, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, + "asBuffer": { + "data": [ + 37, + 226, + 192, + 23, + 245, + 218, + 31, + 153, + 68, + 1, + 230, + 29, + 38, + 190, + 67, + 94, + 60, + 250, + 38, + 239, + 238, + 120, + 76, + 107, + 78, + 148, + 127, + 118, + 81, + 189, + 65, + 4, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 11322578994265849565401386951246010528140686424276775038536393177707801557130n, + "asBuffer": { + "data": [ + 25, + 8, + 90, + 68, + 120, + 196, + 170, + 57, + 148, + 212, + 165, + 147, + 94, + 175, + 94, + 13, + 88, + 114, + 106, + 117, + 141, + 57, + 138, + 151, + 246, + 52, + 223, + 34, + 211, + 61, + 56, + 138, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "optionallyRevealedData": [ - OptionallyRevealedData { - "callStackItemHash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -8973,20 +8407,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -9008,11 +8431,25 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -9052,9 +8489,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -9094,20 +8529,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -9129,11 +8553,25 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -9173,9 +8611,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -9215,20 +8651,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -9250,11 +8675,25 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -9294,9 +8733,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -9336,20 +8773,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -9371,17 +8797,31 @@ KernelCircuitPublicInputs { 0, 0, 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, 0, 0, 0, @@ -9415,5215 +8855,4725 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "pendingReadRequests": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "privateCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -14663,7 +13613,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -14703,91 +13653,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -14827,7 +13693,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -14867,91 +13735,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -14991,7 +13775,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15032,90 +13816,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15155,7 +13857,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15195,91 +13897,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15319,7 +13937,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15359,91 +13979,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15483,7 +14019,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15524,90 +14060,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15647,7 +14101,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15687,91 +14141,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15811,7 +14181,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15851,93 +14223,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "publicCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -15977,7 +14263,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16018,18 +14304,6770 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, + ], + "nullifiedCommitments": [ + Fr { + "asBigInt": 1000000n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 66, + 64, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 1000000n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 66, + 64, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + ], + "optionallyRevealedData": [ + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "privateCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "publicCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -16060,48 +21098,7612 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "publicDataReads": [ + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "publicDataUpdateRequests": [ + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + }, + ], + "readRequests": [ + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16141,7 +28743,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16181,91 +28785,49 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16305,7 +28867,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16346,90 +28908,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16469,7 +28949,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16510,90 +28990,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16633,7 +29031,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16674,90 +29072,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16797,7 +29113,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16838,90 +29154,48 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -16961,7 +29235,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17001,91 +29277,49 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17125,7 +29359,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17166,10 +29400,8 @@ KernelCircuitPublicInputs { }, }, }, - ], - "publicDataReads": [ - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17209,7 +29441,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17251,8 +29482,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17292,7 +29523,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17334,8 +29564,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17375,7 +29605,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17417,8 +29646,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17458,7 +29687,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17500,8 +29728,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17541,7 +29769,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17583,8 +29810,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17624,7 +29851,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17666,8 +29892,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17707,7 +29933,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17749,8 +29974,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17790,7 +30015,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17832,8 +30056,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17873,7 +30097,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17915,8 +30138,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -17956,7 +30179,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -17998,8 +30220,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18039,7 +30261,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -18081,8 +30302,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18122,7 +30343,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -18164,8 +30384,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18205,7 +30425,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -18247,8 +30466,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18288,7 +30507,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -18330,8 +30548,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18371,7 +30589,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -18413,8 +30630,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18454,7 +30671,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -18496,10 +30712,8 @@ KernelCircuitPublicInputs { }, }, }, - ], - "publicDataUpdateRequests": [ - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18539,7 +30753,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18579,7 +30793,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18619,10 +30835,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18662,7 +30875,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18702,7 +30917,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18742,10 +30957,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18785,7 +30999,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18825,7 +31039,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18865,10 +31081,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18908,7 +31121,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18948,7 +31163,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -18988,10 +31203,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19031,7 +31245,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19071,7 +31285,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19111,10 +31327,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19154,7 +31367,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19194,7 +31409,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19234,10 +31449,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19277,7 +31491,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19317,7 +31531,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19357,10 +31573,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19400,7 +31613,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19440,7 +31655,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19480,10 +31695,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19523,7 +31737,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19563,7 +31777,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19603,10 +31819,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19646,7 +31859,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19686,7 +31901,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19726,10 +31941,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19769,7 +31983,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19809,7 +32023,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19849,10 +32065,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19892,7 +32105,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19932,7 +32147,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -19972,10 +32187,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20015,7 +32229,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20055,7 +32269,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20095,10 +32311,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20138,7 +32351,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20178,7 +32393,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20218,10 +32433,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20261,7 +32475,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20301,7 +32515,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20341,10 +32557,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafIndex": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20384,7 +32597,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20424,7 +32639,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -20458,1938 +32673,2435 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - ], - "readRequests": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + ], + "unencryptedLogPreimagesLength": Fr { + "asBigInt": 4n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + ], + "type": "Buffer", }, + }, + "unencryptedLogsHash": [ Fr { - "asBigInt": 0n, + "asBigInt": 38042960891247304977978366569914796636n, "asBuffer": { "data": [ 0, @@ -22408,28 +35120,28 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 28, + 158, + 206, + 201, + 14, + 40, + 210, + 70, + 22, + 80, + 65, + 134, + 53, + 135, + 138, + 92, ], "type": "Buffer", }, }, Fr { - "asBigInt": 0n, + "asBigInt": 193925133628253903808777040905688936722n, "asBuffer": { "data": [ 0, @@ -22448,267 +35160,277 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 145, + 228, + 159, + 71, + 88, + 110, + 207, + 117, + 242, + 176, + 203, + 185, + 78, + 137, + 113, + 18, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + ], + }, + "isPrivate": true, +} +`; + +exports[`Private kernel Executes private kernel inner for a nested call 1`] = ` +KernelCircuitPublicInputs { + "constants": CombinedConstantData { + "blockHeader": BlockHeader { + "archiveRoot": Fr { + "asBigInt": 4141256197271035428567950264296887925803599654022881395228888440470800002298n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 9, + 39, + 222, + 49, + 149, + 188, + 22, + 194, + 228, + 185, + 87, + 94, + 14, + 102, + 227, + 106, + 225, + 154, + 204, + 195, + 105, + 44, + 167, + 185, + 41, + 119, + 195, + 190, + 193, + 13, + 108, + 250, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "contractTreeRoot": Fr { + "asBigInt": 5581248852067966506476110357785496963917224136518690137510493228293502103930n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 12, + 86, + 223, + 249, + 180, + 193, + 103, + 122, + 71, + 221, + 147, + 211, + 135, + 162, + 135, + 26, + 67, + 102, + 193, + 61, + 168, + 180, + 252, + 159, + 133, + 200, + 174, + 12, + 10, + 53, + 113, + 122, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "globalVariablesHash": Fr { + "asBigInt": 10982507924920738674805945892274185625046296695654177390082807748667229078837n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 24, + 71, + 225, + 19, + 115, + 109, + 194, + 36, + 28, + 183, + 24, + 36, + 233, + 201, + 246, + 253, + 41, + 76, + 59, + 132, + 31, + 252, + 116, + 77, + 98, + 189, + 49, + 231, + 160, + 196, + 5, + 53, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "l1ToL2MessagesTreeRoot": Fr { + "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 24, + 100, + 252, + 218, + 168, + 15, + 242, + 113, + 145, + 84, + 250, + 124, + 138, + 144, + 80, + 102, + 41, + 114, + 112, + 113, + 104, + 214, + 158, + 172, + 157, + 182, + 253, + 49, + 16, + 130, + 159, + 128, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "noteHashTreeRoot": Fr { + "asBigInt": 19936675125770429878298489304626860431485064106154993611029467200819125156683n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 44, + 19, + 194, + 28, + 1, + 245, + 22, + 101, + 227, + 237, + 34, + 250, + 157, + 184, + 204, + 132, + 63, + 31, + 60, + 153, + 200, + 185, + 110, + 87, + 26, + 255, + 192, + 247, + 77, + 237, + 251, + 75, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "nullifierTreeRoot": Fr { + "asBigInt": 4586703266286347436402481541702375293800259937188486151561348105796608164964n, "asBuffer": { "data": [ + 10, + 35, + 251, + 103, + 170, + 184, + 66, + 16, + 60, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 100, + 234, + 184, + 234, + 231, + 175, + 44, + 208, + 126, + 190, + 35, + 140, + 53, + 186, + 27, + 189, + 135, + 165, + 23, + 153, + 132, + 100, ], "type": "Buffer", }, }, - Fr { + "privateKernelVkTreeRoot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -22748,48 +35470,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "publicDataTreeRoot": Fr { + "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 12, + 202, + 175, + 220, + 156, + 53, + 55, + 67, + 151, + 13, + 78, + 48, + 90, + 231, + 54, + 65, + 206, + 105, + 79, + 7, + 219, + 103, + 136, + 109, + 39, + 105, + 201, + 237, + 136, + 233, + 105, + 216, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + }, + "txContext": TxContext { + "chainId": Fr { + "asBigInt": 31337n, "asBuffer": { "data": [ 0, @@ -22822,14 +35546,249 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, + 122, + 105, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "contractDeploymentData": ContractDeploymentData { + "constructorVkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "contractAddressSalt": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "deployerPublicKey": Point { + "kind": "point", + "x": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "y": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "functionTreeRoot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "isContractDeploymentTx": false, + "isFeePaymentTx": false, + "isRebatePaymentTx": false, + "version": Fr { + "asBigInt": 1n, "asBuffer": { "data": [ 0, @@ -22863,213 +35822,243 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, + 1, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + }, + }, + "end": CombinedAccumulatedData { + "aggregationObject": AggregationObject { + "hasData": false, + "p0": G1AffineElement { + "x": Fq { + "asBigInt": 1n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "y": Fq { + "asBigInt": 2n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "p1": G1AffineElement { + "x": Fq { + "asBigInt": 1n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "y": Fq { + "asBigInt": 2n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "proofWitnessIndices": [ + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + ], + "publicInputs": [], + }, + "encryptedLogPreimagesLength": Fr { + "asBigInt": 12n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 12, + ], + "type": "Buffer", }, + }, + "encryptedLogsHash": [ Fr { - "asBigInt": 0n, + "asBigInt": 10654334908029642268226261618939201427n, "asBuffer": { "data": [ 0, @@ -23088,28 +36077,28 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 8, + 3, + 243, + 68, + 123, + 49, + 16, + 181, + 87, + 150, + 38, + 199, + 134, + 29, + 7, + 147, ], "type": "Buffer", }, }, Fr { - "asBigInt": 0n, + "asBigInt": 133338275028334099210129003420909668908n, "asBuffer": { "data": [ 0, @@ -23128,26 +36117,28 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 100, + 80, + 4, + 133, + 110, + 109, + 121, + 70, + 184, + 235, + 48, + 170, + 28, + 9, + 138, + 44, ], "type": "Buffer", }, }, + ], + "newCommitments": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -25588,50 +38579,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - ], - "unencryptedLogPreimagesLength": Fr { - "asBigInt": 4n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4, - ], - "type": "Buffer", - }, - }, - "unencryptedLogsHash": [ Fr { - "asBigInt": 38042960891247304977978366569914796636n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -25642,38 +38591,6 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 28, - 158, - 206, - 201, - 14, - 40, - 210, - 70, - 22, - 80, - 65, - 134, - 53, - 135, - 138, - 92, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 193925133628253903808777040905688936722n, - "asBuffer": { - "data": [ 0, 0, 0, @@ -25690,277 +38607,19 @@ KernelCircuitPublicInputs { 0, 0, 0, - 145, - 228, - 159, - 71, - 88, - 110, - 207, - 117, - 242, - 176, - 203, - 185, - 78, - 137, - 113, - 18, - ], - "type": "Buffer", - }, - }, - ], - }, - "isPrivate": true, -} -`; - -exports[`Private kernel Executes private kernel inner for a nested call 1`] = ` -KernelCircuitPublicInputs { - "constants": CombinedConstantData { - "blockHeader": BlockHeader { - "archiveRoot": Fr { - "asBigInt": 4141256197271035428567950264296887925803599654022881395228888440470800002298n, - "asBuffer": { - "data": [ - 9, - 39, - 222, - 49, - 149, - 188, - 22, - 194, - 228, - 185, - 87, - 94, - 14, - 102, - 227, - 106, - 225, - 154, - 204, - 195, - 105, - 44, - 167, - 185, - 41, - 119, - 195, - 190, - 193, - 13, - 108, - 250, - ], - "type": "Buffer", - }, - }, - "contractTreeRoot": Fr { - "asBigInt": 5581248852067966506476110357785496963917224136518690137510493228293502103930n, - "asBuffer": { - "data": [ - 12, - 86, - 223, - 249, - 180, - 193, - 103, - 122, - 71, - 221, - 147, - 211, - 135, - 162, - 135, - 26, - 67, - 102, - 193, - 61, - 168, - 180, - 252, - 159, - 133, - 200, - 174, - 12, - 10, - 53, - 113, - 122, - ], - "type": "Buffer", - }, - }, - "globalVariablesHash": Fr { - "asBigInt": 10982507924920738674805945892274185625046296695654177390082807748667229078837n, - "asBuffer": { - "data": [ - 24, - 71, - 225, - 19, - 115, - 109, - 194, - 36, - 28, - 183, - 24, - 36, - 233, - 201, - 246, - 253, - 41, - 76, - 59, - 132, - 31, - 252, - 116, - 77, - 98, - 189, - 49, - 231, - 160, - 196, - 5, - 53, - ], - "type": "Buffer", - }, - }, - "l1ToL2MessagesTreeRoot": Fr { - "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, - "asBuffer": { - "data": [ - 24, - 100, - 252, - 218, - 168, - 15, - 242, - 113, - 145, - 84, - 250, - 124, - 138, - 144, - 80, - 102, - 41, - 114, - 112, - 113, - 104, - 214, - 158, - 172, - 157, - 182, - 253, - 49, - 16, - 130, - 159, - 128, - ], - "type": "Buffer", - }, - }, - "noteHashTreeRoot": Fr { - "asBigInt": 19936675125770429878298489304626860431485064106154993611029467200819125156683n, - "asBuffer": { - "data": [ - 44, - 19, - 194, - 28, - 1, - 245, - 22, - 101, - 227, - 237, - 34, - 250, - 157, - 184, - 204, - 132, - 63, - 31, - 60, - 153, - 200, - 185, - 110, - 87, - 26, - 255, - 192, - 247, - 77, - 237, - 251, - 75, - ], - "type": "Buffer", - }, - }, - "nullifierTreeRoot": Fr { - "asBigInt": 4586703266286347436402481541702375293800259937188486151561348105796608164964n, - "asBuffer": { - "data": [ - 10, - 35, - 251, - 103, - 170, - 184, - 66, - 16, - 60, - 0, - 100, - 234, - 184, - 234, - 231, - 175, - 44, - 208, - 126, - 190, - 35, - 140, - 53, - 186, - 27, - 189, - 135, - 165, - 23, - 153, - 132, - 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "privateKernelVkTreeRoot": Fr { + Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26000,50 +38659,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "publicDataTreeRoot": Fr { - "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, - "asBuffer": { - "data": [ - 12, - 202, - 175, - 220, - 156, - 53, - 55, - 67, - 151, - 13, - 78, - 48, - 90, - 231, - 54, - 65, - 206, - 105, - 79, - 7, - 219, - 103, - 136, - 109, - 39, - 105, - 201, - 237, - 136, - 233, - 105, - 216, - ], - "type": "Buffer", - }, - }, - }, - "txContext": TxContext { - "chainId": Fr { - "asBigInt": 31337n, + Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -26076,54 +38693,16 @@ KernelCircuitPublicInputs { 0, 0, 0, - 122, - 105, + 0, + 0, ], "type": "Buffer", }, }, - "contractDeploymentData": ContractDeploymentData { - "constructorVkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "contractAddressSalt": Fr { + ], + "newContracts": [ + NewContractData { + "contractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26163,89 +38742,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "deployerPublicKey": Point { - "kind": "point", - "x": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "y": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, "functionTreeRoot": Fr { "asBigInt": 0n, "asBuffer": { @@ -26314,11 +38810,10 @@ KernelCircuitPublicInputs { }, }, }, - "isContractDeploymentTx": false, - "isFeePaymentTx": false, - "isRebatePaymentTx": false, - "version": Fr { - "asBigInt": 1n, + ], + "newL2ToL1Msgs": [ + Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -26352,243 +38847,13 @@ KernelCircuitPublicInputs { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - }, - }, - "end": CombinedAccumulatedData { - "aggregationObject": AggregationObject { - "hasData": false, - "p0": G1AffineElement { - "x": Fq { - "asBigInt": 1n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - ], - "type": "Buffer", - }, - }, - "y": Fq { - "asBigInt": 2n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - ], - "type": "Buffer", - }, - }, - }, - "p1": G1AffineElement { - "x": Fq { - "asBigInt": 1n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - ], - "type": "Buffer", - }, - }, - "y": Fq { - "asBigInt": 2n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - ], - "type": "Buffer", - }, - }, - }, - "proofWitnessIndices": [ - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3034, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - ], - "publicInputs": [], - }, - "encryptedLogPreimagesLength": Fr { - "asBigInt": 12n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 12, - ], - "type": "Buffer", - }, - }, - "encryptedLogsHash": [ Fr { - "asBigInt": 10654334908029642268226261618939201427n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -26607,30 +38872,6 @@ KernelCircuitPublicInputs { 0, 0, 0, - 8, - 3, - 243, - 68, - 123, - 49, - 16, - 181, - 87, - 150, - 38, - 199, - 134, - 29, - 7, - 147, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 133338275028334099210129003420909668908n, - "asBuffer": { - "data": [ 0, 0, 0, @@ -26647,28 +38888,52 @@ KernelCircuitPublicInputs { 0, 0, 0, - 100, - 80, - 4, - 133, - 110, - 109, - 121, - 70, - 184, - 235, - 48, - 170, - 28, - 9, + ], + "type": "Buffer", + }, + }, + ], + "newNullifiers": [ + Fr { + "asBigInt": 17066526537155008625801148970628416876452664863580543040821415016087256242169n, + "asBuffer": { + "data": [ + 37, + 187, + 79, + 204, + 6, + 92, + 222, + 117, + 146, + 104, + 60, + 208, 138, + 215, + 82, + 15, + 212, + 189, 44, + 138, + 125, + 108, + 69, + 248, + 102, + 158, + 186, + 229, + 52, + 175, + 23, + 249, ], "type": "Buffer", }, }, - ], - "newCommitments": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -29189,6 +41454,48 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + ], + "nullifiedCommitments": [ + Fr { + "asBigInt": 1000000n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 66, + 64, + ], + "type": "Buffer", + }, + }, Fr { "asBigInt": 0n, "asBuffer": { @@ -29229,119 +41536,46 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - ], - "newContracts": [ - NewContractData { - "contractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "functionTreeRoot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - ], - "newL2ToL1Msgs": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -29422,44 +41656,42 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - ], - "newNullifiers": [ Fr { - "asBigInt": 17066526537155008625801148970628416876452664863580543040821415016087256242169n, + "asBigInt": 0n, "asBuffer": { "data": [ - 37, - 187, - 79, - 204, - 6, - 92, - 222, - 117, - 146, - 104, - 60, - 208, - 138, - 215, - 82, - 15, - 212, - 189, - 44, - 138, - 125, - 108, - 69, - 248, - 102, - 158, - 186, - 229, - 52, - 175, - 23, - 249, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, @@ -31784,6 +44016,494 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + ], + "optionallyRevealedData": [ + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "pendingReadRequests": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -31984,10 +44704,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - ], - "nullifiedCommitments": [ Fr { - "asBigInt": 1000000n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -32019,9 +44737,9 @@ KernelCircuitPublicInputs { 0, 0, 0, - 15, - 66, - 64, + 0, + 0, + 0, ], "type": "Buffer", }, @@ -34546,494 +47264,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - ], - "optionallyRevealedData": [ - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "pendingReadRequests": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -37394,2852 +49624,4746 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "privateCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "publicCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "publicDataReads": [ + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "publicDataUpdateRequests": [ + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, + "sideEffectCounter": undefined, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, + "sideEffectCounter": undefined, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, + "sideEffectCounter": undefined, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, + "sideEffectCounter": undefined, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, + "sideEffectCounter": undefined, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "privateCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "oldValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40279,7 +54403,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40319,91 +54443,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40443,7 +54526,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40483,91 +54566,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + PublicDataUpdateRequest { + "leafIndex": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40607,7 +54609,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40647,91 +54649,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40771,7 +54689,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40811,91 +54732,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40935,7 +54772,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -40975,91 +54812,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41099,7 +54895,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41139,91 +54935,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41263,7 +55018,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41303,91 +55058,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + PublicDataUpdateRequest { + "leafIndex": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41427,7 +55101,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41467,93 +55141,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "publicCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41593,7 +55181,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafIndex": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41633,91 +55224,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41757,7 +55264,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41797,91 +55304,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41921,7 +55387,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41961,91 +55427,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafIndex": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42085,7 +55510,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42125,3965 +55550,4450 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, + }, + ], + "readRequests": [ + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - ], - "publicDataReads": [ - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - PublicDataRead { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - ], - "publicDataUpdateRequests": [ - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafIndex": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "sideEffectCounter": undefined, }, - ], - "readRequests": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -46764,8 +60674,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + ], + "unencryptedLogPreimagesLength": Fr { + "asBigInt": 12n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 12, + ], + "type": "Buffer", + }, + }, + "unencryptedLogsHash": [ Fr { - "asBigInt": 0n, + "asBigInt": 10654334908029642268226261618939201427n, "asBuffer": { "data": [ 0, @@ -46784,6 +60736,30 @@ KernelCircuitPublicInputs { 0, 0, 0, + 8, + 3, + 243, + 68, + 123, + 49, + 16, + 181, + 87, + 150, + 38, + 199, + 134, + 29, + 7, + 147, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 133338275028334099210129003420909668908n, + "asBuffer": { + "data": [ 0, 0, 0, @@ -46800,11 +60776,277 @@ KernelCircuitPublicInputs { 0, 0, 0, + 100, + 80, + 4, + 133, + 110, + 109, + 121, + 70, + 184, + 235, + 48, + 170, + 28, + 9, + 138, + 44, ], "type": "Buffer", }, }, - Fr { + ], + }, + "isPrivate": true, +} +`; + +exports[`Private kernel Executes private kernel ordering after a deployment 1`] = ` +KernelCircuitPublicInputsFinal { + "constants": CombinedConstantData { + "blockHeader": BlockHeader { + "archiveRoot": Fr { + "asBigInt": 10561895175368852737061915973188839857007468377789560793687187642867659280638n, + "asBuffer": { + "data": [ + 23, + 89, + 210, + 33, + 121, + 84, + 25, + 80, + 63, + 134, + 192, + 50, + 232, + 248, + 118, + 47, + 43, + 115, + 158, + 116, + 131, + 80, + 153, + 88, + 75, + 101, + 49, + 245, + 242, + 115, + 144, + 254, + ], + "type": "Buffer", + }, + }, + "contractTreeRoot": Fr { + "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, + "asBuffer": { + "data": [ + 24, + 100, + 252, + 218, + 168, + 15, + 242, + 113, + 145, + 84, + 250, + 124, + 138, + 144, + 80, + 102, + 41, + 114, + 112, + 113, + 104, + 214, + 158, + 172, + 157, + 182, + 253, + 49, + 16, + 130, + 159, + 128, + ], + "type": "Buffer", + }, + }, + "globalVariablesHash": Fr { + "asBigInt": 14483571110897883400419490783710119837459619381345566311432831352122387488397n, + "asBuffer": { + "data": [ + 32, + 5, + 105, + 38, + 124, + 15, + 115, + 172, + 137, + 170, + 164, + 20, + 35, + 147, + 152, + 219, + 148, + 69, + 221, + 74, + 211, + 168, + 207, + 55, + 1, + 92, + 213, + 91, + 141, + 76, + 94, + 141, + ], + "type": "Buffer", + }, + }, + "l1ToL2MessagesTreeRoot": Fr { + "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, + "asBuffer": { + "data": [ + 24, + 100, + 252, + 218, + 168, + 15, + 242, + 113, + 145, + 84, + 250, + 124, + 138, + 144, + 80, + 102, + 41, + 114, + 112, + 113, + 104, + 214, + 158, + 172, + 157, + 182, + 253, + 49, + 16, + 130, + 159, + 128, + ], + "type": "Buffer", + }, + }, + "noteHashTreeRoot": Fr { + "asBigInt": 10127882181290008410413105921460858232892226592306749913988016925836213768395n, + "asBuffer": { + "data": [ + 22, + 100, + 45, + 156, + 205, + 131, + 70, + 196, + 3, + 170, + 76, + 63, + 164, + 81, + 23, + 139, + 34, + 83, + 74, + 39, + 3, + 92, + 218, + 166, + 236, + 52, + 174, + 83, + 178, + 156, + 80, + 203, + ], + "type": "Buffer", + }, + }, + "nullifierTreeRoot": Fr { + "asBigInt": 5342309968596764527275045470866818007603635181649161546597860399861598581368n, + "asBuffer": { + "data": [ + 11, + 207, + 163, + 233, + 241, + 168, + 146, + 46, + 233, + 44, + 109, + 201, + 100, + 214, + 89, + 89, + 7, + 193, + 128, + 74, + 134, + 117, + 55, + 116, + 50, + 43, + 70, + 143, + 105, + 212, + 242, + 120, + ], + "type": "Buffer", + }, + }, + "privateKernelVkTreeRoot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46844,7 +61086,49 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { + "publicDataTreeRoot": Fr { + "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, + "asBuffer": { + "data": [ + 12, + 202, + 175, + 220, + 156, + 53, + 55, + 67, + 151, + 13, + 78, + 48, + 90, + 231, + 54, + 65, + 206, + 105, + 79, + 7, + 219, + 103, + 136, + 109, + 39, + 105, + 201, + 237, + 136, + 233, + 105, + 216, + ], + "type": "Buffer", + }, + }, + }, + "txContext": TxContext { + "chainId": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46884,47 +61168,242 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "contractDeploymentData": ContractDeploymentData { + "constructorVkHash": Fr { + "asBigInt": 4946902893997605007258693448883037341256770656195244398892734919432197304822n, + "asBuffer": { + "data": [ + 10, + 239, + 217, + 10, + 105, + 166, + 67, + 50, + 76, + 123, + 240, + 169, + 189, + 59, + 35, + 173, + 160, + 144, + 173, + 136, + 55, + 115, + 253, + 240, + 176, + 173, + 82, + 169, + 247, + 214, + 241, + 246, + ], + "type": "Buffer", + }, + }, + "contractAddressSalt": Fr { + "asBigInt": 13918524182926832455178861490988425129196887976468020413394338716458484696156n, + "asBuffer": { + "data": [ + 30, + 197, + 155, + 3, + 19, + 250, + 80, + 67, + 2, + 195, + 51, + 111, + 201, + 17, + 214, + 136, + 237, + 174, + 103, + 196, + 251, + 242, + 41, + 214, + 140, + 127, + 54, + 237, + 135, + 151, + 4, + 92, + ], + "type": "Buffer", + }, + }, + "deployerPublicKey": Point { + "kind": "point", + "x": Fr { + "asBigInt": 13513162828633936749079339485623471377790691038584182237805001838837073529635n, + "asBuffer": { + "data": [ + 29, + 224, + 45, + 218, + 202, + 198, + 210, + 244, + 39, + 229, + 240, + 211, + 206, + 89, + 215, + 41, + 79, + 20, + 98, + 128, + 69, + 93, + 212, + 197, + 130, + 37, + 78, + 11, + 76, + 37, + 75, + 35, + ], + "type": "Buffer", + }, + }, + "y": Fr { + "asBigInt": 16193209371316637857741102275574203818928254115376185574760513755303226932941n, + "asBuffer": { + "data": [ + 35, + 205, + 8, + 29, + 254, + 156, + 13, + 24, + 115, + 182, + 90, + 54, + 160, + 136, + 88, + 231, + 58, + 155, + 48, + 208, + 51, + 158, + 148, + 196, + 145, + 93, + 113, + 16, + 226, + 240, + 126, + 205, + ], + "type": "Buffer", + }, + }, + }, + "functionTreeRoot": Fr { + "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "asBuffer": { + "data": [ + 12, + 173, + 59, + 83, + 145, + 228, + 10, + 248, + 116, + 62, + 16, + 83, + 192, + 21, + 225, + 106, + 186, + 198, + 16, + 10, + 139, + 145, + 117, + 18, + 192, + 131, + 203, + 76, + 187, + 140, + 204, + 3, + ], + "type": "Buffer", + }, + }, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { + "isContractDeploymentTx": true, + "isFeePaymentTx": false, + "isRebatePaymentTx": false, + "version": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46964,8 +61443,238 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + }, + }, + "end": FinalAccumulatedData { + "aggregationObject": AggregationObject { + "hasData": false, + "p0": G1AffineElement { + "x": Fq { + "asBigInt": 1n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + ], + "type": "Buffer", + }, + }, + "y": Fq { + "asBigInt": 2n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + ], + "type": "Buffer", + }, + }, + }, + "p1": G1AffineElement { + "x": Fq { + "asBigInt": 1n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + ], + "type": "Buffer", + }, + }, + "y": Fq { + "asBigInt": 2n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + ], + "type": "Buffer", + }, + }, + }, + "proofWitnessIndices": [ + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + ], + "publicInputs": [], + }, + "encryptedLogPreimagesLength": Fr { + "asBigInt": 248n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 248, + ], + "type": "Buffer", + }, + }, + "encryptedLogsHash": [ Fr { - "asBigInt": 0n, + "asBigInt": 116881760094330735023399760917603536324n, "asBuffer": { "data": [ 0, @@ -46984,28 +61693,28 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 87, + 238, + 155, + 177, + 38, + 64, + 133, + 236, + 244, + 186, + 130, + 116, + 178, + 51, + 205, + 196, ], "type": "Buffer", }, }, Fr { - "asBigInt": 0n, + "asBigInt": 184145148802329932417389828290829878776n, "asBuffer": { "data": [ 0, @@ -47024,3226 +61733,5389 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 138, + 137, + 16, + 204, + 107, + 147, + 180, + 57, + 154, + 30, + 189, + 143, + 191, + 180, + 5, + 248, ], "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "newCommitments": [ + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 3009448547919161079798226041696583891221172499459514963757313019677832133161n, + "asBuffer": { + "data": [ + 6, + 167, + 73, + 154, + 164, + 37, + 20, + 195, + 23, + 47, + 202, + 195, + 108, + 196, + 31, + 27, + 39, + 218, + 157, + 33, + 150, + 100, + 217, + 13, + 118, + 109, + 235, + 67, + 121, + 120, + 58, + 41, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "newContracts": [ + NewContractData { + "contractAddress": AztecAddress { + "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, + "asBuffer": { + "data": [ + 37, + 226, + 192, + 23, + 245, + 218, + 31, + 153, + 68, + 1, + 230, + 29, + 38, + 190, + 67, + 94, + 60, + 250, + 38, + 239, + 238, + 120, + 76, + 107, + 78, + 148, + 127, + 118, + 81, + 189, + 65, + 4, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "functionTreeRoot": Fr { + "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "asBuffer": { + "data": [ + 12, + 173, + 59, + 83, + 145, + 228, + 10, + 248, + 116, + 62, + 16, + 83, + 192, + 21, + 225, + 106, + 186, + 198, + 16, + 10, + 139, + 145, + 117, + 18, + 192, + 131, + 203, + 76, + 187, + 140, + 204, + 3, + ], + "type": "Buffer", + }, + }, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, + ], + "newL2ToL1Msgs": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -50324,1586 +67196,2288 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "newNullifiers": [ + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 7094590644143379362066385400655107720501862419669243795306142485975929345465n, + "asBuffer": { + "data": [ + 15, + 175, + 101, + 96, + 137, + 229, + 168, + 211, + 33, + 182, + 79, + 66, + 15, + 192, + 8, + 0, + 87, + 54, + 160, + 180, + 240, + 184, + 88, + 136, + 145, + 36, + 19, + 146, + 200, + 38, + 85, + 185, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 131391450486342918604555900920288880952936359657946230216264970318333633026n, + "asBuffer": { + "data": [ + 0, + 74, + 93, + 107, + 195, + 78, + 132, + 197, + 163, + 215, + 166, + 37, + 163, + 119, + 47, + 77, + 47, + 132, + 199, + 212, + 102, + 55, + 105, + 30, + 246, + 78, + 226, + 113, + 30, + 108, + 98, + 2, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 11322578994265849565401386951246010528140686424276775038536393177707801557130n, + "asBuffer": { + "data": [ + 25, + 8, + 90, + 68, + 120, + 196, + 170, + 57, + 148, + 212, + 165, + 147, + 94, + 175, + 94, + 13, + 88, + 114, + 106, + 117, + 141, + 57, + 138, + 151, + 246, + 52, + 223, + 34, + 211, + 61, + 56, + 138, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "unencryptedLogPreimagesLength": Fr { - "asBigInt": 12n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 12, - ], - "type": "Buffer", - }, - }, - "unencryptedLogsHash": [ - Fr { - "asBigInt": 10654334908029642268226261618939201427n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8, - 3, - 243, - 68, - 123, - 49, - 16, - 181, - 87, - 150, - 38, - 199, - 134, - 29, - 7, - 147, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 133338275028334099210129003420909668908n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 100, - 80, - 4, - 133, - 110, - 109, - 121, - 70, - 184, - 235, - 48, - 170, - 28, - 9, - 138, - 44, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - ], - }, - "isPrivate": true, -} -`; - -exports[`Private kernel Executes private kernel ordering after a deployment 1`] = ` -KernelCircuitPublicInputsFinal { - "constants": CombinedConstantData { - "blockHeader": BlockHeader { - "archiveRoot": Fr { - "asBigInt": 10561895175368852737061915973188839857007468377789560793687187642867659280638n, - "asBuffer": { - "data": [ - 23, - 89, - 210, - 33, - 121, - 84, - 25, - 80, - 63, - 134, - 192, - 50, - 232, - 248, - 118, - 47, - 43, - 115, - 158, - 116, - 131, - 80, - 153, - 88, - 75, - 101, - 49, - 245, - 242, - 115, - 144, - 254, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "contractTreeRoot": Fr { - "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, - "asBuffer": { - "data": [ - 24, - 100, - 252, - 218, - 168, - 15, - 242, - 113, - 145, - 84, - 250, - 124, - 138, - 144, - 80, - 102, - 41, - 114, - 112, - 113, - 104, - 214, - 158, - 172, - 157, - 182, - 253, - 49, - 16, - 130, - 159, - 128, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "globalVariablesHash": Fr { - "asBigInt": 14483571110897883400419490783710119837459619381345566311432831352122387488397n, - "asBuffer": { - "data": [ - 32, - 5, - 105, - 38, - 124, - 15, - 115, - 172, - 137, - 170, - 164, - 20, - 35, - 147, - 152, - 219, - 148, - 69, - 221, - 74, - 211, - 168, - 207, - 55, - 1, - 92, - 213, - 91, - 141, - 76, - 94, - 141, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "l1ToL2MessagesTreeRoot": Fr { - "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, - "asBuffer": { - "data": [ - 24, - 100, - 252, - 218, - 168, - 15, - 242, - 113, - 145, - 84, - 250, - 124, - 138, - 144, - 80, - 102, - 41, - 114, - 112, - 113, - 104, - 214, - 158, - 172, - 157, - 182, - 253, - 49, - 16, - 130, - 159, - 128, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "noteHashTreeRoot": Fr { - "asBigInt": 10127882181290008410413105921460858232892226592306749913988016925836213768395n, - "asBuffer": { - "data": [ - 22, - 100, - 45, - 156, - 205, - 131, - 70, - 196, - 3, - 170, - 76, - 63, - 164, - 81, - 23, - 139, - 34, - 83, - 74, - 39, - 3, - 92, - 218, - 166, - 236, - 52, - 174, - 83, - 178, - 156, - 80, - 203, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "nullifierTreeRoot": Fr { - "asBigInt": 5342309968596764527275045470866818007603635181649161546597860399861598581368n, - "asBuffer": { - "data": [ - 11, - 207, - 163, - 233, - 241, - 168, - 146, - 46, - 233, - 44, - 109, - 201, - 100, - 214, - 89, - 89, - 7, - 193, - 128, - 74, - 134, - 117, - 55, - 116, - 50, - 43, - 70, - 143, - 105, - 212, - 242, - 120, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "privateKernelVkTreeRoot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "publicDataTreeRoot": Fr { - "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, - "asBuffer": { - "data": [ - 12, - 202, - 175, - 220, - 156, - 53, - 55, - 67, - 151, - 13, - 78, - 48, - 90, - 231, - 54, - 65, - 206, - 105, - 79, - 7, - 219, - 103, - 136, - 109, - 39, - 105, - 201, - 237, - 136, - 233, - 105, - 216, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - }, - "txContext": TxContext { - "chainId": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "contractDeploymentData": ContractDeploymentData { - "constructorVkHash": Fr { - "asBigInt": 4946902893997605007258693448883037341256770656195244398892734919432197304822n, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 10, - 239, - 217, - 10, - 105, - 166, - 67, - 50, - 76, - 123, - 240, - 169, - 189, - 59, - 35, - 173, - 160, - 144, - 173, - 136, - 55, - 115, - 253, - 240, - 176, - 173, - 82, - 169, - 247, - 214, - 241, - 246, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "contractAddressSalt": Fr { - "asBigInt": 13918524182926832455178861490988425129196887976468020413394338716458484696156n, + "noteHash": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 30, - 197, - 155, - 3, - 19, - 250, - 80, - 67, - 2, - 195, - 51, - 111, - 201, - 17, - 214, - 136, - 237, - 174, - 103, - 196, - 251, - 242, - 41, - 214, - 140, - 127, - 54, - 237, - 135, - 151, - 4, - 92, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "deployerPublicKey": Point { - "kind": "point", - "x": Fr { - "asBigInt": 13513162828633936749079339485623471377790691038584182237805001838837073529635n, - "asBuffer": { - "data": [ - 29, - 224, - 45, - 218, - 202, - 198, - 210, - 244, - 39, - 229, - 240, - 211, - 206, - 89, - 215, - 41, - 79, - 20, - 98, - 128, - 69, - 93, - 212, - 197, - 130, - 37, - 78, - 11, - 76, - 37, - 75, - 35, - ], - "type": "Buffer", - }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "y": Fr { - "asBigInt": 16193209371316637857741102275574203818928254115376185574760513755303226932941n, - "asBuffer": { - "data": [ - 35, - 205, - 8, - 29, - 254, - 156, - 13, - 24, - 115, - 182, - 90, - 54, - 160, - 136, - 88, - 231, - 58, - 155, - 48, - 208, - 51, - 158, - 148, - 196, - 145, - 93, - 113, - 16, - 226, - 240, - 126, - 205, - ], - "type": "Buffer", - }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "functionTreeRoot": Fr { - "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "noteHash": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 12, - 173, - 59, - 83, - 145, - 228, - 10, - 248, - 116, - 62, - 16, - 83, - 192, - 21, - 225, - 106, - 186, - 198, - 16, - 10, - 139, - 145, - 117, - 18, - 192, - 131, - 203, - 76, - 187, - 140, - 204, - 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -51925,62 +69499,26 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, }, - "isContractDeploymentTx": true, - "isFeePaymentTx": false, - "isRebatePaymentTx": false, - "version": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - }, - "end": FinalAccumulatedData { - "aggregationObject": AggregationObject { - "hasData": false, - "p0": G1AffineElement { - "x": Fq { - "asBigInt": 1n, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -52014,13 +69552,13 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - "y": Fq { - "asBigInt": 2n, + "noteHash": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -52054,15 +69592,13 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 2, + 0, ], "type": "Buffer", }, }, - }, - "p1": G1AffineElement { - "x": Fq { - "asBigInt": 1n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -52096,13 +69632,15 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - "y": Fq { - "asBigInt": 2n, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -52136,2800 +69674,3104 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 2, + 0, ], "type": "Buffer", }, }, - }, - "proofWitnessIndices": [ - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3034, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - ], - "publicInputs": [], - }, - "encryptedLogPreimagesLength": Fr { - "asBigInt": 248n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 248, - ], - "type": "Buffer", - }, - }, - "encryptedLogsHash": [ - Fr { - "asBigInt": 116881760094330735023399760917603536324n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 87, - 238, - 155, - 177, - 38, - 64, - 133, - 236, - 244, - 186, - 130, - 116, - 178, - 51, - 205, - 196, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 184145148802329932417389828290829878776n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 138, - 137, - 16, - 204, - 107, - 147, - 180, - 57, - 154, - 30, - 189, - 143, - 191, - 180, - 5, - 248, - ], - "type": "Buffer", - }, - }, - ], - "newCommitments": [ - Fr { - "asBigInt": 3009448547919161079798226041696583891221172499459514963757313019677832133161n, - "asBuffer": { - "data": [ - 6, - 167, - 73, - 154, - 164, - 37, - 20, - 195, - 23, - 47, - 202, - 195, - 108, - 196, - 31, - 27, - 39, - 218, - 157, - 33, - 150, - 100, - 217, - 13, - 118, - 109, - 235, - 67, - 121, - 120, - 58, - 41, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - ], - "newContracts": [ - NewContractData { - "contractAddress": AztecAddress { - "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 37, - 226, - 192, - 23, - 245, - 218, - 31, - 153, - 68, - 1, - 230, - 29, - 38, - 190, - 67, - 94, - 60, - 250, - 38, - 239, - 238, - 120, - 76, - 107, - 78, - 148, - 127, - 118, - 81, - 189, - 65, - 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "functionTreeRoot": Fr { - "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "noteHash": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 12, - 173, - 59, - 83, - 145, - 228, - 10, - 248, - 116, - 62, - 16, - 83, - 192, - 21, - 225, - 106, - 186, - 198, - 16, - 10, - 139, - 145, - 117, - 18, - 192, - 131, - 203, - 76, - 187, - 140, - 204, - 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -54951,1937 +72793,2223 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, }, - ], - "newL2ToL1Msgs": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "newNullifiers": [ - Fr { - "asBigInt": 7094590644143379362066385400655107720501862419669243795306142485975929345465n, - "asBuffer": { - "data": [ - 15, - 175, - 101, - 96, - 137, - 229, - 168, - 211, - 33, - 182, - 79, - 66, - 15, - 192, - 8, - 0, - 87, - 54, - 160, - 180, - 240, - 184, - 88, - 136, - 145, - 36, - 19, - 146, - 200, - 38, - 85, - 185, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 131391450486342918604555900920288880952936359657946230216264970318333633026n, - "asBuffer": { - "data": [ - 0, - 74, - 93, - 107, - 195, - 78, - 132, - 197, - 163, - 215, - 166, - 37, - 163, - 119, - 47, - 77, - 47, - 132, - 199, - 212, - 102, - 55, - 105, - 30, - 246, - 78, - 226, - 113, - 30, - 108, - 98, - 2, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 11322578994265849565401386951246010528140686424276775038536393177707801557130n, - "asBuffer": { - "data": [ - 25, - 8, - 90, - 68, - 120, - 196, - 170, - 57, - 148, - 212, - 165, - 147, - 94, - 175, - 94, - 13, - 88, - 114, - 106, - 117, - 141, - 57, - 138, - 151, - 246, - 52, - 223, - 34, - 211, - 61, - 56, - 138, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, + ], + "nullifiedCommitments": [ Fr { - "asBigInt": 0n, + "asBigInt": 1000000n, "asBuffer": { "data": [ 0, @@ -56913,15 +75041,15 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, - 0, - 0, + 15, + 66, + 64, ], "type": "Buffer", }, }, Fr { - "asBigInt": 0n, + "asBigInt": 1000000n, "asBuffer": { "data": [ 0, @@ -56953,9 +75081,9 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, - 0, - 0, + 15, + 66, + 64, ], "type": "Buffer", }, @@ -57600,10 +75728,8 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - ], - "nullifiedCommitments": [ Fr { - "asBigInt": 1000000n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -57622,30 +75748,6 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ 0, 0, 0, @@ -57662,22 +75764,6 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, ], "type": "Buffer", }, @@ -59481,691 +77567,1351 @@ KernelCircuitPublicInputsFinal { ], "type": "Buffer", }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + }, + ], + "optionallyRevealedData": [ + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "privateCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "optionallyRevealedData": [ - OptionallyRevealedData { - "callStackItemHash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60205,20 +78951,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -60240,11 +78975,23 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60285,8 +79032,90 @@ KernelCircuitPublicInputsFinal { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60326,20 +79155,49 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -60361,11 +79219,23 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60406,8 +79276,90 @@ KernelCircuitPublicInputsFinal { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60447,20 +79399,49 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -60482,11 +79463,23 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60527,8 +79520,90 @@ KernelCircuitPublicInputsFinal { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60568,20 +79643,49 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -60603,11 +79707,23 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60648,8 +79764,6 @@ KernelCircuitPublicInputsFinal { }, }, }, - ], - "privateCallStack": [ CallRequest { "callerContext": CallerContext { "msgSender": AztecAddress { @@ -60773,7 +79887,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60813,91 +79927,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60937,7 +79967,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60978,6 +80008,8 @@ KernelCircuitPublicInputsFinal { }, }, }, + ], + "publicCallStack": [ CallRequest { "callerContext": CallerContext { "msgSender": AztecAddress { @@ -61101,7 +80133,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61141,91 +80173,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61265,7 +80213,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61429,6 +80377,46 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, "hash": Fr { "asBigInt": 0n, "asBuffer": { @@ -61469,6 +80457,46 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, CallRequest { "callerContext": CallerContext { @@ -61593,7 +80621,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61633,91 +80661,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61757,7 +80701,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61921,7 +80865,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61961,93 +80905,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - ], - "publicCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62087,7 +80945,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62251,6 +81109,46 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, "hash": Fr { "asBigInt": 0n, "asBuffer": { @@ -62291,6 +81189,46 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, CallRequest { "callerContext": CallerContext { @@ -62415,7 +81353,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62455,91 +81393,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62579,7 +81433,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62743,7 +81597,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62783,91 +81637,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62907,7 +81677,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -63071,7 +81841,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -63111,91 +81881,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -63235,7 +81921,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "hash": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index bb7e4f72e44..b93bd7f1715 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -259,7 +259,7 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 1); + assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()) == 1); assert(public_inputs.end.new_commitments[0].eq(unique_siloed_commitments[0])); } @@ -276,8 +276,9 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert_eq(struct_array_length(public_inputs.end.new_commitments, - |c: SideEffect| c.is_zero()), MAX_NEW_COMMITMENTS_PER_TX); + assert_eq( + struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()), + MAX_NEW_COMMITMENTS_PER_TX); for i in 0..MAX_NEW_COMMITMENTS_PER_TX { assert(public_inputs.end.new_commitments[i].eq(unique_siloed_commitments[i])); } @@ -314,11 +315,7 @@ mod tests { // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert( - struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), - |a: SideEffectLinkedToNoteHash| a.is_zero() - )); + assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); } #[test] @@ -336,13 +333,13 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_commitments, unique_siloed_commitments, - |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_zero())); + assert(struct_array_eq(public_inputs.end.new_commitments, [unique_siloed_commitments[0]], |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_zero() )); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_zero())); } #[test] @@ -360,8 +357,7 @@ mod tests { let public_inputs = builder.execute(); assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero())); - assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); + assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); } #[test] @@ -372,8 +368,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 2); - assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()) == 3); + assert_eq(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()), 2); + assert_eq(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_zero()), 3); } // same as previous test, but this time there are 0 commitments! @@ -385,8 +381,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero()) == 0); - assert(struct_array_length(public_inputs.end.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()) == 3); + assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()) == 0); + assert(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_zero()) == 3); } #[test(should_fail_with="New nullifier is transient but hint is invalid")] diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr index 7fba0862213..3430d88ec8d 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr @@ -242,13 +242,15 @@ mod tests { let currentVal = [previous[2].value + 1, previous[2].value + 2]; let siloed = currentVal.map(|c| silo_nullifier(contract_address, c)); - let current = [SideEffectLinkedToNoteHash{ + let current = [SideEffectLinkedToNoteHash { value: siloed[0], note_hash: 0, - counter: 3}, SideEffectLinkedToNoteHash{ + counter: 3, + }, SideEffectLinkedToNoteHash { value: siloed[1], note_hash: 0, - counter: 4},] + counter: 4}, + ]; builder.public_call.public_inputs.new_nullifiers.push_array(current); // There are 3 nullifiers in the previous kernel. The first one is the tx nullifier. let new_nullifiers = [previous[0], previous[1], previous[2], current[0], current[1]]; diff --git a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr index 79ef5693a1d..8201a770945 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -176,7 +176,7 @@ impl BaseRollupInputs { for j in 0..MAX_NEW_COMMITMENTS_PER_TX { // TODO(Maddiaa): batch insert - commitment_tree_leaves[i * MAX_NEW_COMMITMENTS_PER_TX + j] = new_commitments[j]; + commitment_tree_leaves[i * MAX_NEW_COMMITMENTS_PER_TX + j] = new_commitments[j].value; } } @@ -188,7 +188,7 @@ impl BaseRollupInputs { for i in 0..2 { for j in 0..MAX_NEW_NULLIFIERS_PER_TX { - new_nullifiers[i * MAX_NEW_NULLIFIERS_PER_TX + j] = self.kernel_data[i].public_inputs.end.new_nullifiers[j]; + new_nullifiers[i * MAX_NEW_NULLIFIERS_PER_TX + j] = self.kernel_data[i].public_inputs.end.new_nullifiers[j].value; } }; @@ -310,12 +310,12 @@ impl BaseRollupInputs { let mut offset = 0; for j in 0..MAX_NEW_COMMITMENTS_PER_TX { - calldata_hash_inputs[offset + i * MAX_NEW_COMMITMENTS_PER_TX + j] = new_commitments[j]; + calldata_hash_inputs[offset + i * MAX_NEW_COMMITMENTS_PER_TX + j] = new_commitments[j].value; } offset += MAX_NEW_COMMITMENTS_PER_TX * 2; for j in 0..MAX_NEW_NULLIFIERS_PER_TX { - calldata_hash_inputs[offset + i * MAX_NEW_NULLIFIERS_PER_TX + j] = new_nullifiers[j]; + calldata_hash_inputs[offset + i * MAX_NEW_NULLIFIERS_PER_TX + j] = new_nullifiers[j].value; } offset += MAX_NEW_NULLIFIERS_PER_TX * 2; @@ -563,6 +563,7 @@ mod tests { abis::public_data_read::PublicDataRead, abis::public_data_update_request::PublicDataUpdateRequest, abis::previous_kernel_data::PreviousKernelData, + abis::side_effect::SideEffect, tests::previous_kernel_data_builder::PreviousKernelDataBuilder, address::{Address, EthAddress}, utils::bounded_vec::BoundedVec, @@ -678,7 +679,7 @@ mod tests { let low_index = self.new_nullifiers.get_unchecked(original_index as Field).existing_index; - kernel_data[0].public_inputs.end.new_nullifiers[original_index] = new_nullifier; + kernel_data[0].public_inputs.end.new_nullifiers[original_index].value = new_nullifier; let mut low_preimage = pre_existing_nullifiers[low_index]; low_nullifier_leaf_preimages[i] = low_preimage; @@ -910,7 +911,10 @@ mod tests { let mut new_commitments_vec = builder.kernel_data[0].end.new_commitments; for i in 0..new_commitments.len() { - new_commitments_vec.push(new_commitments[i]); + new_commitments_vec.push(SideEffect{ + value: new_commitments[i], + counter: 0, + }); } builder.kernel_data[0].end.new_commitments = new_commitments_vec; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index 82d2747cf5c..94b4fe3c907 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -114,7 +114,7 @@ global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 161; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87; -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 144; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 192; global COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 4096; global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 4096; global PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/contract_tree.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/contract_tree.nr index 81626d401d8..867f28adbe1 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/contract_tree.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/contract_tree.nr @@ -1,8 +1,8 @@ // Constants taken from __snapshots__/noir_test_gen.test.ts.snap -global ROOT = 0x08ccb752b9e4f898ad6b87fb9ca1ed1f2b5e0b6cd67bf083e466ca6a31e21fae; +global ROOT = 0x2d541f5813387a5f4b32d1b3b103447ae142927457a60d00c779a5eeaead471d; global SIBLING_PATHS = [ [ - 0x141929db05c4a4803aebc2a4aea0fb2f09a15ae9862c4da49f245b7726f4088e, + 0x0c58a1ae52142f3369f9c46e6717bbef5aa55f9fc0e901a7d8cc860d9467021e, 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed, 0x21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550, 0x0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb, @@ -20,7 +20,7 @@ global SIBLING_PATHS = [ 0x177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce943, ], [ - 0x0b5dfb998fbdce8e5804992d471c1fc8050642b7aba107e854052eb562944a01, + 0x1ec6c50dc972349d72602ec6887f7accd3174d912ea58629447937865cb88a4d, 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed, 0x21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550, 0x0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb, diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index b9de644453b..657961330cc 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -386,6 +386,7 @@ export function mapCallContextToNoir(callContext: CallContext): CallContextNoir is_delegate_call: callContext.isDelegateCall, is_static_call: callContext.isStaticCall, is_contract_deployment: callContext.isContractDeployment, + start_side_effect_counter: mapFieldToNoir(callContext.startSideEffectCounter), }; } @@ -438,6 +439,8 @@ export function mapCallRequestToNoir(callRequest: CallRequest): CallRequestNoir hash: mapFieldToNoir(callRequest.hash), caller_contract_address: mapAztecAddressToNoir(callRequest.callerContractAddress), caller_context: mapCallerContextToNoir(callRequest.callerContext), + start_side_effect_counter: mapFieldToNoir(callRequest.startSideEffectCounter), + end_side_effect_counter: mapFieldToNoir(callRequest.endSideEffectCounter), }; } diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts index 65c5ee469de..0217b43ae4e 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts @@ -63,6 +63,18 @@ export interface CallContext { is_delegate_call: boolean; is_static_call: boolean; is_contract_deployment: boolean; + start_side_effect_counter: Field; +} + +export interface SideEffect { + value: Field; + counter: Field; +} + +export interface SideEffectLinkedToNoteHash { + value: Field; + note_hash: Field; + counter: Field; } export interface Block { @@ -84,9 +96,9 @@ export interface PrivateCircuitPublicInputs { call_context: CallContext; args_hash: Field; return_values: FixedLengthArray; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack_hashes: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; @@ -117,6 +129,8 @@ export interface CallRequest { hash: Field; caller_contract_address: Address; caller_context: CallerContext; + start_side_effect_counter: Field; + end_side_effect_counter: Field; } export interface Proof {} @@ -190,9 +204,9 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts index 2698830b306..b750f3c9c1b 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts @@ -9,6 +9,17 @@ export type u32 = string; export interface AggregationObject {} +export interface SideEffect { + value: Field; + counter: Field; +} + +export interface SideEffectLinkedToNoteHash { + value: Field; + note_hash: Field; + counter: Field; +} + export interface Address { inner: Field; } @@ -22,6 +33,8 @@ export interface CallRequest { hash: Field; caller_contract_address: Address; caller_context: CallerContext; + start_side_effect_counter: Field; + end_side_effect_counter: Field; } export interface EthAddress { @@ -69,9 +82,9 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; @@ -154,15 +167,16 @@ export interface CallContext { is_delegate_call: boolean; is_static_call: boolean; is_contract_deployment: boolean; + start_side_effect_counter: Field; } export interface PrivateCircuitPublicInputs { call_context: CallContext; args_hash: Field; return_values: FixedLengthArray; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack_hashes: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts index c1adbc850fb..b46d6d68442 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts @@ -9,6 +9,17 @@ export type u32 = string; export interface AggregationObject {} +export interface SideEffect { + value: Field; + counter: Field; +} + +export interface SideEffectLinkedToNoteHash { + value: Field; + note_hash: Field; + counter: Field; +} + export interface Address { inner: Field; } @@ -22,6 +33,8 @@ export interface CallRequest { hash: Field; caller_contract_address: Address; caller_context: CallerContext; + start_side_effect_counter: Field; + end_side_effect_counter: Field; } export interface EthAddress { @@ -69,9 +82,9 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; @@ -154,8 +167,8 @@ export interface PrivateKernelInputsOrdering { export interface FinalAccumulatedData { aggregation_object: AggregationObject; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts b/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts index 4fcc2dc82e3..008825a4ab1 100644 --- a/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts @@ -9,6 +9,17 @@ export type u32 = string; export interface AggregationObject {} +export interface SideEffect { + value: Field; + counter: Field; +} + +export interface SideEffectLinkedToNoteHash { + value: Field; + note_hash: Field; + counter: Field; +} + export interface Address { inner: Field; } @@ -22,6 +33,8 @@ export interface CallRequest { hash: Field; caller_contract_address: Address; caller_context: CallerContext; + start_side_effect_counter: Field; + end_side_effect_counter: Field; } export interface EthAddress { @@ -69,9 +82,9 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; @@ -154,6 +167,7 @@ export interface CallContext { is_delegate_call: boolean; is_static_call: boolean; is_contract_deployment: boolean; + start_side_effect_counter: Field; } export interface StorageUpdateRequest { @@ -174,8 +188,8 @@ export interface PublicCircuitPublicInputs { contract_storage_update_requests: FixedLengthArray; contract_storage_reads: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; unencrypted_logs_hash: FixedLengthArray; unencrypted_log_preimages_length: Field; diff --git a/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts b/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts index c79a0f4392f..4bbb5f80544 100644 --- a/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts @@ -9,6 +9,17 @@ export type u32 = string; export interface AggregationObject {} +export interface SideEffect { + value: Field; + counter: Field; +} + +export interface SideEffectLinkedToNoteHash { + value: Field; + note_hash: Field; + counter: Field; +} + export interface Address { inner: Field; } @@ -22,6 +33,8 @@ export interface CallRequest { hash: Field; caller_contract_address: Address; caller_context: CallerContext; + start_side_effect_counter: Field; + end_side_effect_counter: Field; } export interface EthAddress { @@ -69,9 +82,9 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; @@ -154,6 +167,7 @@ export interface CallContext { is_delegate_call: boolean; is_static_call: boolean; is_contract_deployment: boolean; + start_side_effect_counter: Field; } export interface StorageUpdateRequest { @@ -174,8 +188,8 @@ export interface PublicCircuitPublicInputs { contract_storage_update_requests: FixedLengthArray; contract_storage_reads: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; unencrypted_logs_hash: FixedLengthArray; unencrypted_log_preimages_length: Field; diff --git a/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts b/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts index 241b6e4047a..6973eaf76ac 100644 --- a/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts @@ -9,6 +9,17 @@ export type u32 = string; export interface AggregationObject {} +export interface SideEffect { + value: Field; + counter: Field; +} + +export interface SideEffectLinkedToNoteHash { + value: Field; + note_hash: Field; + counter: Field; +} + export interface Address { inner: Field; } @@ -22,6 +33,8 @@ export interface CallRequest { hash: Field; caller_contract_address: Address; caller_context: CallerContext; + start_side_effect_counter: Field; + end_side_effect_counter: Field; } export interface EthAddress { @@ -69,9 +82,9 @@ export interface PublicDataRead { export interface CombinedAccumulatedData { aggregation_object: AggregationObject; - read_requests: FixedLengthArray; - new_commitments: FixedLengthArray; - new_nullifiers: FixedLengthArray; + read_requests: FixedLengthArray; + new_commitments: FixedLengthArray; + new_nullifiers: FixedLengthArray; nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; diff --git a/yarn-project/p2p-bootstrap/terraform/servicediscovery-drain.sh b/yarn-project/p2p-bootstrap/terraform/servicediscovery-drain.sh index 1fa02e92d91..b8d6c301519 100755 --- a/yarn-project/p2p-bootstrap/terraform/servicediscovery-drain.sh +++ b/yarn-project/p2p-bootstrap/terraform/servicediscovery-drain.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 diff --git a/yarn-project/pxe/src/kernel_prover/proof_creator.ts b/yarn-project/pxe/src/kernel_prover/proof_creator.ts index 3d17fe44dd1..1da88a42f0d 100644 --- a/yarn-project/pxe/src/kernel_prover/proof_creator.ts +++ b/yarn-project/pxe/src/kernel_prover/proof_creator.ts @@ -96,7 +96,9 @@ export class KernelProofCreator implements ProofCreator { public getSiloedCommitments(publicInputs: PrivateCircuitPublicInputs) { const contractAddress = publicInputs.callContext.storageContractAddress; - return Promise.resolve(publicInputs.newCommitments.map(commitment => siloCommitment(contractAddress, commitment))); + return Promise.resolve( + publicInputs.newCommitments.map(commitment => siloCommitment(contractAddress, commitment.value)), + ); } public async createProofInit(privateInputs: PrivateKernelInputsInit): Promise { diff --git a/yarn-project/pxe/src/simulator_oracle/index.ts b/yarn-project/pxe/src/simulator_oracle/index.ts index 7e495c173ea..2eb485fd287 100644 --- a/yarn-project/pxe/src/simulator_oracle/index.ts +++ b/yarn-project/pxe/src/simulator_oracle/index.ts @@ -183,4 +183,12 @@ export class SimulatorOracle implements DBOracle { getBlockHeader(): Promise { return Promise.resolve(this.db.getBlockHeader()); } + + /** + * Fetches the current block number. + * @returns The block number. + */ + public async getBlockNumber(): Promise { + return await this.stateInfoProvider.getBlockNumber(); + } } diff --git a/yarn-project/scripts/run_script.sh b/yarn-project/scripts/run_script.sh index a3347411e85..a06cf4eb42e 100755 --- a/yarn-project/scripts/run_script.sh +++ b/yarn-project/scripts/run_script.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Downloads the image that contains the built scripts package and executes the given command in it. [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu diff --git a/yarn-project/scripts/version_packages.sh b/yarn-project/scripts/version_packages.sh index a708cb7a4ed..bf631bd8ac1 100755 --- a/yarn-project/scripts/version_packages.sh +++ b/yarn-project/scripts/version_packages.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu if [ -n "$COMMIT_TAG" ]; then diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts index 5909afce8b3..515d3c7af74 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts @@ -14,6 +14,8 @@ import { Proof, PublicDataUpdateRequest, RootRollupPublicInputs, + SideEffect, + SideEffectLinkedToNoteHash, makeTuple, range, } from '@aztec/circuits.js'; @@ -22,6 +24,8 @@ import { fr, makeBaseOrMergeRollupPublicInputs, makeNewContractData, + makeNewSideEffect, + makeNewSideEffectLinkedToNoteHash, makePrivateKernelPublicInputsFinal, makeProof, makePublicCallRequest, @@ -123,14 +127,14 @@ describe('sequencer/solo_block_builder', () => { const updateExpectedTreesFromTxs = async (txs: ProcessedTx[]) => { const newContracts = flatMap(txs, tx => tx.data.end.newContracts.map(n => computeContractLeaf(n))); for (const [tree, leaves] of [ - [MerkleTreeId.NOTE_HASH_TREE, flatMap(txs, tx => tx.data.end.newCommitments.map(l => l.toBuffer()))], + [MerkleTreeId.NOTE_HASH_TREE, flatMap(txs, tx => tx.data.end.newCommitments.map(l => l.value.toBuffer()))], [MerkleTreeId.CONTRACT_TREE, newContracts.map(x => x.toBuffer())], ] as const) { await expectsDb.appendLeaves(tree, leaves); } await expectsDb.batchInsert( MerkleTreeId.NULLIFIER_TREE, - flatMap(txs, tx => tx.data.end.newNullifiers.map(x => x.toBuffer())), + flatMap(txs, tx => tx.data.end.newNullifiers.map(x => x.value.toBuffer())), NULLIFIER_SUBTREE_HEIGHT, ); for (const write of txs.flatMap(tx => tx.data.end.publicDataUpdateRequests)) { @@ -237,8 +241,8 @@ describe('sequencer/solo_block_builder', () => { endL1ToL2MessagesTreeSnapshot: rootRollupOutput.endL1ToL2MessagesTreeSnapshot, startArchiveSnapshot: rootRollupOutput.startArchiveSnapshot, endArchiveSnapshot: rootRollupOutput.endArchiveSnapshot, - newCommitments, - newNullifiers, + newCommitments: newCommitments.map((sideeffect: SideEffect) => sideeffect.value), + newNullifiers: newNullifiers.map((sideeffect: SideEffectLinkedToNoteHash) => sideeffect.value), newContracts, newContractData, newPublicDataWrites, @@ -307,9 +311,14 @@ describe('sequencer/solo_block_builder', () => { const processedTx = await makeProcessedTx(tx, kernelOutput, makeProof()); - processedTx.data.end.newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, fr, seed + 0x100); - processedTx.data.end.newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x200); - processedTx.data.end.newNullifiers[tx.data.end.newNullifiers.length - 1] = Fr.ZERO; + processedTx.data.end.newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, makeNewSideEffect, seed + 0x100); + processedTx.data.end.newNullifiers = makeTuple( + MAX_NEW_NULLIFIERS_PER_TX, + makeNewSideEffectLinkedToNoteHash, + seed + 0x200, + ); + processedTx.data.end.newNullifiers[tx.data.end.newNullifiers.length - 1] = SideEffectLinkedToNoteHash.empty(); + processedTx.data.end.newL2ToL1Msgs = makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x300); processedTx.data.end.newContracts = [makeNewContractData(seed + 0x1000)]; processedTx.data.end.encryptedLogsHash = to2Fields(L2Block.computeKernelLogsHash(processedTx.encryptedLogs)); @@ -392,11 +401,15 @@ describe('sequencer/solo_block_builder', () => { // new added values const tx = await makeEmptyProcessedTx(); - tx.data.end.newNullifiers[0] = new Fr( - 10336601644835972678500657502133589897705389664587188571002640950065546264856n, + tx.data.end.newNullifiers[0] = new SideEffectLinkedToNoteHash( + new Fr(10336601644835972678500657502133589897705389664587188571002640950065546264856n), + Fr.ZERO, + Fr.ZERO, ); - tx.data.end.newNullifiers[1] = new Fr( - 17490072961923661940560522096125238013953043065748521735636170028491723851741n, + tx.data.end.newNullifiers[1] = new SideEffectLinkedToNoteHash( + new Fr(17490072961923661940560522096125238013953043065748521735636170028491723851741n), + Fr.ZERO, + Fr.ZERO, ); const txs = [tx, await makeEmptyProcessedTx(), await makeEmptyProcessedTx(), await makeEmptyProcessedTx()]; diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts index 7b19203826f..3b3d447064f 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts @@ -31,6 +31,8 @@ import { RollupTypes, RootRollupInputs, RootRollupPublicInputs, + SideEffect, + SideEffectLinkedToNoteHash, VK_TREE_HEIGHT, VerificationKey, makeTuple, @@ -167,8 +169,8 @@ export class SoloBlockBuilder implements BlockBuilder { endL1ToL2MessagesTreeSnapshot, startArchiveSnapshot, endArchiveSnapshot, - newCommitments, - newNullifiers, + newCommitments: newCommitments.map((c: SideEffect) => c.value), + newNullifiers: newNullifiers.map((n: SideEffectLinkedToNoteHash) => n.value), newL2ToL1Msgs, newContracts, newContractData, @@ -253,6 +255,7 @@ export class SoloBlockBuilder implements BlockBuilder { globalVariables: GlobalVariables, ): Promise<[BaseOrMergeRollupPublicInputs, Proof]> { this.debug(`Running base rollup for ${tx1.hash} ${tx2.hash}`); + // throw Error('building input...');// gets past here const rollupInput = await this.buildBaseRollupInput(tx1, tx2, globalVariables); const rollupOutput = await this.simulator.baseRollupCircuit(rollupInput); await this.validateTrees(rollupOutput); @@ -659,7 +662,7 @@ export class SoloBlockBuilder implements BlockBuilder { // Update the contract and note hash trees with the new items being inserted to get the new roots // that will be used by the next iteration of the base rollup circuit, skipping the empty ones const newContracts = flatMap([left, right], tx => tx.data.end.newContracts.map(cd => computeContractLeaf(cd))); - const newCommitments = flatMap([left, right], tx => tx.data.end.newCommitments.map(x => x.toBuffer())); + const newCommitments = flatMap([left, right], tx => tx.data.end.newCommitments.map(x => x.value.toBuffer())); await this.db.appendLeaves( MerkleTreeId.CONTRACT_TREE, newContracts.map(x => x.toBuffer()), @@ -699,7 +702,7 @@ export class SoloBlockBuilder implements BlockBuilder { sortedNewLeavesIndexes: sortednewNullifiersIndexes, } = await this.db.batchInsert( MerkleTreeId.NULLIFIER_TREE, - newNullifiers.map(fr => fr.toBuffer()), + newNullifiers.map(sideEffectLinkedToNoteHash => sideEffectLinkedToNoteHash.value.toBuffer()), NULLIFIER_SUBTREE_HEIGHT, ); if (nullifierWitnessLeaves === undefined) { diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 382730e4c36..21c7863789d 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -289,7 +289,16 @@ function makePublicExecutionResult( tx: FunctionCall, nestedExecutions: PublicExecutionResult[] = [], ): PublicExecutionResult { - const callContext = new CallContext(from, tx.to, EthAddress.ZERO, tx.functionData.selector, false, false, false); + const callContext = new CallContext( + from, + tx.to, + EthAddress.ZERO, + tx.functionData.selector, + false, + false, + false, + Fr.ZERO, + ); const execution: PublicExecution = { callContext, contractAddress: tx.to, diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.ts index 820da1cf0c6..b2f86bd4b1a 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.ts @@ -36,6 +36,8 @@ import { PublicKernelInputs, PublicKernelPublicInputs, RETURN_VALUES_LENGTH, + SideEffect, + SideEffectLinkedToNoteHash, VK_TREE_HEIGHT, } from '@aztec/circuits.js'; import { computeVarArgsHash } from '@aztec/circuits.js/abis'; @@ -276,8 +278,8 @@ export class PublicProcessor { callContext: result.execution.callContext, proverAddress: AztecAddress.ZERO, argsHash: computeVarArgsHash(result.execution.args), - newCommitments: padArrayEnd(result.newCommitments, Fr.ZERO, MAX_NEW_COMMITMENTS_PER_CALL), - newNullifiers: padArrayEnd(result.newNullifiers, Fr.ZERO, MAX_NEW_NULLIFIERS_PER_CALL), + newCommitments: padArrayEnd(result.newCommitments, SideEffect.empty(), MAX_NEW_COMMITMENTS_PER_CALL), + newNullifiers: padArrayEnd(result.newNullifiers, SideEffectLinkedToNoteHash.empty(), MAX_NEW_NULLIFIERS_PER_CALL), newL2ToL1Msgs: padArrayEnd(result.newL2ToL1Messages, Fr.ZERO, MAX_NEW_L2_TO_L1_MSGS_PER_CALL), returnValues: padArrayEnd(result.returnValues, Fr.ZERO, RETURN_VALUES_LENGTH), contractStorageReads: padArrayEnd( diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index cd70ffca8ee..f6562183e18 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -294,7 +294,7 @@ export class Sequencer { continue; } - tx.data.end.newNullifiers.forEach(n => thisBlockNullifiers.add(n.toBigInt())); + tx.data.end.newNullifiers.forEach(n => thisBlockNullifiers.add(n.value.toBigInt())); validTxs.push(tx); if (validTxs.length >= this.maxTxsPerBlock) { break; @@ -365,10 +365,10 @@ export class Sequencer { */ protected isTxDoubleSpendSameBlock(tx: Tx | ProcessedTx, thisBlockNullifiers: Set): boolean { // We only consider non-empty nullifiers - const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.isZero()); + const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.isEmpty()); for (const nullifier of newNullifiers) { - if (thisBlockNullifiers.has(nullifier.toBigInt())) { + if (thisBlockNullifiers.has(nullifier.value.toBigInt())) { return true; } } @@ -383,10 +383,10 @@ export class Sequencer { */ protected async isTxDoubleSpend(tx: Tx | ProcessedTx): Promise { // We only consider non-empty nullifiers - const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.isZero()); + const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.isEmpty()); // Ditch this tx if it has a repeated nullifiers - const uniqNullifiers = new Set(newNullifiers.map(n => n.toBigInt())); + const uniqNullifiers = new Set(newNullifiers.map(n => n.value.toBigInt())); if (uniqNullifiers.size !== newNullifiers.length) { return true; } diff --git a/yarn-project/types/src/interfaces/aztec-node.ts b/yarn-project/types/src/interfaces/aztec-node.ts index 92463e96b0f..ac57cd2f3a5 100644 --- a/yarn-project/types/src/interfaces/aztec-node.ts +++ b/yarn-project/types/src/interfaces/aztec-node.ts @@ -38,12 +38,6 @@ export interface AztecNode extends StateInfoProvider { */ getBlocks(from: number, limit: number): Promise; - /** - * Fetches the current block number. - * @returns The block number. - */ - getBlockNumber(): Promise; - /** * Method to fetch the version of the rollup the node is connected to. * @returns The rollup version. diff --git a/yarn-project/types/src/interfaces/state_info_provider.ts b/yarn-project/types/src/interfaces/state_info_provider.ts index 7818f984dab..97616711fb9 100644 --- a/yarn-project/types/src/interfaces/state_info_provider.ts +++ b/yarn-project/types/src/interfaces/state_info_provider.ts @@ -138,4 +138,10 @@ export interface StateInfoProvider { * @returns The requested block. */ getBlock(number: number): Promise; + + /** + * Fetches the current block number. + * @returns The block number. + */ + getBlockNumber(): Promise; } diff --git a/yarn-project/types/src/tx/tx.ts b/yarn-project/types/src/tx/tx.ts index 381d0a7f782..0f1ab8eb568 100644 --- a/yarn-project/types/src/tx/tx.ts +++ b/yarn-project/types/src/tx/tx.ts @@ -159,7 +159,7 @@ export class Tx { if (!firstNullifier) { throw new Error(`Cannot get tx hash since first nullifier is missing`); } - return Promise.resolve(new TxHash(firstNullifier.toBuffer())); + return Promise.resolve(new TxHash(firstNullifier.value.toBuffer())); } /** Returns stats about this tx. */ diff --git a/yarn-project/types/src/tx/tx_hash.ts b/yarn-project/types/src/tx/tx_hash.ts index 138aa6dbe0f..00003456ee3 100644 --- a/yarn-project/types/src/tx/tx_hash.ts +++ b/yarn-project/types/src/tx/tx_hash.ts @@ -1,4 +1,3 @@ -import { assertMemberLength } from '@aztec/circuits.js'; import { deserializeBigInt, serializeBigInt } from '@aztec/foundation/serialize'; /** @@ -21,7 +20,9 @@ export class TxHash { */ public buffer: Buffer, ) { - assertMemberLength(this, 'buffer', TxHash.SIZE); + if (buffer.length !== TxHash.SIZE) { + throw new Error(`Expected buffer to have length ${TxHash.SIZE} but was ${buffer.length}`); + } } /** diff --git a/yarn-project/world-state/src/merkle-tree/merkle_tree_snapshot_operations_facade.ts b/yarn-project/world-state/src/merkle-tree/merkle_tree_snapshot_operations_facade.ts index 1fd883b98b5..450b6c5bca8 100644 --- a/yarn-project/world-state/src/merkle-tree/merkle_tree_snapshot_operations_facade.ts +++ b/yarn-project/world-state/src/merkle-tree/merkle_tree_snapshot_operations_facade.ts @@ -65,7 +65,7 @@ export class MerkleTreeSnapshotOperationsFacade implements MerkleTreeOperations } | undefined > { - return Promise.reject(new Error('not implemented')); + return Promise.reject(new Error('Snapshots not implemented for nullifier tree')); } async getSiblingPath(treeId: MerkleTreeId, index: bigint): Promise> { diff --git a/yarn-project/yarn-project-base/Dockerfile b/yarn-project/yarn-project-base/Dockerfile index ee9c4f4f6b7..96be5e824c3 100644 --- a/yarn-project/yarn-project-base/Dockerfile +++ b/yarn-project/yarn-project-base/Dockerfile @@ -47,8 +47,8 @@ FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/bb.js as bb.js FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/noir as noir FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/noir-packages as noir-packages -FROM node:18.19.0-alpine -RUN apk update && apk add --no-cache bash jq curl +FROM node:18.19.0 +RUN apt update && apt install -y jq curl perl && rm -rf /var/lib/apt/lists/* && apt-get clean # Copy L1 contracts. COPY --from=contracts /usr/src/l1-contracts /usr/src/l1-contracts From 901de10ef0971bfa13326cba347e988717b092f7 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Wed, 13 Dec 2023 06:18:58 +0000 Subject: [PATCH 31/71] noir-protocol snapshot --- .../src/__snapshots__/index.test.ts.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index 83629524134..0abd43b7113 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -94,9 +94,9 @@ exports[`Noir compatibility tests (interop_testing.nr) ComputeContractAddressFro exports[`Noir compatibility tests (interop_testing.nr) Function leaf matches noir 1`] = `"0x1ad8ece7f40e63d011ae47c6ce6cdaf31d632a23f5cf35bbeaaf69c8302afdbc"`; -exports[`Noir compatibility tests (interop_testing.nr) Public call stack item matches noir 1`] = `"0x0a370c67b66e30901470c11a199764a914fc0fcfbc737ed03153079b2765813a"`; +exports[`Noir compatibility tests (interop_testing.nr) Public call stack item matches noir 1`] = `"0x143282214a65e4f4b1b3aa3785676ec07afbdc9dbe05cf9ba45557041c58cb2c"`; -exports[`Noir compatibility tests (interop_testing.nr) Public call stack item request matches noir 1`] = `"0x1d51d7758d792c9cd6edd8e8ec5f1f9fb1f974abc1af6bb4cf9f2328ef306c96"`; +exports[`Noir compatibility tests (interop_testing.nr) Public call stack item request matches noir 1`] = `"0x229de3a8ec407b500b27abe888673a3beac946844b64cde7c6610eac54343981"`; exports[`Noir compatibility tests (interop_testing.nr) TxRequest Hash matches Noir 1`] = `"0x0b487ff2900ae1178e131bfe333fdbc351beef658f7c0d62db2801429b1aab75"`; From 0a4bbe2dca4c139bb5fc6b97a940b761718dd4fc Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Wed, 13 Dec 2023 23:39:02 +0000 Subject: [PATCH 32/71] update context.nr --- yarn-project/aztec-nr/aztec/src/context.nr | 133 +++++++++++------- .../oracle/enqueue_public_function_call.nr | 6 +- .../aztec-nr/aztec/src/state_vars/set.nr | 2 +- yarn-project/aztec-nr/aztec/src/utils.nr | 25 ++++ 4 files changed, 113 insertions(+), 53 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 7d931c86af6..9b022236fca 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -8,6 +8,7 @@ use dep::protocol_types::{ public_circuit_public_inputs::PublicCircuitPublicInputs, call_stack_item::PrivateCallStackItem, call_stack_item::PublicCallStackItem, + side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, address::{ AztecAddress, @@ -23,7 +24,6 @@ use dep::protocol_types::{ MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_READ_REQUESTS_PER_CALL, - MAX_PENDING_READ_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH, }, @@ -51,7 +51,7 @@ use crate::types::{ vec::BoundedVec, }; -use crate::utils::arr_copy_slice; +use crate::utils::{arr_copy_slice, arr_copy_slice_in_struct_dumb2, arr_copy_slice_in_struct_dumb3}; use crate::oracle::{ arguments, @@ -68,14 +68,15 @@ use dep::std::option::Option; struct PrivateContext { // docs:start:private-context inputs: PrivateContextInputs, + side_effect_counter: Field, args_hash : Field, return_values : BoundedVec, - read_requests: BoundedVec, + read_requests: BoundedVec, - new_commitments: BoundedVec, - new_nullifiers: BoundedVec, + new_commitments: BoundedVec, + new_nullifiers: BoundedVec, nullified_commitments: BoundedVec, private_call_stack_hashes : BoundedVec, @@ -94,14 +95,17 @@ impl PrivateContext { pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext { PrivateContext { inputs: inputs, + // starts at 1 because all private calls have txhash nullifier as 0th nullifier + // and therefore 0th sideeffect. increment this for each side effect in this context + side_effect_counter: 1, args_hash: args_hash, return_values: BoundedVec::new(0), - read_requests: BoundedVec::new(0), + read_requests: BoundedVec::new(SideEffect::zero()), - new_commitments: BoundedVec::new(0), - new_nullifiers: BoundedVec::new(0), + new_commitments: BoundedVec::new(SideEffect::zero()), + new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::zero()), nullified_commitments: BoundedVec::new(0), block_header: inputs.block_header, @@ -175,22 +179,38 @@ impl PrivateContext { } pub fn push_read_request(&mut self, read_request: Field) { - self.read_requests.push(read_request); + let side_effect = SideEffect { + value: read_request, + counter: self.side_effect_counter + }; + self.read_requests.push(side_effect); + self.side_effect_counter = self.side_effect_counter + 1; } pub fn push_new_note_hash(&mut self, note_hash: Field) { - self.new_commitments.push(note_hash); + let side_effect = SideEffect { + value: note_hash, + counter: self.side_effect_counter + }; + self.new_commitments.push(side_effect); + self.side_effect_counter = self.side_effect_counter + 1; } // We never push a zero nullified_commitment as zero is used to indicate the end // of a field array in private kernel. This routine transparently replaces a // zero value into the special placeholder: EMPTY_NULLIFIED_COMMITMENT. pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) { - self.new_nullifiers.push(nullifier); let mut non_zero_nullified = nullified_commitment; if (non_zero_nullified == 0) { non_zero_nullified = EMPTY_NULLIFIED_COMMITMENT; } + let side_effect = SideEffectLinkedToNoteHash { + value: nullifier, + note_hash: non_zero_nullified, + counter: self.side_effect_counter + }; + self.new_nullifiers.push(side_effect); + self.side_effect_counter = self.side_effect_counter + 1; self.nullified_commitments.push(non_zero_nullified); } @@ -279,45 +299,46 @@ impl PrivateContext { is_delegate_call : fields[9] as bool, is_static_call : fields[10] as bool, is_contract_deployment: fields[11] as bool, + start_side_effect_counter: fields[12], }, // TODO handle the offsets as a variable incremented during extraction? - args_hash: fields[12], - return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 13), - read_requests: arr_copy_slice(fields, [0; MAX_READ_REQUESTS_PER_CALL], 17), - new_commitments: arr_copy_slice(fields, [0; MAX_NEW_COMMITMENTS_PER_CALL], 49), - new_nullifiers: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 65), - nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 81), - private_call_stack: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 97), - public_call_stack: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 101), - new_l2_to_l1_msgs: arr_copy_slice(fields, [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], 105), - encrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 107), - unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 109), - encrypted_log_preimages_length: fields[111], - unencrypted_log_preimages_length: fields[112], + args_hash: fields[13], + return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 14), // +1 + read_requests: arr_copy_slice_in_struct_dumb2(fields, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL], SideEffect::deserialise, 18), + new_commitments: arr_copy_slice_in_struct_dumb2(fields, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL], SideEffect::deserialise, 82), + new_nullifiers: new_nullifiers: arr_copy_slice_in_struct_dumb3(fields, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL], SideEffectLinkedToNoteHash::deserialise, 114), + nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 162), + private_call_stack_hashes: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 178), + public_call_stack_hashes: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 190), + new_l2_to_l1_msgs: arr_copy_slice(fields, [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], 202), + encrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 206), + unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 208), + encrypted_log_preimages_length: fields[210], + unencrypted_log_preimages_length: fields[211], block_header: BlockHeader{ // Must match order in `private_circuit_public_inputs.hpp` - note_hash_tree_root : fields[113], - nullifier_tree_root : fields[114], - contract_tree_root : fields[115], - l1_to_l2_messages_tree_root : fields[116], - archive_root : fields[117], - public_data_tree_root: fields[118], - global_variables_hash: fields[119], + note_hash_tree_root : fields[212], + nullifier_tree_root : fields[213], + contract_tree_root : fields[214], + l1_to_l2_messages_tree_root : fields[215], + archive_root : fields[216], + public_data_tree_root: fields[217], + global_variables_hash: fields[218], }, contract_deployment_data: ContractDeploymentData { deployer_public_key: Point { - x: fields[120], - y: fields[121] + x: fields[219], + y: fields[220] }, - constructor_vk_hash : fields[122], - function_tree_root : fields[123], - contract_address_salt : fields[124], - portal_contract_address : fields[125], + constructor_vk_hash : fields[221], + function_tree_root : fields[222], + contract_address_salt : fields[223], + portal_contract_address : fields[224], }, - chain_id: fields[126], - version: fields[127], + chain_id: fields[225], + version: fields[226], }, - is_execution_request: fields[128] as bool, + is_execution_request: fields[227] as bool, }; assert(contract_address.eq(item.contract_address)); assert(function_selector.eq(item.function_data.selector)); @@ -388,14 +409,15 @@ impl PrivateContext { is_delegate_call : fields[9] as bool, is_static_call : fields[10] as bool, is_contract_deployment: fields[11] as bool, + start_side_effect_counter: fields[12], }, - args_hash: fields[12], + args_hash: fields[13], return_values: [0; RETURN_VALUES_LENGTH], contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL], contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL], public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], - new_commitments: [0; MAX_NEW_COMMITMENTS_PER_CALL], - new_nullifiers: [0; MAX_NEW_NULLIFIERS_PER_CALL], + new_commitments: [SideEffect::zero(); MAX_NEW_COMMITMENTS_PER_CALL], + new_nullifiers: [SideEffectLinkedToNoteHash::zero(); MAX_NEW_NULLIFIERS_PER_CALL], new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256], unencrypted_log_preimages_length: 0, @@ -426,6 +448,7 @@ impl PrivateContext { struct PublicContext { inputs: PublicContextInputs, + side_effect_counter: Field, args_hash : Field, return_values : BoundedVec, @@ -434,8 +457,8 @@ struct PublicContext { contract_storage_reads: BoundedVec, public_call_stack_hashes: BoundedVec, - new_commitments: BoundedVec, - new_nullifiers: BoundedVec, + new_commitments: BoundedVec, + new_nullifiers: BoundedVec, new_l2_to_l1_msgs: BoundedVec, @@ -452,6 +475,7 @@ impl PublicContext { let empty_storage_update = StorageUpdateRequest::empty(); PublicContext { inputs: inputs, + side_effect_counter: 0, // no initial nullifier in new public context. increment on every side effect args_hash: args_hash, return_values: BoundedVec::new(0), @@ -460,8 +484,8 @@ impl PublicContext { contract_storage_reads: BoundedVec::new(empty_storage_read), public_call_stack_hashes: BoundedVec::new(0), - new_commitments: BoundedVec::new(0), - new_nullifiers: BoundedVec::new(0), + new_commitments: BoundedVec::new(SideEffect::zero()), + new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::zero()), new_l2_to_l1_msgs: BoundedVec::new(0), @@ -536,11 +560,22 @@ impl PublicContext { } pub fn push_new_note_hash(&mut self, note_hash: Field) { - self.new_commitments.push(note_hash); + let side_effect = SideEffect { + value: note_hash, + side_effect_counter: self.side_effect_counter + }; + self.new_commitments.push(side_effect); + self.side_effect_counter = self.side_effect_counter + 1; } pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) { - self.new_nullifiers.push(nullifier); + let side_effect = SideEffectLinkedToNoteHash { + value: nullifier, + note_hash: EMPTY_NULLIFIED_COMMITMENT, // cannot nullify pending notes in public context + side_effect_counter: self.side_effect_counter + }; + self.new_nullifiers.push(side_effect); + self.side_effect_counter = self.side_effect_counter + 1; } pub fn message_portal(&mut self, content: Field) { diff --git a/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr b/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr index 82a6dc96c22..50fd4bf0d5d 100644 --- a/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr +++ b/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr @@ -6,9 +6,9 @@ use dep::protocol_types::{ // contract_address + // args_hash + // crate::abi::FUNCTION_DATA_SIZE + -// crate::abi::CALL_CONTEXT_SIZE + -// = 2 + 4 + 7 -global ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 13; +// crate::abi::CALL_CONTEXT_SIZE + side_effect_counter +// = 2 + 4 + 7 + 1 +global ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 14; #[oracle(enqueuePublicFunctionCall)] fn enqueue_public_function_call_oracle(_contract_address: AztecAddress, _function_selector: FunctionSelector, _args_hash: Field) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {} diff --git a/yarn-project/aztec-nr/aztec/src/state_vars/set.nr b/yarn-project/aztec-nr/aztec/src/state_vars/set.nr index 1c9a317fb28..793680865ca 100644 --- a/yarn-project/aztec-nr/aztec/src/state_vars/set.nr +++ b/yarn-project/aztec-nr/aztec/src/state_vars/set.nr @@ -76,7 +76,7 @@ impl Set { pub fn remove(self, note: Note) { let context = self.context.private.unwrap(); let note_hash = compute_note_hash_for_read_or_nullify(self.note_interface, note); - let has_been_read = context.read_requests.any(|r| r == note_hash); + let has_been_read = context.read_requests.any(|r: SideEffect| r.value == note_hash); assert(has_been_read, "Can only remove a note that has been read from the set."); destroy_note( diff --git a/yarn-project/aztec-nr/aztec/src/utils.nr b/yarn-project/aztec-nr/aztec/src/utils.nr index a9a766c6b7a..350ee70f752 100644 --- a/yarn-project/aztec-nr/aztec/src/utils.nr +++ b/yarn-project/aztec-nr/aztec/src/utils.nr @@ -31,4 +31,29 @@ pub fn full_field_less_than(lhs: Field, rhs: Field) -> bool { pub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool { dep::std::eddsa::lt_bytes32(rhs, lhs) +} + +// TODO: Replace these with something smart. +pub fn arr_copy_slice_in_struct_dumb2( + src: [T; N], + mut dst: [U; M], + deserialise: fn([T; 2]) -> U, + offset: Field, +) -> [U; M] { + for i in 0..dst.len() { + dst[i] = deserialise([src[offset + 2 * i], src[offset + 2 * i + 1]]); + } + dst +} + +pub fn arr_copy_slice_in_struct_dumb3( + src: [T; N], + mut dst: [U; M], + deserialise: fn([T; 3]) -> U, + offset: Field, +) -> [U; M] { + for i in 0..dst.len() { + dst[i] = deserialise([src[offset + 2 * i], src[offset + 2 * i + 1], src[offset + 2 * i + 2]]); + } + dst } \ No newline at end of file From ee8be04769775914f605c027abcb8a11f99baf4b Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 01:27:56 +0000 Subject: [PATCH 33/71] bad merge on constants update --- .../src/core/libraries/ConstantsGen.sol | 6 +- .../aztec-nr/aztec/src/state_vars/set.nr | 5 +- .../src/artifacts/ecdsa_account_contract.json | 813 ------------------ .../artifacts/schnorr_account_contract.json | 801 ----------------- .../schnorr_single_key_account_contract.json | 736 ---------------- yarn-project/circuits.js/src/constants.gen.ts | 6 +- .../src/crates/types/src/abis/call_context.nr | 4 +- .../src/abis/private_circuit_public_inputs.nr | 16 +- .../src/abis/public_circuit_public_inputs.nr | 9 +- .../src/crates/types/src/constants.nr | 6 +- 10 files changed, 32 insertions(+), 2370 deletions(-) delete mode 100644 yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json delete mode 100644 yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json delete mode 100644 yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 136313fb2d1..d003a06cce9 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -69,14 +69,14 @@ library Constants { uint256 internal constant GET_NOTE_ORACLE_RETURN_LENGTH = 23; uint256 internal constant MAX_NOTES_PER_PAGE = 10; uint256 internal constant VIEW_NOTE_ORACLE_RETURN_LENGTH = 212; - uint256 internal constant CALL_CONTEXT_LENGTH = 7; + uint256 internal constant CALL_CONTEXT_LENGTH = 8; uint256 internal constant BLOCK_HEADER_LENGTH = 7; uint256 internal constant FUNCTION_DATA_LENGTH = 4; uint256 internal constant CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 155; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 235; uint256 internal constant CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; uint256 internal constant CONTRACT_STORAGE_READ_LENGTH = 2; - uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 142; + uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant EMPTY_NULLIFIED_COMMITMENT = 1000000; uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; diff --git a/yarn-project/aztec-nr/aztec/src/state_vars/set.nr b/yarn-project/aztec-nr/aztec/src/state_vars/set.nr index 793680865ca..1d873e1b149 100644 --- a/yarn-project/aztec-nr/aztec/src/state_vars/set.nr +++ b/yarn-project/aztec-nr/aztec/src/state_vars/set.nr @@ -1,6 +1,9 @@ use dep::std::option::Option; use crate::abi::PublicContextInputs; -use dep::protocol_types::constants::{MAX_NOTES_PER_PAGE, MAX_READ_REQUESTS_PER_CALL}; +use dep::protocol_types::{ + constants::{MAX_NOTES_PER_PAGE, MAX_READ_REQUESTS_PER_CALL}, + abis::side_effect::{SideEffect, SideEffectLinkedToNoteHash}, +}; use crate::context::{PrivateContext, PublicContext, Context}; use crate::note::{ lifecycle::{create_note, create_note_hash_from_public, destroy_note}, diff --git a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json deleted file mode 100644 index e07487ffe04..00000000000 --- a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json +++ /dev/null @@ -1,813 +0,0 @@ -{ - "name": "EcdsaAccount", - "functions": [ - { - "name": "compute_note_hash_and_nullifier", - "functionType": "unconstrained", - "isInternal": false, - "parameters": [ - { - "name": "contract_address", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "nonce", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "storage_slot", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "serialized_note", - "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "field" - } - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "constructor", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "signing_pub_key_x", - "type": { - "kind": "array", - "length": 32, - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 8 - } - }, - "visibility": "public" - }, - { - "name": "signing_pub_key_y", - "type": { - "kind": "array", - "length": 32, - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 8 - } - }, - "visibility": "public" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "entrypoint", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "payload", - "type": { - "kind": "struct", - "path": "authwit::entrypoint::EntrypointPayload", - "fields": [ - { - "name": "function_calls", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "struct", - "path": "authwit::entrypoint::FunctionCall", - "fields": [ - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "target_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "is_public", - "type": { - "kind": "boolean" - } - } - ] - } - } - }, - { - "name": "nonce", - "type": { - "kind": "field" - } - } - ] - }, - "visibility": "public" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "is_valid", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "is_valid_public", - "functionType": "open", - "isInternal": false, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", - "fields": [ - { - "name": "call_context", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", - "fields": [ - { - "name": "msg_sender", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "storage_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "portal_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::EthAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "is_delegate_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_contract_deployment", - "type": { - "kind": "boolean" - } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "return_values", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "contract_storage_update_requests", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "old_value", - "type": { - "kind": "field" - } - }, - { - "name": "new_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "contract_storage_reads", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "current_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "public_call_stack_hashes", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_commitments", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_nullifiers", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_l2_to_l1_msgs", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_logs_hash", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_log_preimages_length", - "type": { - "kind": "field" - } - }, - { - "name": "block_header", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", - "fields": [ - { - "name": "note_hash_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "nullifier_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "contract_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "l1_to_l2_messages_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "archive_root", - "type": { - "kind": "field" - } - }, - { - "name": "public_data_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "global_variables_hash", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "prover_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - } - ] - } - ], - "bytecode": "H4sIAAAAAAAA/+3dB3jcxpUH8AVJUQJXpHovXIpUbyTVrE5JllWtahXLapRIFatQFqnmIndZLpJc4hq39O70nku95FIvycUpl1wSJ5fk4kt8ycW59HIz2HnRnxC84cRvzFnz4fueFhgAM7+ZAbDAAhCfTKVSQSo7FKrolbpwoPl15rP6xQ01AV9e1S6dBXniLMwTZ1GeODvlibM4T5yd88TZJU+cYZ44S/LEmc4TZ9c8cZbmibMsT5zd8sTZPU+cPfLE2TNPnL0YnQPA2dt89jGffc1nP/PZ33zSOgPN5yBTxyIzPVjFEBVDVZSbedQgGRUVKoapqFRRpWK4ihEqRqoYpWK0ijEqxqoYp2K8igkqJpp8alTUqpikYrKKKSqmqpim4iIV01XMUDFTxSwVs1XMUTHXtNs8FfNVLFBxsYqFKi5RsUjFYhVLVCxVsUzFchWXqlihYqWpS8bUZZWK1SrWqFir4jIV61SsV7FBxUYVl6vYpOIKFZtVbFGxVcU2FdtV1KvYoWKnigYVjSp2qditYo+KvSquVLFPxX4VB1QcVNEUa/NDKq5ScVhFs5nX3cxrUXFExVEVx1QcV3FCxdUqrlFxrYrrVJxUcb2KG1TcqOImFTfH8rpFxa0qTqm4TcVpFberuEPFnSruUnFGxVkV51TcreIeFfequM/kVWDyeoWK+2NpD6h40Iw/ZD4fNp+PmM9Xms9Hzedj5vNx8/mE+XxSxe/KsuP6HC5+ra3TaJsPII22/wJIo32hENJovyiCNNpHOkEa7S/FkEb7TmdIG2TGu0DaYBinzyFmvATShprxNKSVm/GukJYx46WQVmHGyyBtmBnvBmmVZrw7pFWZ8R6QNtyM9zSfVG891JnP6hc56DyZj6vV2k593gvqQ33eG9Koz/tAGvV5X0ijuveDNOrz/pBGfT4A0qjPB0Ia9fkgSKM+x22F+nwIpFGfD4U06vNySKM+z0Aa9XkFpFGfD4M06vNKSKO2rII0akvaVnTbLYD5NOA+iL+bURrNx32wEPKkNJqP+yDNx32Q5uM+iPPpk+bjPkjzcX+j+bhvUX/hfkTr9IQ06i/c7igf3Maov3B7orxx26H+wm2HysNth/oLtx0y4LZD2z5uO+TKQBpt+7jtkJW2HV2vYrDVmc/qFzfU4LGWhiA2XQfjVH4x1J/JMgmP522xDAHLUOZ2SUO7DIVyMszl4PdQW+qcAUsFs0XnOYw3z+i0thL8VFcqJw3ze0PdKpnrFkCZlC9NV4JlcMyJ3/WDPfBRWgZ8lQm+Kl5fbZBq3Y91MF0FPkqrAAvzNlUbxix6yLXPDAPLCFZLTTWe47XFMgIsw1kt2f13JG+e0XnkKOY8dR6joU2o/ciehvmjoL1GM7dXAGVSvjSNPrGKVaxiFatYxSpWsXZsK17n4G92tFylBz5KGw4W7msD/I2L8ta/Iz4FZfL+RlFTjdfJ9HsMGaisQljmC6XnXe8yaSWpC6+tw9T5a2rsv3JWf7b/qBzKl6bLwUd1ycTqym2piFlevuXW7uT/nbCmWv8urX/rpu1paKweSb/9UpreJj8O9fXlt1387bMAfMy/99b8o7/34u90heDj3le1b6iFrxx8tB7eV+H+vRaPWW3xVYCP1usEPu7fNPG307b4kn7nLIZP7t/LbH+7Gw4+Wq8z+Ji/XyPfCAsfnivRel3Ax30uon2jLHx4fkLrheAb68A3xsI3Fny0Xgn4xjvwjbPwjQffOBgn30QHvgkWvolgovW6gq/Gga861XZfDfhovVLwTXLgq7XwTQIfrVcGvikOfJMtfFPAR+t1A980B76pFr5p4KP1uoNvugPfRRa+6eCj9XqAb6YD3wwL30zw0Xr4jNJsB75ZFr7Z4KP1eoFvrgPfHAvfXPDRen3BN4/XF90HrbPwzQPLxbyWydoy38JyMVgW8Fqi+6ALefOM7oNewpynzmMRtAm1H9nTMP8SaK9FzO0VQJmUL02jT6wd24rvJZEzTF24r7Wnj9IWOLSEMYsech3rknzYl0t4fdH3wmIL3xKwLGe1TIp+I15qYVkOlmWsluz3wqW8eUbH8BXgp7pSOWmYj32+grluAZRJ+dI0+sQqVrGKVaxiFatYxSpWsYpVrGIVq1jFKlaxilWsYhWrWMUqVrGKVaxiFSu/VVsWx5whLLfYAx+lLXNoCWMWPeR6TiTJh325itcXPVOz0sK3CixrWS210TM1qy0sa8GyhtWSfabmMt48o2dq1oGf6krlpGE+9vk65roFUCblS9PoE6tYxSpWsYpVrGIVq1jFKlaxilWsYhWrWMUq1nyxasvKmDOE5VZ64KO0NQ4tYcyih1y/syf5sC838PqiexLrLXwbwLKJ1xL9/w8bLSybwHI5ryW6J3EFb57RPYnN4Ke6UjlpmI99vpm5bgGUSfnSNPrE2rGt2rI+5gxhufUe+CjtcoeWMGbRQ67jUpIP+3Irry86hm+x8G0FSz2rJfu3TLZZWOrBsp3Vkj2G7+DNMzqG7wQ/1ZXKScN87POdzHULoEzKl6bRJ1axilWsYhWrWMUq1o5t1ZYtMWcIy23xwEdp2x1awphFD7muU5J82JeNvL7omq7BwtcIlj2sluw13S4Lyx6w7Ga1ZK/p9vLmGV3TXQl+qiuVk4b52OdXMtctgDIpX5pGn1jFKlaxilWsYhWrWDu2VVsaYs4QlmvwwEdpux1awphFD7muU5J82Jf7eX3RNd0+C99+sDQ5sBywsDSB5SCvJbqmO8SbZ3RNdxX4qa5UThrmY59fxVy3AMqkfGkaffli1ZZ9MWcIy+3zwEdpBx1awphFD7n2nyQf9mUzry/avw9b+JrBctSBpcXCchQsR3gt0bHmGG+e0bHmOPiprlROGuZjnx9nrlsAZVK+NI2+fLFqy+GYM4TlDnvgo7QjDi1hzKKHXPtPkg/78moHvhMWvqvBdyLBd60D3zUWvmvBR+uF4DvpwHedhe8k+Gi9EvDd4MB3vYXvBvBdD+Pku8mB70YL301govXwb4ze4sB3s4XvFvDReqXgO+XAd6uF7xT4aL0y8J124LvNwncafLQe/o3ROxz4brfw3QE+Wg+Pf3c58N1p4bsLfHcm+M468J2x8J0F35kE390OfOcsfHeD71yC714HvnssfPeC5T5eS3UaLPdBOfc7qPMrUm2v8/1gecBBncnyAJTzkIM6P5hqe52p/DSsh75HHPgetvA9Ar6HE3yPOvC90sL3KPhoPdyPH3fge8zC9zj4HkvwPenA94SF70nwPZHge7UD36ssfK8G36sSfK914HuNhe+14HtNgu/1Dnyvs/C9HnyvS/C90YHvDRa+N4LvDQm+NzvwvcnC92bwvSnB91YHvrdY+N4Kvrck+J5y4Hubhe8p8L0twfcOB763W/jeAb63J/je5cD3Tgvfu8D3zgTfexz43m3hew/43p3ge58D33stfO8D33sTfB9w4Hu/he8D4Ht/gu9DDnwftPB9CHwfTPB9hNcX3Yf4sIXvI2D5GK8letf9nywsHwPLR3kt0T2Rj/PmGd0T+QT4qa5UThrmY59/grluAZRJ+dI0+sTasa3a8uGYM4TlPuyBj9I+6tASxix6yHVcSvJhX36K1xcdwz9p4fsUWD7Dasn+H+r/bGH5DFg+zWrJHsP/hTfP6Bj+WfBTXamcNMzHPv8sc90CKJPypWn0iVWsYhWrWMUqVrGKVaxiFatYxSpWsYpVrGIVa75YteWTMWcIy33SAx+lfdqhJYxZ9JDrd/YkH/bl53l90T2Jz1n4Pg+WL7FasvckvmBh+RJYvshqyd6T+FfePKN7El8GP9WVyknDfOzzLzPXLYAyKV+aRp9YxSpWsYpVrGIVq1jFKlaxilWsYhWrWMUqVrHmi1VbPhdzhrDc5zzwUdoXHVrCmEUPuX5nT/JhX36V1xfdk/iKhe+rYHma1ZL9+xH/ZmF5GixfY7Vk70l8nTfP6J7EN8BPdaVy0jAf+/wbzHULoEzKl6bRJ1axilWsYhWrWMUq1o5t1ZavxJwhLPcVD3yU9jWHljBm0UOu65QkH/blt3h90TXdNy183wLLd1gt2Wu6f7ewfAcs32a1ZK/p/oM3z+ia7rvgp7pSOWmYj33+Xea6BVAm5UvT6BOrWMUqVrGKVaxiFWvHtmrLN2POEJb7pgc+Svu2Q0sYs+gh13VKkg/78vu8vuia7nsWvu+D5Yesluw13TMWlh+C5Qesluw13X/y5hld0/0I/M+YTyonDfOxz3/EXLcAyqR8aRp9YhWrWMUqVrGKVaxi7dhWbflezBnCct/zwEdpP3BoCWMWPeS6TknyYV/+hNcXXdP92ML3E7A8y2uJ/s7Af1lYngXLT3kt0TXdf/PmGV3T/Qz8VFcqJw3zsc9/xly3AMqkfGkafWLt2FZt+XHMGcJyP/bAR2k/dWgJYxY95DouJfmwL5/j9UXH8J9b+J4Dyy95LdEx/H8sLL8Eyy94LdEx/H9584yO4b8CP9WVyknDfOzzXzHXLYAyKV+aRp9YO7ZVW34ec4aw3M898FHaLxxawphFD7mOS0k+7Mtf8/qiY/jzFr5fg+W3Diz/Z2H5LVh+w2uJjuG/480zOob/HvxUVyonDfOxz3/PXLcAyqR8aRp9+WLVludjzhCWe94DH6X9xqEljFn0kGv/SfJhX/7Rge8PFr4/gu8PCb4/O/D9ycL3Z/D9KcH3Vwe+v1j4/gq+vyT4goDfFwfl8lH5aVgQfYUOfAUWvkLwFST4OjnwFVn4OoGvKMHX2YGv2MLXGXzFCb7Qga+LhS8EX5cEX9qBr8TClwZfSYKv1IGvq4WvFHxdE3zdHPjKLHzdwEfr3Qe+Hg583S18PcBH6z0Avl4OfD0tfL3A1zPB18eBr7eFrw/4eif4+jnw9bXw9QNf34T9Y4ADX38L3wDw9U/wDXLgG2jhGwS+gQm+IQ58gy18Q8A3OMFX7sA31MJXDr6hCb4KB76Mha8CfJkEX6UD3zALXyX4hiX4hjvwVVn4hoOvKsE30oFvhIVvJPhGJPhGO/CNsvCNBt+oBN9YB74xFr6x4BuT4BvvwDfOwjcefOMSfBMd+CZY+CaCb0KCr8aBr9rCVwO+6gTfJAe+WgvfJPDVJvimOPBNtvBNAd/kBN80Xl/0+/RUCx+Vry0zeC3R/c6LLCwzwDKdud90njN584x+K58FFaK6zoQ+n5XQ57OY6xZAmZQvTaNPrB3bqi10bCBnCMtNDdrfR2nTHVrCmEUPuY5LST7syzkOjuGzLXxzoK3msVqyf4dqroVlHljqHBzD5zs4hi+AClFd50OfL0jo8wUO9o/5sf2DptEnVrGKVaxiFatYxSpWsYpVrGIVq1jFKlaxilWs+WLVFvqtm5whLEfz2tP3t9+cHVrCmEUPsclWv7Mn+bAvF/L6onsSF1v4FkJbLWa1ZO9JXGJhWQyWRcz9pvNcwptndE9iKVSI6roE+nxpQp8vdbB/LIntHzSNPrGKVaxiFatYxSpWsYpVrGIVq1jFKlaxilWsYs0Xq7bQb93kDGE5mteePkpb5NASxix6iE22+p09yYd9uZzXF92TWGbhWw5ttZLVkv2bO5daWFaCZQVzv+k8V/HmGd2TWA0Vorqugj5fndDnqx3sH6ti+wdNo0+sYhWrWMUqVrGKVawd26otdK1AzhCWo3nt6aO0FQ4tYcyih9hkq+uUJB/25VpeX3RNt8bCtxbaaj2rJXtNd5mFZT1Y1jH3m85zA2+e0TXdRqgQ1XUD9PnGhD7f6GD/2BDbP2gafWIVq1jFKlaxilWsYu3YVm2hawVyhrAczWtPH6Wtc2gJYxY9xCZbXack+bAvN/H6omu6yy18m6CttrBastd0V1hYtoBlM3O/6Ty38uYZXdNtgwpRXbdCn29L6PNtDvaPrbH9g6bRJ1axilWsYhWrWMUq1o5t1Ra6ViBnCMvRvPb0Udpmh5YwZtFDbLLVdUqSD/uyntcXXdNtt/DVQ1s18FqivzOww8LSAJadzP2m82zkzTO6ptsFFaK6NkKf70ro810O9o/G2P5B0+gTa8e2agsdG3bAMZyW2x60v4/Sdjq0hDGLHnIdl5J82Jd7HBzDd1v49kBb7XNwDN9rYdkHlisdHMP3OziGH4AKUV33Q58fSOjzAw72j/2x/YOm0SfWjm3VFjo27IVjOC23O2h/H6Vd6dASxix6yHVcSvJhXzY5OIYftPA1QVsddmA5ZGE5DJarHBzDmx0cw1ugQlTXZujzloQ+b3GwfzTH9g+aRl++WLWFtuFDcKyh5Q4G7e+jtKscWsKYRQ+59p8kH/blUQe+Ixa+o+A7kuA77sB3zMJ3HHzHEnxXO/CdsPBdDb4TCb5rHfiusfBdC75rEnwnHfius/CdBN91Cb4bHPiut/DdAL7rE3w3OfDdaOG7CXw3JvhudXD+cLOF71Y4Ft/i4PzhFG+e1TrP25jbTOdxGhqJ2u8U9B3Nvw3a67SD79FTse9RmkZfW629U+1rdVBubVeVRxeoN+V/X6p1O+jhdjNeBOm4793poE3uMHkGJqiM26FN7nJQLpXTyZRLDiqrEJZ5Osx+lqay2wsNBY7bBoc6GL8Ttl0a+npk6eORZaFHlm4eWbp6ZAk9shR7ZCn0yHIq8MdS6lG7lHhk6eyRpcgjSz+PLAM8svT3yFLnkaW3R5YyjyxpjyxdPLJ08sgStLMlTF34+0kI80/BcgWxdXU7Pld2fv5Zk14A+ZyD67N43mch7zNm/Fxw4brYRmcdtBGWUwfTVFYJGM4F7W/p5JGli0eWtEeWMo8svT2y1Hlk6e+RZYBHln4eWYo8snT2yFLikaXUI8upwB9LoUftUuyRJfTI0tUjSzePLAs9svTxyNLXI0vBS2ShazPK90zM0p7l3s1bbvT83j1QLl2r3g3tTuXfA457mR1BzBFAuVRWISxzjTkh0OdLx0vOuy5O8br0sZvODylvXeZJB2U2XjS1fsfkXbvaUuZ83npm/5ZxqvUQxKbrYJzK15YFvJboOZN5vHlGz5nMZW4zncccaBNqP7KnYf5caK85zO0VQJmUL02jr63W3u1sddX/s3nz/NuzK9SWs2NtivWZyVwfnccsk1cRlDUTypzuoO9mmLwCE1TGLCj3IgflUjn0PAw5qKxCWOZBc5zM9TyMi7bBoQ7GqawXeh6mvS19PLIs9MjS0yNLN48sXT2yhB5Zij2yFHpkmeORpZdHlu4eWUo9spR4ZOnskaXII0s/jywDPLL098hS55Glh0eWMo8saY8sXTyydPLIErSz5YWeWaL5cyCtILZu/JmlqSa9ANaZYsYLE/KeCmnTzPiUhHWxjabG6lL94oaojbCcOpimsvCZpSkeWDp5ZOnikSXtkaXMI0sPjyx1Hln6e2QZ4JGln0eWIo8snT2ylHhkKfXI0t0jSy+PLHM8shR6ZCn2yBJ6ZOnqkaWbR5aeHlkWemTp45Glr0eWgpfIQtfPlO+0mKU9y53MW270fMIkKJd+T5gM7U7lTwJHLbMjiDkCKJfKKoRlVpkLVH1Oe2n6vMvFc2V0bYPPeK11UCY+V/b3ypzPW8/JL/fnynQec8Gf9FwVzcd7A8zPouV8rmquu3Kj+r8cn4ETa9utaSiPnGHqwn2tPX2UtgAszMeCGl0One/Ng3Jm8ZYTHVNx29BDrmMqPpvH/AxkjatnG2eAP/5sYxrm4zF1BnPdAiiT8qVp9LXVOlesL0sr/33BSdH5IZarh7bcK3TRBg6e6Y32cbwuobpSOWmYj/07jbluAZRJ+dI0+sQqVrGKVaxiFatYxSpWsYpVrGIVq1jFKlaxilWsYhWrWMUqVrGKVaxiFSu/lf9Z6dromQssVw+5nrmY6rANdJ5TePOMnrmYDH6qK5WThvnYv8zPhrd6Lp/ypWn0iVWsYhWrWMUqVrGKVaxiFatYxSpWsYpVrGIVa75YdbmTeMudHMbK1UOu36wnOWwDF/9/h86jBvxUVyonDfOxf2uY6xZAmZQvTaNPrB3bqsutZi23JrovheXqIdc+Xu2wDXSeE3nzjLgTwE91pXLSMB/7dwJz3QIok/KlafSJVaxiFatYxSpWsYq1Y1t1ueNZy82e82O5esh1zj/eYRvoPMfx5hmd848FP9WVyknDfOzfscx1C6BMypem0SdWsYpVrGIVq1jFKtaObdXljuEttzaMlauHXOf8Yxy2gc5zNG+e0Tn/KPBTXamcNMzH/h3FXLcAyqR8aRp9+WLV5Y7kLTfaFrFcPeTaFkc6bAOd5wjePKNtcTj4qa5UThrmY/8OZ65bAGVSvjSNvnyxhpBWAGk0H//GaJUZL4K0SjPeCdIugTpR2iIz3hnSFpvxLpC2xIz3hbSlZhz/buoyMz4b0pab8ZmQdqkZnwFpK8z4RZC20oxPg7RVZnwKpK0245MhbY0Zr4W0tWa8BtIuM+MTIW2dGZ8AaevN+DhI22DGx0LaRjM+GtIuN+OjIG2TGZ8LaVfAOH1uNuMlkLbFjKchbasZ7wpp28x4KaRtN+NlkFZvxrtB2o4EH22LIyCNtkXcdmlbrII02hYrIY22xUsgjbbFRZBG2+JiSKM2WgJp1EZLIY3aaBmkURsthzRqo0shjdpoBaRRG62ENPpbfKsgjf4W6WpIo7+ptQbS6G/nrYW03mb8MkjrY8bXQRrtj+shrZ8Z3wBp/c34Rkijv8N5OaQNNOObIG2QGcdtc7AZ3wxpQ8z4Fkgbasa3Qlq5Gd8GaRkzvh3SKsx4PaQNM+O0beptpRiWrTOf1S9uqMGyaMj1vU3lF0NdmCzVabBkoJyhrOXURn/jifqmwJRF29xQKHcIT7k1NKLLHQz5V4CDyiqEZb5hdtRSs/xg1nbIfj8PifUneQaDh5b5tvHoY951Za3XY3TV4j5BQ65tMgN1YOozolTjftwWC7Yn73abPa9l3gaqdZ6DmPPUeQyENolvU2mYPwjaayBze+H+RvnSNPrEKlaxilWsYhWrWMUqVrGKVaxiFatYxSpWsYo1X6zaUhFz4r2sCg98lIb3W7h/28Z7f5S3vnexD+5dlLOWmb23lIE6ZcBAZRXCMq8rO+9qMuMlMJ/6Cu8xYv/x3u/I9h+VQ/nSNJVVAnXB/uO+34H36Sjfl2+5tTv594Haan3/Xz9TkDH5xfc76lO890ppeJ9P9zltd/hcQ3ksrb36A/eZckij8WHg423jGhf30KLHdgZCP2TMOJVTCPNPwzHkjrLzfRM/Xuj5DyfMpyHXfU28b838nFg1PidWbPIdnlAu8zOLrZ5PC0xQGZReCOMP0UMysJweqH3JrLe7qoTlcHxobJ00zK9yXGd8NrAOpqksvZ2cgW3qYfi+5P6+wfpiu/SBdqH55dAu3Pubbhc8v8uAYRBYKmNOPK/CY2CVA98LnVdVgY/ShoCP6oHHk6fA6vIcKP58DfYh0/dEq+dr8PmLCnBQWfg8y1vMdq0fa4mf92Rg3QGQ50vxTFD8uxmfCXoHmB2cMyc+E0SepGeC3gPHiWf/zvnrkFiaaz/lOyTmx/OCIS+R5YXa0tU1GB2z9LOo6KCyCmGZj8W2Ke7nwPHZbRpynWsMh7YZwWxx8J16wXsq8e9+fPejN9TNxbsfI2NtStPoG5lgxfPoQbHl+N/tqa128D5UdC4x1uSlj0e0j1M5hTD/y3Dc+iqcE1OdM5DPMwnzaci1HY+G9uP9/x6y3xv4/0nUQRlYLvP/vVaD5dI5c/z/tyiE8e/DOTP+/xQZ80lmvd2NS1gOx0fG1kmnLnznz1Wdx4OjDqapLL2dPA3b1DNwzsy9n2N9sV0GQLvQfDx3rYgtr7dn2h/wO5l7vwxSrd/TrIPpMeCjtFHQps86+60u68qAK5O68Lc6/A0xAy78DbGQ2VWcOv++CFee+K4KDbmOXcXw2YnZon+PondVmluaDtfvblzTWN8QAKsoRiwAGo7j62H0Og2+Hkav0+DrYbQ+vgpG+XSBefHmYat/L6hcgSm8yCCLTeFdUuff89FtpX/H0+dnerPT7+Xo93D0ezf6PZteYDxjPvV5hr7m0u/N6Pdk9HsxejvW53/6mKDPP/U5of7e19t6JpU9BujfyfR1rD4v0Odh+vxLHy/0Pqm/V/T+qvdTfXzRx0B9nNfHQH0SpA9M+h00/X8G6/fT9Htr+m/e6Xfa9Ltu01PZ9+BmqpiVyr47p9+pm2vadp6K+SoWqLhYxcJU9n0p/X6Ufh9qSSr7vtOyVPZ9Jv3+kn5fSb+fpN9H0u8f6feN9PtF+n0i/f6Qfl9Ivx+k3wfS7/9sSmXf79mcyr6/o9/X2ZbKvo9Tn8q+b7NTRYOKRhW7VOxWsUfFXhVXqtinYr+KAyoOqmhScUjFVSoOq2hW0aLiiIqjKo6pOK7ihIqrVVyj4loV16k4qeJ6FTeouFHFTSpuVnGLiltVnFJxm4rTKm5XcYeKO1Xclcr29VkV51TcreIeFfequE/FK1Tcr+IBFQ+qeEjFwyoeUfFKFY+qeEzF4yqeUPFk6vw+jxv+18zLZ7PM9Nrs/ppp3t/UkqnOHFT/1u/f33SssWFCBuc1Zw4caW7JNLfUH27J7DrcdCBTMwHzfaDETb5fN++o0PdZfUtL44FDLZmWJrXi/pa9h/afyBzb27In03S08fAuVQCu/OayF7Hy283Kgy9cub6h4YXX+6hZj/biJQcbGo9nmo60ZJp2ZXY0HTnY0Pz/jfGPJsWVAgA=", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "set_is_valid_storage", - "functionType": "open", - "isInternal": true, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "value", - "type": { - "kind": "boolean" - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", - "fields": [ - { - "name": "call_context", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", - "fields": [ - { - "name": "msg_sender", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "storage_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "portal_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::EthAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "is_delegate_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_contract_deployment", - "type": { - "kind": "boolean" - } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "return_values", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "contract_storage_update_requests", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "old_value", - "type": { - "kind": "field" - } - }, - { - "name": "new_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "contract_storage_reads", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "current_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "public_call_stack_hashes", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_commitments", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_nullifiers", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_l2_to_l1_msgs", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_logs_hash", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_log_preimages_length", - "type": { - "kind": "field" - } - }, - { - "name": "block_header", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", - "fields": [ - { - "name": "note_hash_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "nullifier_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "contract_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "l1_to_l2_messages_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "archive_root", - "type": { - "kind": "field" - } - }, - { - "name": "public_data_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "global_variables_hash", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "prover_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - } - ] - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - } - ], - "events": [] -} diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json deleted file mode 100644 index 116928067b9..00000000000 --- a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json +++ /dev/null @@ -1,801 +0,0 @@ -{ - "name": "SchnorrAccount", - "functions": [ - { - "name": "compute_note_hash_and_nullifier", - "functionType": "unconstrained", - "isInternal": false, - "parameters": [ - { - "name": "contract_address", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "nonce", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "storage_slot", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "serialized_note", - "type": { - "kind": "array", - "length": 3, - "type": { - "kind": "field" - } - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "constructor", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "signing_pub_key_x", - "type": { - "kind": "field" - }, - "visibility": "public" - }, - { - "name": "signing_pub_key_y", - "type": { - "kind": "field" - }, - "visibility": "public" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "entrypoint", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "payload", - "type": { - "kind": "struct", - "path": "authwit::entrypoint::EntrypointPayload", - "fields": [ - { - "name": "function_calls", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "struct", - "path": "authwit::entrypoint::FunctionCall", - "fields": [ - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "target_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "is_public", - "type": { - "kind": "boolean" - } - } - ] - } - } - }, - { - "name": "nonce", - "type": { - "kind": "field" - } - } - ] - }, - "visibility": "public" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "is_valid", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "is_valid_public", - "functionType": "open", - "isInternal": false, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", - "fields": [ - { - "name": "call_context", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", - "fields": [ - { - "name": "msg_sender", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "storage_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "portal_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::EthAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "is_delegate_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_contract_deployment", - "type": { - "kind": "boolean" - } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "return_values", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "contract_storage_update_requests", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "old_value", - "type": { - "kind": "field" - } - }, - { - "name": "new_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "contract_storage_reads", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "current_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "public_call_stack_hashes", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_commitments", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_nullifiers", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_l2_to_l1_msgs", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_logs_hash", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_log_preimages_length", - "type": { - "kind": "field" - } - }, - { - "name": "block_header", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", - "fields": [ - { - "name": "note_hash_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "nullifier_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "contract_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "l1_to_l2_messages_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "archive_root", - "type": { - "kind": "field" - } - }, - { - "name": "public_data_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "global_variables_hash", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "prover_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - } - ] - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "set_is_valid_storage", - "functionType": "open", - "isInternal": true, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "value", - "type": { - "kind": "boolean" - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", - "fields": [ - { - "name": "call_context", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", - "fields": [ - { - "name": "msg_sender", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "storage_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "portal_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::EthAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "is_delegate_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_contract_deployment", - "type": { - "kind": "boolean" - } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "return_values", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "contract_storage_update_requests", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "old_value", - "type": { - "kind": "field" - } - }, - { - "name": "new_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "contract_storage_reads", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "current_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "public_call_stack_hashes", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_commitments", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_nullifiers", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_l2_to_l1_msgs", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_logs_hash", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_log_preimages_length", - "type": { - "kind": "field" - } - }, - { - "name": "block_header", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", - "fields": [ - { - "name": "note_hash_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "nullifier_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "contract_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "l1_to_l2_messages_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "archive_root", - "type": { - "kind": "field" - } - }, - { - "name": "public_data_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "global_variables_hash", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "prover_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - } - ] - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - } - ], - "events": [] -} diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json deleted file mode 100644 index 63c310b171a..00000000000 --- a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json +++ /dev/null @@ -1,736 +0,0 @@ -{ - "name": "SchnorrSingleKeyAccount", - "functions": [ - { - "name": "constructor", - "functionType": "secret", - "isInternal": false, - "parameters": [], - "returnTypes": [], - "bytecode": "H4sIAAAAAAAA/+XdZ2+TZxSHcSfEdvdu2BD2bu3Yju1OSvemk+6Ci9Pd0kl3Kd17TzpS9l6fkHMJI/ECXnFH4tZl6S9LefHIv9h+/Ixzn3O4UCiMFY4++iL9kYHI0HF/47G891w5tUe1GNsonmC7tcpIvd5tDnerteqaynC702pU6o3OSKvaqjZajbXDrVqt26q3mu1Ou1lpV+u1bnW00a6N9jZcTPcaK+PhLsU2SuPgLp3m7nJsozwO7nJid+Ekn/dTfZ0Tx+l19id+n/oSmidlYu5PaJ6ciXlCQvOUTMwDCc1TMzEXE5qnZWIuJTRPz8RcTmiekYl5YkLzTKF5SGieJTTPFprnCM1zheZ5QvN8oXmB0LxQaF4kNC8WmpcIzUuF5mVC82VC8+VCc0VorgrNw0JzTWiuC80NoXlEaG4KzS2huS00XyE0Xyk0XyU0Xy00XyM0Xys0LxearxOaVwjN1wvNNwjNNwrNNwnNNwvNtwjNtwrNtwnNtwvNdwjNdwrNdwnNdwvNK4Xme4Tme4Xm+4Tm+4XmB4TmB4XmVULzQ0Lzw0LzI0Lzo0LzY0Lz40LzE0Lzk0LzaqF5jdDcEZqfEprXCs1doXlUaH5aaH5GaH5WaH5OaH5eaH5BaH5RaH5JaH5ZaF4nNL8iNL8qNL8mNL8uNL8hNL8pNK8Xmt8Smt8Wmt8Rmt8Vmt8Tmt8Xmj8Qmj8UmjcIzR8JzRuF5o+F5k+E5k+F5s+E5s+F5i+E5i+F5q+E5q+F5m+E5m+F5u+E5u+F5h+E5h+F5p+E5p+F5l+E5l+F5t+E5t+F5j+E5j+F5r+E5k1C899C8z9C879C839C85jQ/L/QvFlo3pKJ+YyE5q2ZmM9MaN6WifmshObtmZjPTmjekYn5nITmnZmYz01o3pWJ+byE5t2ZmM9PaN6TifmChOa9mZgvTGjel4n5ooTm/ZmYL05oPpCJ+ZKE5oOZmC9NaD6UiXkwoflwQvNgbzt9PfOEyECkGClFyhHOCTlH4pyBY2iOKTnG4piD32B+k9hHs8/iO8xnmvd48Lj/56be86TI5MiUyNTItMj0yIzIzMhQZFZkdmROZG5kXmR+ZEFkYWRRZHFkSWRpZFmEGffMfOdNZCY4M7KZGc0MZWYKM2O3GWEGKzNJmdHJzEpmODLTkBl/x2beMRNtRYSZWcyQYqYSM4aYucMMGmayMKOEmR3MsGCmAzMO6Pm/MkJPeHqk0zOcHtr0lKbH8qoIPXjpSUuPVnqW0sOTnpb0eKTn4eoIPfE6EXqm0UOMnlr0mKLnEj2I6MlDjxp6ttDDhJ4e9Lig58O6CD0BWCPPmnHWULOmmDW26yOswWRNImv0WLPGGi7WNLHGhzUvGyKsidgYoWaeGnJqqqkxpuaWGlRqMqlRpGaPGjZquqhxouaHGhhqQqiRoGaAe+jcU+YeK/ccuQfHPSnu0fCZ4Bo+17S5xss1z7EI18S4RsQ1E64hcE7NOSbnXJyDcEzOMSrHbBzD8JvObxz7fPaB7BP4jhx7HAEN+DJJTJoAAA==", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "entrypoint", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "payload", - "type": { - "kind": "struct", - "path": "authwit::entrypoint::EntrypointPayload", - "fields": [ - { - "name": "function_calls", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "struct", - "path": "authwit::entrypoint::FunctionCall", - "fields": [ - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "target_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "is_public", - "type": { - "kind": "boolean" - } - } - ] - } - } - }, - { - "name": "nonce", - "type": { - "kind": "field" - } - } - ] - }, - "visibility": "public" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "is_valid", - "functionType": "secret", - "isInternal": false, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "returnTypes": [], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "is_valid_public", - "functionType": "open", - "isInternal": false, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", - "fields": [ - { - "name": "call_context", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", - "fields": [ - { - "name": "msg_sender", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "storage_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "portal_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::EthAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "is_delegate_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_contract_deployment", - "type": { - "kind": "boolean" - } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "return_values", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "contract_storage_update_requests", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "old_value", - "type": { - "kind": "field" - } - }, - { - "name": "new_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "contract_storage_reads", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "current_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "public_call_stack_hashes", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_commitments", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_nullifiers", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_l2_to_l1_msgs", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_logs_hash", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_log_preimages_length", - "type": { - "kind": "field" - } - }, - { - "name": "block_header", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", - "fields": [ - { - "name": "note_hash_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "nullifier_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "contract_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "l1_to_l2_messages_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "archive_root", - "type": { - "kind": "field" - } - }, - { - "name": "public_data_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "global_variables_hash", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "prover_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - } - ] - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - }, - { - "name": "set_is_valid_storage", - "functionType": "open", - "isInternal": true, - "parameters": [ - { - "name": "message_hash", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "value", - "type": { - "kind": "boolean" - }, - "visibility": "private" - } - ], - "returnTypes": [ - { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", - "fields": [ - { - "name": "call_context", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", - "fields": [ - { - "name": "msg_sender", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "storage_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "portal_contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::EthAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "is_delegate_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "is_contract_deployment", - "type": { - "kind": "boolean" - } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "return_values", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "contract_storage_update_requests", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "old_value", - "type": { - "kind": "field" - } - }, - { - "name": "new_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "contract_storage_reads", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", - "fields": [ - { - "name": "storage_slot", - "type": { - "kind": "field" - } - }, - { - "name": "current_value", - "type": { - "kind": "field" - } - } - ] - } - } - }, - { - "name": "public_call_stack_hashes", - "type": { - "kind": "array", - "length": 4, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_commitments", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_nullifiers", - "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "field" - } - } - }, - { - "name": "new_l2_to_l1_msgs", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_logs_hash", - "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "field" - } - } - }, - { - "name": "unencrypted_log_preimages_length", - "type": { - "kind": "field" - } - }, - { - "name": "block_header", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", - "fields": [ - { - "name": "note_hash_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "nullifier_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "contract_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "l1_to_l2_messages_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "archive_root", - "type": { - "kind": "field" - } - }, - { - "name": "public_data_tree_root", - "type": { - "kind": "field" - } - }, - { - "name": "global_variables_hash", - "type": { - "kind": "field" - } - } - ] - } - }, - { - "name": "prover_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] - } - } - ] - } - ], - "bytecode": "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", - "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" - } - ], - "events": [] -} diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 1ae727dfe1f..38d1182397a 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -55,14 +55,14 @@ export const MAX_NOTE_FIELDS_LENGTH = 20; export const GET_NOTE_ORACLE_RETURN_LENGTH = 23; export const MAX_NOTES_PER_PAGE = 10; export const VIEW_NOTE_ORACLE_RETURN_LENGTH = 212; -export const CALL_CONTEXT_LENGTH = 7; +export const CALL_CONTEXT_LENGTH = 8; export const BLOCK_HEADER_LENGTH = 7; export const FUNCTION_DATA_LENGTH = 4; export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 155; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 235; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; -export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 142; +export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr index c6aad19b3df..241d2b08e31 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr @@ -20,7 +20,7 @@ struct CallContext { is_static_call : bool, is_contract_deployment : bool, - start_side_effect_counter : Field, // maybe an int? + start_side_effect_counter : Field, } // docs:end:call-context @@ -63,6 +63,6 @@ impl CallContext { & (call_context.is_delegate_call == self.is_delegate_call) & (call_context.is_static_call == self.is_static_call) & (call_context.is_contract_deployment == self.is_contract_deployment) - & (call_context.start_side_effect_counter== self.start_side_effect_counter) + & (call_context.start_side_effect_counter == self.start_side_effect_counter) } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index 14662f47a91..17b3778c0b4 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -66,9 +66,7 @@ impl PrivateCircuitPublicInputs { fields.push(self.args_hash); fields.push_array(self.return_values); - // don't think there's map/flatmap in noir? for i in 0..MAX_READ_REQUESTS_PER_CALL{ - // could also just push the hash, but probably not worth extra constraints? fields.push_array(self.read_requests[i].to_field_array()); } for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ @@ -100,10 +98,16 @@ impl PrivateCircuitPublicInputs { fields.push_array(self.call_context.serialize()); fields.push(self.args_hash); fields.push_array(self.return_values); - fields.push_array(self.read_requests); - fields.push_array(self.pending_read_requests); - fields.push_array(self.new_commitments); - fields.push_array(self.new_nullifiers); + + for i in 0..MAX_READ_REQUESTS_PER_CALL{ + fields.push_array(self.read_requests[i].to_field_array()); + } + for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ + fields.push_array(self.new_commitments[i].to_field_array()); + } + for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ + fields.push_array(self.new_nullifiers[i].to_field_array()); + } fields.push_array(self.private_call_stack_hashes); fields.push_array(self.public_call_stack_hashes); fields.push_array(self.new_l2_to_l1_msgs); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index adab79e4827..9222ccf2bc0 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -95,8 +95,13 @@ impl PublicCircuitPublicInputs{ fields.push_array(self.contract_storage_reads[i].serialize()); } fields.push_array(self.public_call_stack_hashes); - fields.push_array(self.new_commitments); - fields.push_array(self.new_nullifiers); + + for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ + fields.push_array(self.new_commitments[i].to_field_array()); + } + for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ + fields.push_array(self.new_nullifiers[i].to_field_array()); + } fields.push_array(self.new_l2_to_l1_msgs); fields.push_array(self.unencrypted_logs_hash); fields.push(self.unencrypted_log_preimages_length); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index 94b4fe3c907..664e551ce56 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -98,18 +98,18 @@ global GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23; global MAX_NOTES_PER_PAGE: Field = 10; // VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2; global VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212; -global CALL_CONTEXT_LENGTH: Field = 7; +global CALL_CONTEXT_LENGTH: Field = 8; global BLOCK_HEADER_LENGTH: Field = 7; global FUNCTION_DATA_LENGTH: Field = 4; global CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6; // Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. // In other words, if the structure/size of the public inputs of a function call changes then we // should change this constant as well as the offsets in private_call_stack_item.nr -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 155; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 235; global CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3; global CONTRACT_STORAGE_READ_LENGTH: Field = 2; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. -global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 142; +global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 161; From 1c3a60c97f98838d34985278588ee1ed6e895150 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 01:41:52 +0000 Subject: [PATCH 34/71] add deserialize and rename is_zero to is_empty --- yarn-project/aztec-nr/aztec/src/context.nr | 8 +-- .../crates/private-kernel-lib/src/common.nr | 16 ++--- .../src/private_kernel_init.nr | 14 ++--- .../src/private_kernel_inner.nr | 14 ++--- .../src/private_kernel_ordering.nr | 24 ++++---- .../crates/public-kernel-lib/src/common.nr | 8 +-- .../src/public_kernel_public_previous.nr | 4 +- .../src/crates/types/src/abis/side_effect.nr | 60 +++++++++++-------- 8 files changed, 79 insertions(+), 69 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 9b022236fca..6e664a86257 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -181,7 +181,7 @@ impl PrivateContext { pub fn push_read_request(&mut self, read_request: Field) { let side_effect = SideEffect { value: read_request, - counter: self.side_effect_counter + counter: self.side_effect_counter, }; self.read_requests.push(side_effect); self.side_effect_counter = self.side_effect_counter + 1; @@ -190,7 +190,7 @@ impl PrivateContext { pub fn push_new_note_hash(&mut self, note_hash: Field) { let side_effect = SideEffect { value: note_hash, - counter: self.side_effect_counter + counter: self.side_effect_counter, }; self.new_commitments.push(side_effect); self.side_effect_counter = self.side_effect_counter + 1; @@ -207,7 +207,7 @@ impl PrivateContext { let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: non_zero_nullified, - counter: self.side_effect_counter + counter: self.side_effect_counter, }; self.new_nullifiers.push(side_effect); self.side_effect_counter = self.side_effect_counter + 1; @@ -280,7 +280,7 @@ impl PrivateContext { let fields = call_private_function_internal( contract_address, function_selector, - args_hash + args_hash, ); let item = PrivateCallStackItem { contract_address: AztecAddress::from_field(fields[0]), diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 423803d9466..509dde3d950 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -54,9 +54,9 @@ pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { // to push_array_to_array() routines which rely on the passed arrays to be well-formed. validate_array(app_public_inputs.return_values); - validate_struct_array(app_public_inputs.read_requests, |r: SideEffect| r.is_zero()); - validate_struct_array(app_public_inputs.new_commitments, |c: SideEffect| c.is_zero()); - validate_struct_array(app_public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()); + validate_struct_array(app_public_inputs.read_requests, |r: SideEffect| r.is_empty()); + validate_struct_array(app_public_inputs.new_commitments, |c: SideEffect| c.is_empty()); + validate_struct_array(app_public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_empty()); validate_array(app_public_inputs.nullified_commitments); validate_array(app_public_inputs.private_call_stack_hashes); validate_array(app_public_inputs.public_call_stack_hashes); @@ -109,10 +109,10 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, public_inputs // functions within this circuit: let start = previous_kernel.public_inputs.end; - public_inputs.end.read_requests = struct_array_to_bounded_vec(start.read_requests, |c: SideEffect| c.is_zero(), SideEffect::zero()); + public_inputs.end.read_requests = struct_array_to_bounded_vec(start.read_requests, |c: SideEffect| c.is_empty(), SideEffect::zero()); - public_inputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_zero(), SideEffect::zero()); - public_inputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_zero(), SideEffectLinkedToNoteHash::zero()); + public_inputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::zero()); + public_inputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::zero()); public_inputs.end.nullified_commitments = array_to_bounded_vec(start.nullified_commitments); public_inputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -134,8 +134,8 @@ fn perform_static_call_checks(private_call: PrivateCallData) { let is_static_call = public_inputs.call_context.is_static_call; if is_static_call { // No state changes are allowed for static calls: - assert(is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.is_zero()), "new_commitments must be empty for static calls"); - assert(is_empty_struct_array(public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_zero()), "new_nullifiers must be empty for static calls"); + assert(is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.is_empty()), "new_commitments must be empty for static calls"); + assert(is_empty_struct_array(public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_empty()), "new_nullifiers must be empty for static calls"); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index d264b1cc510..6abfbfdbd0a 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -538,7 +538,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -554,7 +554,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -570,7 +570,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -586,7 +586,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -602,7 +602,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 1); } #[test] @@ -619,7 +619,7 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 1); } #[test] @@ -635,6 +635,6 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), MAX_READ_REQUESTS_PER_CALL); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), MAX_READ_REQUESTS_PER_CALL); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index 0503937dade..ab137fd565b 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -659,7 +659,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -671,7 +671,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -683,7 +683,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -695,7 +695,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 0); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 0); } #[test] @@ -707,7 +707,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 1); } #[test] @@ -721,7 +721,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), 1); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), 1); } #[test] @@ -733,7 +733,7 @@ mod tests { let public_inputs = builder.execute(); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_zero()), MAX_READ_REQUESTS_PER_CALL); + assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), MAX_READ_REQUESTS_PER_CALL); } #[test] diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index b93bd7f1715..2e855ec5221 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -259,7 +259,7 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()) == 1); + assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()) == 1); assert(public_inputs.end.new_commitments[0].eq(unique_siloed_commitments[0])); } @@ -277,7 +277,7 @@ mod tests { let public_inputs = builder.execute(); assert_eq( - struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()), + struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()), MAX_NEW_COMMITMENTS_PER_TX); for i in 0..MAX_NEW_COMMITMENTS_PER_TX { assert(public_inputs.end.new_commitments[i].eq(unique_siloed_commitments[i])); @@ -311,11 +311,11 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero())); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_empty())); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); + assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_empty())); } #[test] @@ -333,13 +333,13 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_commitments, [unique_siloed_commitments[0]], |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_zero() )); + assert(struct_array_eq(public_inputs.end.new_commitments, [unique_siloed_commitments[0]], |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_empty() )); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), - |a: SideEffectLinkedToNoteHash| a.is_zero())); + |a: SideEffectLinkedToNoteHash| a.is_empty())); } #[test] @@ -356,8 +356,8 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_zero())); - assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); + assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_empty())); + assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_empty())); } #[test] @@ -368,8 +368,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert_eq(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()), 2); - assert_eq(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_zero()), 3); + assert_eq(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()), 2); + assert_eq(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_empty()), 3); } // same as previous test, but this time there are 0 commitments! @@ -381,8 +381,8 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_zero()) == 0); - assert(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_zero()) == 3); + assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()) == 0); + assert(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_empty()) == 3); } #[test(should_fail_with="New nullifier is transient but hint is invalid")] diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 01518cdf3aa..cc2b9926bf1 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -62,8 +62,8 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, circuit_outpu // functions within this circuit: let start = previous_kernel.public_inputs.end; - circuit_outputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_zero(), SideEffect::zero()); - circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_zero(), SideEffectLinkedToNoteHash::zero()); + circuit_outputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::zero()); + circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::zero()); circuit_outputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); circuit_outputs.end.public_call_stack = struct_array_to_bounded_vec(start.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -85,10 +85,10 @@ fn perform_static_call_checks(public_call: PublicCallData){ let public_inputs = public_call.call_stack_item.public_inputs; if public_inputs.call_context.is_static_call { // No state changes are allowed for static calls: - let new_commitments_length = struct_array_length(public_inputs.new_commitments, |r: SideEffect| r.is_zero()); + let new_commitments_length = struct_array_length(public_inputs.new_commitments, |r: SideEffect| r.is_empty()); assert(new_commitments_length == 0, "new_commitments must be empty for static calls"); - let new_nullifiers_length = struct_array_length(public_inputs.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_zero()); + let new_nullifiers_length = struct_array_length(public_inputs.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_empty()); assert(new_nullifiers_length == 0, "new_nullifiers must be empty for static calls"); let update_requests_length = struct_array_length(public_inputs.contract_storage_update_requests, |r: StorageUpdateRequest| r.is_empty()); diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr index 3430d88ec8d..7d9119c928a 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr @@ -195,7 +195,7 @@ mod tests { let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_commitments, new_commitments,|a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_zero())); + assert(struct_array_eq(public_inputs.end.new_commitments, new_commitments,|a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_empty())); } #[test] @@ -256,7 +256,7 @@ mod tests { let new_nullifiers = [previous[0], previous[1], previous[2], current[0], current[1]]; let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_nullifiers, new_nullifiers,|a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_zero())); + assert(struct_array_eq(public_inputs.end.new_nullifiers, new_nullifiers,|a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_empty())); } #[test] diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index 83ccf7d3e99..a0bc93e8c8c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -7,18 +7,26 @@ struct SideEffect{ } impl SideEffect { + fn serialize(self) -> [Field; 2] { + [self.value, self.counter] + } + + fn deserialise(values: [Field; 2]) -> Self { + Self { + value: values[0], + counter: values[1], + } + } pub fn hash(self) -> Field { - dep::std::hash::pedersen_hash_with_separator([ - self.value, - self.counter, - ], GENERATOR_INDEX__SIDE_EFFECT) + dep::std::hash::pedersen_hash_with_separator( + self.serialize() , GENERATOR_INDEX__SIDE_EFFECT) } - pub fn assert_is_zero(self){ - assert(self.is_zero()); + pub fn assert_is_empty(self){ + assert(self.is_empty()); } - pub fn is_zero(self) -> bool { + pub fn is_empty(self) -> bool { (self.value == 0) & (self.counter == 0) } @@ -28,16 +36,12 @@ impl SideEffect { & (self.counter == side_effect.counter) } - pub fn zero() -> SideEffect { + pub fn empty() -> SideEffect { SideEffect { value: 0, counter: 0, } } - - pub fn to_field_array(self) -> [Field; 2] { - [self.value, self.counter] - } } struct SideEffectLinkedToNoteHash{ @@ -47,19 +51,29 @@ struct SideEffectLinkedToNoteHash{ } impl SideEffectLinkedToNoteHash{ + pub fn serialize(self) -> [Field; 3] { + [self.value, self.note_hash, self.counter] + } + + pub fn deserialise(values: [Field; 3]) -> Self { + Self { + value: values[0], + note_hash: values[1], + counter: values[2], + } + } + pub fn hash(self) -> Field { - dep::std::hash::pedersen_hash_with_separator([ - self.value, - self.note_hash, - self.counter, - ], GENERATOR_INDEX__SIDE_EFFECT) + dep::std::hash::pedersen_hash_with_separator( + self.serialize(), + GENERATOR_INDEX__SIDE_EFFECT) } - pub fn assert_is_zero(self){ - assert(self.is_zero()); + pub fn assert_is_empty(self){ + assert(self.is_empty()); } - pub fn is_zero(self) -> bool { + pub fn is_empty(self) -> bool { (self.value == 0) & (self.note_hash == 0) & (self.counter == 0) @@ -71,17 +85,13 @@ impl SideEffectLinkedToNoteHash{ & (self.counter == side_effect.counter) } - pub fn zero() -> SideEffectLinkedToNoteHash { + pub fn empty() -> SideEffectLinkedToNoteHash { SideEffectLinkedToNoteHash { value: 0, note_hash: 0, counter: 0, } } - - pub fn to_field_array(self) -> [Field; 3] { - [self.value, self.note_hash, self.counter] - } } // for nested calls - keep track of their side effect start/end, and verify From 980624fad271a8a7f5cf50594577204e3e4e6b90 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 01:50:15 +0000 Subject: [PATCH 35/71] rebuild protocol circuits --- yarn-project/aztec-nr/aztec/src/context.nr | 14 +++++++------- .../src/crates/private-kernel-lib/src/common.nr | 12 ++++++------ .../private-kernel-lib/src/private_kernel_inner.nr | 4 ++-- .../src/private_kernel_ordering.nr | 12 ++++++------ .../src/crates/public-kernel-lib/src/common.nr | 8 ++++---- .../src/abis/private_circuit_public_inputs.nr | 12 ++++++------ .../types/src/abis/public_circuit_public_inputs.nr | 4 ++-- .../src/crates/types/src/hash.nr | 2 +- .../types/src/tests/fixtures/read_requests.nr | 2 +- .../src/types/private_kernel_ordering_types.ts | 1 - 10 files changed, 35 insertions(+), 36 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 6e664a86257..e6ff411dd2d 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -102,10 +102,10 @@ impl PrivateContext { args_hash: args_hash, return_values: BoundedVec::new(0), - read_requests: BoundedVec::new(SideEffect::zero()), + read_requests: BoundedVec::new(SideEffect::empty()), - new_commitments: BoundedVec::new(SideEffect::zero()), - new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::zero()), + new_commitments: BoundedVec::new(SideEffect::empty()), + new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()), nullified_commitments: BoundedVec::new(0), block_header: inputs.block_header, @@ -416,8 +416,8 @@ impl PrivateContext { contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL], contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL], public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], - new_commitments: [SideEffect::zero(); MAX_NEW_COMMITMENTS_PER_CALL], - new_nullifiers: [SideEffectLinkedToNoteHash::zero(); MAX_NEW_NULLIFIERS_PER_CALL], + new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL], + new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL], new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256], unencrypted_log_preimages_length: 0, @@ -484,8 +484,8 @@ impl PublicContext { contract_storage_reads: BoundedVec::new(empty_storage_read), public_call_stack_hashes: BoundedVec::new(0), - new_commitments: BoundedVec::new(SideEffect::zero()), - new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::zero()), + new_commitments: BoundedVec::new(SideEffect::empty()), + new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()), new_l2_to_l1_msgs: BoundedVec::new(0), diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 509dde3d950..5348bb9e487 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -109,10 +109,10 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, public_inputs // functions within this circuit: let start = previous_kernel.public_inputs.end; - public_inputs.end.read_requests = struct_array_to_bounded_vec(start.read_requests, |c: SideEffect| c.is_empty(), SideEffect::zero()); + public_inputs.end.read_requests = struct_array_to_bounded_vec(start.read_requests, |c: SideEffect| c.is_empty(), SideEffect::empty()); - public_inputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::zero()); - public_inputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::zero()); + public_inputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::empty()); + public_inputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::empty()); public_inputs.end.nullified_commitments = array_to_bounded_vec(start.nullified_commitments); public_inputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -180,7 +180,7 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) - let mut siloed_read_requests: BoundedVec = BoundedVec::new(SideEffect::zero()); + let mut siloed_read_requests: BoundedVec = BoundedVec::new(SideEffect::empty()); for i in 0..MAX_READ_REQUESTS_PER_CALL { let read_request = read_requests[i].value; let witness = read_request_membership_witnesses[i]; @@ -196,7 +196,7 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // Enhance commitments and nullifiers with domain separation whereby domain is the contract. // // nullifiers - let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); + let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { @@ -210,7 +210,7 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern public_inputs.end.new_nullifiers.push_vec(siloed_new_nullifiers); // commitments - let mut siloed_new_commitments: BoundedVec = BoundedVec::new(SideEffect::zero()); + let mut siloed_new_commitments: BoundedVec = BoundedVec::new(SideEffect::empty()); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL { let new_commitment = new_commitments[i].value; if new_commitment != 0 { diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index ab137fd565b..fe6cc2cee3b 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -553,7 +553,7 @@ mod tests { }); // Mock the previous new commitments to be full, therefore no more commitments can be added. - let mut full_new_commitments = [SideEffect::zero(); MAX_NEW_COMMITMENTS_PER_TX]; + let mut full_new_commitments = [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_TX]; for i in 0..MAX_NEW_COMMITMENTS_PER_TX { full_new_commitments[i] = SideEffect { value: i + 1, @@ -797,7 +797,7 @@ mod tests { fn zero_0th_nullifier_fails() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); + builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 2e855ec5221..3978b7393c0 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -60,7 +60,7 @@ impl PrivateKernelInputsOrdering { } // Empty out read requests after matching them to commitments - public_inputs.end.read_requests = BoundedVec::new(SideEffect::zero()); + public_inputs.end.read_requests = BoundedVec::new(SideEffect::empty()); } fn match_nullifiers_to_commitments_and_squash(self, public_inputs: &mut KernelCircuitPublicInputsBuilder) { @@ -86,15 +86,15 @@ impl PrivateKernelInputsOrdering { // match found! // squash both the nullifier and the commitment // (set to 0 here and then rearrange array after loop) - new_commitments[hint_pos] = SideEffect::zero(); - new_nullifiers[n_idx as u64] = SideEffectLinkedToNoteHash::zero(); + new_commitments[hint_pos] = SideEffect::empty(); + new_nullifiers[n_idx as u64] = SideEffectLinkedToNoteHash::empty(); } // non-transient (persistable) nullifiers are just kept in new_nullifiers array and forwarded // to public inputs (used later by base rollup circuit) } // Move all zero-ed (removed) entries of these arrays to the end and preserve ordering of other entries - let mut new_commitments_vec = BoundedVec::new(SideEffect::zero()); + let mut new_commitments_vec = BoundedVec::new(SideEffect::empty()); for c_idx in 0..MAX_NEW_COMMITMENTS_PER_TX { if new_commitments[c_idx].value != 0 { @@ -104,7 +104,7 @@ impl PrivateKernelInputsOrdering { public_inputs.end.new_commitments = new_commitments_vec; - let mut new_nullifiers_vec = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); + let mut new_nullifiers_vec = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); for n_idx in 0..MAX_NEW_NULLIFIERS_PER_TX { if new_nullifiers[n_idx].value != 0 { @@ -428,7 +428,7 @@ mod tests { fn zero_0th_nullifier_fails() { let mut builder = PrivateKernelOrderingInputsBuilder::new(); - builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); + builder.previous_kernel.end.new_nullifiers = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); builder.failed(); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index cc2b9926bf1..a65197eda96 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -62,8 +62,8 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, circuit_outpu // functions within this circuit: let start = previous_kernel.public_inputs.end; - circuit_outputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::zero()); - circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::zero()); + circuit_outputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::empty()); + circuit_outputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::empty()); circuit_outputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); circuit_outputs.end.public_call_stack = struct_array_to_bounded_vec(start.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -185,7 +185,7 @@ fn propagate_new_commitments(public_call: PublicCallData, circuit_outputs : &mut let new_commitments = public_call.call_stack_item.public_inputs.new_commitments; let storage_contract_address = public_call_public_inputs.call_context.storage_contract_address; - let mut siloed_new_commitments : BoundedVec = BoundedVec::new(SideEffect::zero()); + let mut siloed_new_commitments : BoundedVec = BoundedVec::new(SideEffect::empty()); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL { let new_commitment = new_commitments[i].value; if new_commitment != 0 { @@ -205,7 +205,7 @@ fn propagate_new_nullifiers(public_call: PublicCallData, circuit_outputs : &mut let storage_contract_address = public_call.call_stack_item.public_inputs.call_context.storage_contract_address; // Enhance commitments and nullifiers with domain separation whereby domain is the contract. - let mut siloed_new_nullifiers : BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::zero()); + let mut siloed_new_nullifiers : BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { let new_nullifier = new_nullifiers[i].value; if new_nullifier != 0 { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index 17b3778c0b4..a059d6fe2a1 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -67,13 +67,13 @@ impl PrivateCircuitPublicInputs { fields.push_array(self.return_values); for i in 0..MAX_READ_REQUESTS_PER_CALL{ - fields.push_array(self.read_requests[i].to_field_array()); + fields.push_array(self.read_requests[i].serialize()); } for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ - fields.push_array(self.new_commitments[i].to_field_array()); + fields.push_array(self.new_commitments[i].serialize()); } for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ - fields.push_array(self.new_nullifiers[i].to_field_array()); + fields.push_array(self.new_nullifiers[i].serialize()); } fields.push_array(self.nullified_commitments); fields.push_array(self.private_call_stack_hashes); @@ -100,13 +100,13 @@ impl PrivateCircuitPublicInputs { fields.push_array(self.return_values); for i in 0..MAX_READ_REQUESTS_PER_CALL{ - fields.push_array(self.read_requests[i].to_field_array()); + fields.push_array(self.read_requests[i].serialize()); } for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ - fields.push_array(self.new_commitments[i].to_field_array()); + fields.push_array(self.new_commitments[i].serialize()); } for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ - fields.push_array(self.new_nullifiers[i].to_field_array()); + fields.push_array(self.new_nullifiers[i].serialize()); } fields.push_array(self.private_call_stack_hashes); fields.push_array(self.public_call_stack_hashes); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index 9222ccf2bc0..0e50dd43d68 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -97,10 +97,10 @@ impl PublicCircuitPublicInputs{ fields.push_array(self.public_call_stack_hashes); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ - fields.push_array(self.new_commitments[i].to_field_array()); + fields.push_array(self.new_commitments[i].serialize()); } for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ - fields.push_array(self.new_nullifiers[i].to_field_array()); + fields.push_array(self.new_nullifiers[i].serialize()); } fields.push_array(self.new_l2_to_l1_msgs); fields.push_array(self.unencrypted_logs_hash); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr index 4fc76b8df33..fa3bd519168 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr @@ -286,7 +286,7 @@ pub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) } pub fn compute_unique_siloed_commitments(first_nullifier: Field, siloed_commitments: [SideEffect; N]) -> [SideEffect; N] { - let mut unique_siloed_commitments = [SideEffect::zero(); N]; + let mut unique_siloed_commitments = [SideEffect::empty(); N]; for i in 0..N { let siloed_commitment = siloed_commitments[i]; if siloed_commitment.value != 0 { diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr index 486087b1d69..f06f06d5485 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures/read_requests.nr @@ -26,7 +26,7 @@ pub fn generate_read_requests_with_config(how_many: Field, is_transient: bool, h BoundedVec, BoundedVec ) { - let mut read_requests = BoundedVec::new(SideEffect::zero()); + let mut read_requests = BoundedVec::new(SideEffect::empty()); let mut read_request_membership_witnesses = BoundedVec::new(dep::std::unsafe::zeroed()); for i in 0..how_many { diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts index ce3403aeb77..d13348b4403 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts @@ -20,7 +20,6 @@ export interface SideEffectLinkedToNoteHash { counter: Field; } - export interface AztecAddress { inner: Field; } From 4ba1249f4d46ff491c0126a7033f960c8f9c5470 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 02:53:19 +0000 Subject: [PATCH 36/71] small fixes --- noir/noir_stdlib/src/eddsa.nr | 2 +- yarn-project/aztec-nr/aztec/src/context.nr | 8 ++++---- .../src/crates/types/src/abis/side_effect.nr | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/noir/noir_stdlib/src/eddsa.nr b/noir/noir_stdlib/src/eddsa.nr index 39051e23233..06fe94544e4 100644 --- a/noir/noir_stdlib/src/eddsa.nr +++ b/noir/noir_stdlib/src/eddsa.nr @@ -2,7 +2,7 @@ use crate::hash::poseidon; use crate::ec::consts::te::baby_jubjub; use crate::ec::tecurve::affine::Point as TEPoint; // Returns true if x is less than y -fn lt_bytes32(x: Field, y: Field) -> bool { +pub fn lt_bytes32(x: Field, y: Field) -> bool { let x_bytes = x.to_le_bytes(32); let y_bytes = y.to_le_bytes(32); let mut x_is_lt = false; diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index e6ff411dd2d..a9f05c4561a 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -306,7 +306,7 @@ impl PrivateContext { return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 14), // +1 read_requests: arr_copy_slice_in_struct_dumb2(fields, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL], SideEffect::deserialise, 18), new_commitments: arr_copy_slice_in_struct_dumb2(fields, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL], SideEffect::deserialise, 82), - new_nullifiers: new_nullifiers: arr_copy_slice_in_struct_dumb3(fields, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL], SideEffectLinkedToNoteHash::deserialise, 114), + new_nullifiers: arr_copy_slice_in_struct_dumb3(fields, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL], SideEffectLinkedToNoteHash::deserialise, 114), nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 162), private_call_stack_hashes: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 178), public_call_stack_hashes: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 190), @@ -333,7 +333,7 @@ impl PrivateContext { constructor_vk_hash : fields[221], function_tree_root : fields[222], contract_address_salt : fields[223], - portal_contract_address : fields[224], + portal_contract_address : EthAddress::from_field(fields[224]), }, chain_id: fields[225], version: fields[226], @@ -562,7 +562,7 @@ impl PublicContext { pub fn push_new_note_hash(&mut self, note_hash: Field) { let side_effect = SideEffect { value: note_hash, - side_effect_counter: self.side_effect_counter + counter: self.side_effect_counter }; self.new_commitments.push(side_effect); self.side_effect_counter = self.side_effect_counter + 1; @@ -572,7 +572,7 @@ impl PublicContext { let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: EMPTY_NULLIFIED_COMMITMENT, // cannot nullify pending notes in public context - side_effect_counter: self.side_effect_counter + counter: self.side_effect_counter }; self.new_nullifiers.push(side_effect); self.side_effect_counter = self.side_effect_counter + 1; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index a0bc93e8c8c..b1b38da2ea6 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -7,11 +7,11 @@ struct SideEffect{ } impl SideEffect { - fn serialize(self) -> [Field; 2] { + pub fn serialize(self) -> [Field; 2] { [self.value, self.counter] } - fn deserialise(values: [Field; 2]) -> Self { + pub fn deserialise(values: [Field; 2]) -> Self { Self { value: values[0], counter: values[1], From 17a5e043af12b4afda4fee56cac0263ba41b834e Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 03:17:23 +0000 Subject: [PATCH 37/71] recompile ts --- .../cpp/src/aztec3/circuits/abis/packers.hpp | 4 - .../src/artifacts/ecdsa_account_contract.json | 897 ++++++++++++++++++ .../artifacts/schnorr_account_contract.json | 885 +++++++++++++++++ .../schnorr_single_key_account_contract.json | 820 ++++++++++++++++ .../src/crates/types/src/constants.nr | 2 +- 5 files changed, 2603 insertions(+), 5 deletions(-) create mode 100644 yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json create mode 100644 yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json create mode 100644 yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json diff --git a/circuits/cpp/src/aztec3/circuits/abis/packers.hpp b/circuits/cpp/src/aztec3/circuits/abis/packers.hpp index cb03c488070..45291c516ac 100644 --- a/circuits/cpp/src/aztec3/circuits/abis/packers.hpp +++ b/circuits/cpp/src/aztec3/circuits/abis/packers.hpp @@ -131,8 +131,6 @@ struct GeneratorIndexPacker { int PARTIAL_ADDRESS = GeneratorIndex::PARTIAL_ADDRESS; int BLOCK_HASH = GeneratorIndex::BLOCK_HASH; int SIDE_EFFECT = GeneratorIndex::SIDE_EFFECT; - int SIDE_EFFECT_LINKED_TO_NOTE_HASH = GeneratorIndex::SIDE_EFFECT_LINKED_TO_NOTE_HASH; - int SIDE_EFFECT_WITH_RANGE= GeneratorIndex::SIDE_EFFECT_WITH_RANGE; int TX_REQUEST = GeneratorIndex::TX_REQUEST; int SIGNATURE_PAYLOAD = GeneratorIndex::SIGNATURE_PAYLOAD; int VK = GeneratorIndex::VK; @@ -172,8 +170,6 @@ struct GeneratorIndexPacker { PARTIAL_ADDRESS, BLOCK_HASH, SIDE_EFFECT, - SIDE_EFFECT_LINKED_TO_NOTE_HASH, - SIDE_EFFECT_WITH_RANGE, TX_REQUEST, SIGNATURE_PAYLOAD, VK, diff --git a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json new file mode 100644 index 00000000000..df02a286c7d --- /dev/null +++ b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json @@ -0,0 +1,897 @@ +{ + "name": "EcdsaAccount", + "functions": [ + { + "name": "compute_note_hash_and_nullifier", + "functionType": "unconstrained", + "isInternal": false, + "parameters": [ + { + "name": "contract_address", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "nonce", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "storage_slot", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "serialized_note", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "field" + } + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "constructor", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "signing_pub_key_x", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "public" + }, + { + "name": "signing_pub_key_y", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "public" + } + ], + "returnTypes": [], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "entrypoint", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "payload", + "type": { + "kind": "struct", + "path": "authwit::entrypoint::EntrypointPayload", + "fields": [ + { + "name": "function_calls", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "struct", + "path": "authwit::entrypoint::FunctionCall", + "fields": [ + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "target_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_public", + "type": { + "kind": "boolean" + } + } + ] + } + } + }, + { + "name": "nonce", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "public" + } + ], + "returnTypes": [], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid_public", + "functionType": "open", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_reads", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "current_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack_hashes", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffect", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", + "fields": [ + { + "name": "note_hash_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "archive_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "set_is_valid_storage", + "functionType": "open", + "isInternal": true, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "value", + "type": { + "kind": "boolean" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_reads", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "current_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack_hashes", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffect", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", + "fields": [ + { + "name": "note_hash_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "archive_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + } + ], + "events": [] +} diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json new file mode 100644 index 00000000000..55d84a95704 --- /dev/null +++ b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json @@ -0,0 +1,885 @@ +{ + "name": "SchnorrAccount", + "functions": [ + { + "name": "compute_note_hash_and_nullifier", + "functionType": "unconstrained", + "isInternal": false, + "parameters": [ + { + "name": "contract_address", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "nonce", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "storage_slot", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "serialized_note", + "type": { + "kind": "array", + "length": 3, + "type": { + "kind": "field" + } + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "constructor", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "signing_pub_key_x", + "type": { + "kind": "field" + }, + "visibility": "public" + }, + { + "name": "signing_pub_key_y", + "type": { + "kind": "field" + }, + "visibility": "public" + } + ], + "returnTypes": [], + "bytecode": "H4sIAAAAAAAA/+2dd3RURRTG3+5mswmQKDaKolHstN3shmzovffeISEbCCWBEFSwIfaOXbEh9o5dsSF2RcXeFcHeu/zl8X7wngyP5fBH7iJzPuec77xsyez9zZs3b2bezL0bHcfZ4GxOAVFQlCUqMN5D6uIeo3VLsbDkEU6TbzzaNpFIFRemYvFYabSwpCxZFE0UlbVNxpKxomRReWEyHk8lE8nikrKS4mhJLBFPxSqKSuIVbsZhPRujmeDOljyyM8CdvYtzRySPSAa4I8rcznbqe13tbKpoZ8AtywI3v8aiv0VN3GNTsmNL0b7uOUO57O6Wy767gF37OVsn7XrVzNG7Rr3y82xs5nKgbdnfKN+Q+7m/3gXdI9IBxveDvvwOML5X4OYXcrafuijyhXZwPqJ1S7HGjn57pG1jEwtsDDo7p12P1i3FChzddt1LB4r2dP/OTVNv8V6WjwnXaViZL9fNFylo/I6j+zvxdH2iaB1TrmFzKE1ZZqUpy7DxXtjHi9d5xueOr1zy3e9mK5+DgGGfl2+Wz7YcUUP376rq2sqKBd1rUqW1qfJB1bUps2Jl+wrEBDAbSPNzs1AivnzMQo4YR/M3/7VaozTMPLWv5gP18oqG0hWCs2u3lAHDRq8CHCRqLjrY2VLDzJPupQy0CtFMtwreERU8YrA5vs+9K1u5dY2na9n9daaL8bfZImXp2hJDC9LMzWtaqnbI/LJZlVP7pxZ0rSofUlpTW1k6q2t5eU1q3rx0lSSUxvigUaD+VsdsScxm2H+LMQtop7Qu/j4uaj/6qs3d48HucTfRIT4bQsq2mFd2XccJhyjmdahjXyupabNp72HOlgocTFMXMtCCxfx1zl9++U6Gb7+ZODmHZSDfwx29Sp8p7sP1z1FGBzyaZYrKG3a2TbYMJpXPW0a7tgc5dtSv5o5uQ/3/hA/fhI/ZQ/VuykeIjnQ232eQzAG+Y7yX7eMze6pmjzbH/dvs0XpDB3NwXk+5nGycfDHnD8yOkfeeV17mEMz7nxxn23OTm+bc1DN+q6Hve46z7VAuR/m8BAxbvHwjPgYcvYcTqdmVtT2rptYsmCOTNAOqp5kdthyDxW8/ktmmmRND3vcDzrYjLryur8tcaNZ5x/htx1cOXqpv2JKJ66KBbp6b2ro8w36PtYHB432eY7DlKbMFjN/08vVe52Xudzfx5++APz+NHfk7kT/fsK2Bz85c4/N6xntBH4fZLnnf/8/mMOvaqW6hZ2dhJu1sqWNnRaIwsVWHNKh8rgKKzK0c3YszU8yaM0+tLWEOKTK3sYQ5S5E5aglzWJE5ZglztiJzoSXMEUXmuCXMOYrMCUuY91NkLrKEuakic1tC5mJC5iQhcwkhcztC5vaEzB0ImTsSMnciZO5MyNyFkLkrIXM3QubuhMw9CJl7EjL3ImTuTcjch5C5LyFzP0Lm/oTMAwiZBxIyDyJkHkzIPISQeSgh8zBC5uGEzCMImUcSMo8iZB5NyDyGkHksIfM4QubxhMwTCJknEjJPImSeTMg8hZC5lJC5jJB5KiFzOSFzipC5gpB5GiHzdELmSkLmGYTMMwmZZxEyzyZkriJkriZknkPIPJeQuYaQeR4hcy0h83xC5qMImY8mZD6GkHmBJcwFiswLLWFuoch8rCXMmnX7OELm4wmZTyBkPpGQeREh80mEzIsJmU8mZD6FkPlUQubTCJlPJ2Q+g5D5TELmswiZzyZkPoeQ+VxC5vMImc8nZF5CyHwBIfOFhMwXETJfTMh8CSHzpYTMlxEyX07IfIUlzPsrMi+1hLmlIvOVljA3U2S+yhJmzev5akLmawiZryVkXkbIfB0h83JC5usJmW8gZL6RkPkmQuabCZlvIWS+lZD5NkLm2wmZ7yBkvpOQ+S5C5rsJmVcQMt9DyHwvIfN9hMz3EzI/QMj8ICHzQ4TMDxMyP0LIvJKQ+VFC5scImR8nZH6CkPlJQuZVhMxPETKvJmR+mpD5GULmZwmZnyNkfp6Q+QVC5hctYdZcy/wS4Xl+mZB5DSHzK4TMrxIyv0bIvJaQ+XVC5jcImd8kZH6LkPltQuZ3CJnfJWR+j5D5fULmDwiZPyRk/oiQ+WNC5k8ImT8lZF5HyPwZIfN6QuYNhMyfEzJ/Qcj8JSHzV4TMXxMyf2MJc64i87eWMNdTZP7OEub6iszfW8LcQJH5B0uY8xSZf7SEOV+R+SdLmHdTZP7ZEubdFZl/sYS5oSLzr5Yw76HI/JslzHsqMv9uCfNeisx/WMK8tyLzn5Yw76PI/JclzI0UmTcqMjdy8wm4zCFRligsyhZFRDkijAsxTsK4Af1o9CvRz0K/A/dh3JfQTqPdwnWMeo3z3Mgoy8aiJqI17utWotaiNuAQxUSFKB9RQlQkaisqFiVFJaJ2ovaiDqKOok6izm55dBV1E3UX9RD1FPUS9Rb1EfUV9RP1Fw0QDRQNEg0WDRENFQ0TDReNEI0UjRKNFo0RjRWNE40XTRBNFE0STRZNEZWKykRTReWilKhCNE00XVQpmiGaKZolmi2qElWL5ojmimpE80S1IsSwR0x3xDhHzG/EwF4oQoxkxAxGDF3ElEWM1UUixOBcLEKMRsQsRAw/xLRDjDfEPEMMMMTEQowoxExCDCHE1EGMmSUixCBBTA7EqEDMBsQwgE9/+LiHz3f4QF8qgo9s+IyGD2X4FIaP3WUi+GBdLoKPTvishA9H+DSEjz/4vIMPOPhEg48w+MyCDyn4VIKPoRUi+KCBTxb4KIHPDviwgE8H+DjAnn/sgV8pwh5p7BnGHlrsKcUey1Ui7MFbLcIeLexZwh4e7GnBHg/secAeAKyJxxpx1EGsIcaaWqwxXSvCGkSsycMaNazZwhomrOnBGhes+cAaCKwJwDNyPDPGM1Q8U8QztnUiPINZL8IcPeasMYeLOU3M8WHOC3NAmBPBHAHGzBhDYkyFMQb63OiDok+GPgru2biHoU1HG4dr3kv/ACQyjbri6AAA", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "entrypoint", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "payload", + "type": { + "kind": "struct", + "path": "authwit::entrypoint::EntrypointPayload", + "fields": [ + { + "name": "function_calls", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "struct", + "path": "authwit::entrypoint::FunctionCall", + "fields": [ + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "target_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_public", + "type": { + "kind": "boolean" + } + } + ] + } + } + }, + { + "name": "nonce", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "public" + } + ], + "returnTypes": [], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [], + "bytecode": "H4sIAAAAAAAA/+2dBZwUx/LH+3ZPgEMOdzjcYef8AkkWd4ImECPIXdyJu7vLi7u7u724uyfEX/RFXtzzn9p0cUWzuT9kqybdn575fJqe6dmrrl+1zHeHntlmBUrNLlSZLS9MiTDlh6lUNZTBltZ5KrctCKtTBVnslqeqKirqqsvqgvJgUaqsdnFNZaqicnFVTVATVNZULi2rKS+vq6moqa5dXFudqg0qyuuC+sra8nptuIDPx5SEbghxoYDuQst1F4U2igR0FzHrVn/R33P1szOjn3k6lqXaXqcw/R6mzp7mQ8PURbcZxKVEx6WLBX51DVMyTE3UX29pnady2wI52+XlgrYrBG1XCtquErRdLWi7RtB2bRGx2U3n3XXeQ+c9dV6q81467x2mR5J/7jdVq46ZpjrBlkfKmun9BCkr1vtJUtZc7+eTshZ6v4CUtdT7haSsld4vMs7BltZ5KsctGxekctyakrg0IXpoXDDHuDQjZRiXYlKG2puTMoxLC1KG9bUkZVgfxhPsdyXncaNtiTGhPuP5/CyaCrJoKsyiqSiLJuozlGEs0jpP5bgVkhhx2aT9Hbc84zhN9luQmDTn9SXDty15bWZiViIQs5Zq9WNWQmLWSiBmrXltZmLWViBmrdXqx6wtiVkbgZi147WZiVkHgZi1U6sfsw4kZu0FYtaR12ZKwGbGz04CfnbltVkDbdtZrX7bdiVt20UgZt14bWZi1p3ZJtjoQWKC8UPfi8n57iRePZjjlUfqRLt43EOu3oz+nv+P/p5Z/OgZoX7qX+xr7Gvs6z/ra/d/2Feot5S13qC6qVEvbI1dO0sFYwA2e/HazMzzvYn/qBXrKSbnaV/szawtj9SJdun9FpVlP/Y19jX2NfY19jX2NfY19jX2NfY19jX2NfY19tVmX+n/gSaIL8zf7TO+KMMXlSUuuDW1yJdCi3xJWuRLkUW+5FvkSxOLfCmwyJe8f9gXui5GkTI8nyBlOD/S9TN99D5dP9NX79P1M/2ITizrr/fp+pkBep+uMRpI9jEfpPfpGqPBep+uMRqi9+kao6F6n64nGqb3W5Gy4Xq/NSkboffbkDJc8NuOlOEiyvakrEzvdyRluCCyEynDhYydSRkuQOxCynDhYDdShgv+epIybEPa5tiGvUkZtmEfUoZt2JeUYRv2I2XYhv1JGbbhAFKGbUjbFNtwECnDNhxMyrANh5AyXIM0lJRhuw4jZdiuw0kZrsUZQcqwrVOkDNs6IGW4JqWMlGH7l5MybP8KUoZrMypJGfaJKlKGfQLbFNpiZl7Defx7OkaxHjpGq7PUV5XFL9yncxL+TVrnqdy2zJxE60mTY6yrGfGhwgJfCizypYlFvuRb5EuRRb4kLfKl0CJfmlrkSyKLL+W8vmQuIXh9gA3n4XLiB/pURvwImGOSsZHFj4D4gfWniB8jeP3IVDE8ix8jiB9Y/3DixzBePzLhH5rFj2HED6x/KPFjCK8fma43OIsfQ4gfWP9g4scgXj8yXXBgFj8oY2P9A4kfA3j9yCBJ/yx+DCB+YP39iR/9eP3IVNs3ix/9iB9Yf1/iRx9ePzJzGf0uBcc4X2BdSfKZ0RqagInp9zDKqMj7lG/xewFlY3y4h3J1rd6nTL6W3qc8P1Lv0+8CON/S7xGNfQeh31WQv2pIGV7XakkZMsBapAx5CX0q0n/LvMa1DOrCdbm4Nfb9m67Pwr+j3xVxrRZd6yuxdrW74Z/5jFUxKaNrypnX82Z8aW74gsfdhettadTbMqJ6S4x6SyKqt41Rb5uI6u1k1NvJqPev7rtL+KIMX1QjvrSzyJdWFvlSYpEvzSzypcgiX/It8qWLRb50tciXjhb50skiX9pa5EsLi3xpaZEvTS3ypdAiX5IW+dLZIl/aW+SL9PeZNfGltUW+tLHIl2KLfGlukS9NLPKlwCJf8v5hX/5qPQWep/9Xi/dY6BqGnoYmKCvV+3QNA94fo+9JwftodF0D3iek6xrwHlwJKcN7m3StA96/o2sd8F5sW1KG9/7o+ge8d0zXOuB9Q7rWAeNB44fXzh6kDL/H0HUN2O9KSRkyAL1/iN/H6H1GHD90rQOyDL1HiW1D1zpg29D7m9g2dK0Dtg29N4ptQ9c6YNtgfEDXdeT9Rfj3tO9gPfT/+QdnqW9QFr9wn44V/Ju0zlO5bZmxQutJk2Osi/4//wALfCmwyJcmFvnS3CJfii3ypY1FvrS2yJcOFvnS3iJfOlvkS9IiXwot8qWpRb60tMiXFhb50tYiXzpZ5EtHi3zpapEvXSzyJd8iX4os8qWZRb6UWORLK4t8aWeRL4mIfMHvz2h3kOEL1Nuft97M0qx+pF78Xt+f6Mf66XM1fZn9yDP8KCX1Sq57Axu9s+jvQ/Rj/b2JH72Z/QD9HYgfaXJM7yUh12P7wBxfmWjwi3mdZMYv2v/2U6t+t0iSz4xNNPhVm2iIIa5Bo+9N7mGUgX2Jd4X1MOJqvtMb/DPXolH/6DNP5vvN6H1F+rdJo44iJdI+Kdo+sJWqVduHznOFauWxhWMuST4zibThgcmGv2P2faW1wAmV/Tsr83jPLE/FsaOIfRrDXmQ/23zY2/gcxpTRz8D0A+svJWU9svjZi/iZ7b2B3O9GNcdXnlp1jJj7qKUP8Yt5jWyj19NupF7mdfZla/qOwCHEl+G8vpTT509XxxfB5yACgWc8Mu/6TTHbBBv0R0kwfuh7MTlPn1/hfo4mj9SJdvGY+hf7yu8r+NLN8JM+j93NAv+wjD533MWIH1y/d5Zjw/JsbGje/6BseGiywa/dCBsONOJK/z+YxlrimRfKAmm16rWpGdFCnwNi/h620ndRtGtTvcyxz3RRyjcDs8Qd65fmrJ5Z/CglfmD99N3CzByV4dIhWfzoTvzA+ikzDGWOR1PDD9gaYwb6zCIzvwT0XRmr4wvlF2YuCOj8vzq+0GtYmYAvwRr4Qp/3rRDwpXwNfKHPQFcJ+FK5Br5UEV9qBHypXgNfsH64tuP460/KcBz0ImXYH+k6LuwXfUkZtk9vUma+z6OY+EvXiuEzj/S+zUijDOI3ytCUym3LXJewHrSLx6OIf/j85Ug5X2qofXqfYhSpc21m/YXEFpcOsDma2U+wMUbbyiftgfUkyfkbyH2lm/Q+9Kd19PlaYueBLOdxa2wcpUmbjOPVmrnXMZ7YT2epA8on8NYb0HrzdMI6sDxJ9u/HQU0+BxvGF32G8TM2y+fo/jrG3xST82OFNY8jfqTJMdYF/eRW0qceIN911mX2h+qlcRlJ4oLn1yafG0P28bOlJG5jef2sEej3Ge3jScwxtlgP7XtPkvZ4mozh0Ubc4PzyLOdxa2yM0343kVdrZoxPIvbTpA5a72TeegNaL45xrAPLk2T/TTLGJzfsrogv+gxjfEKWz9H90cbfFJPzE4Q1TyR+pMkx1gX95DnSp5aTMZ5m9ofqpXEZQ+KC5+l9g/FkHz9bSuLGPDfWCPT7jPZJJOZoF+uhfe9D0h4fkzE8zogbnP8hy3ncGhvjtN9N4dWaGeNTif00qYPWO4233oDWi2Mc68DyJNn/nozxaQ27K+KLPsMYn5zlc3R/nPE3xeT8ZGHNU4gfaXKMdUE/+Yz0qR/IGGe+PgZUL43LeBIXPE/vT00i+/jZUhI35rmxRqDfZ7RPJTHH2GI9tO8pcq82QZ4PmWjEDc63znIet8bGOO1303m1Zsb4DGI/Teqg9a7HW29A68UxjnXMIKHF/RJcKEA+BxvGF32GMT4ty+fo/kTjb4rJ+WnCmqcTP9LkGOuCflJA+lRrsq6A+7sD1UvjMonEBc/Te79TyT5+tpTEjXlurBHo9xntM0jMMbZYD+17XUh7dCNjeIoRNzg/JMt53Bob47TfzeTVmhnjs4j9NKmD1jubt96A1otjHOvA8iTZH0zG+OyG3RXxRZ9hjK+X5XN0f4rxN8Xk/HrCmmcSP9LkGOuCftKT9KkhZIxzf3egemlcppK44Pm+5HMzyD5+tpTEjXlurBHo9xnts0jMMbZYD+17FaQ9qsgYnm7EDc6Pz3Iet8bGOO13c3i1Zsb4XGI/Teqg9c7jrTeg9eIYxzqwPEn2x5ExPq9hd0V80WcY47OzfI7uTzf+ppicny2seQ7xI02Osa7Muk7Sp8aTMc793YHqpXGZQeKC53uTz80i+/jZUhI35rmxRqDfZ7TPJTHH2GI9tO/NIO0xk4zhmUbc4PzCLOdxa2yM0363Pq/WzBjfgNhPkzpovfN56w1ovTjGsQ4sT5L9TckYn9+wuyK+6DOM8XlZPkf3Zxp/U0zOzxPWvD7xI02OsS7oJ3NIn1pIxjj3dweql8ZlFokLnie3Q1b0ffrZUhI35rmxRqDfZ7RvQGKOscV6aN/bgrTHVmQMzzHiBuf3yHIet8bGOO13C3i1Zsb4hsR+mtRB692It96A1otjHOvA8iTZ352M8Y0adlfEF32GMT4/y+fo/hzjb4rJ+fnCmhcQP9LkGOuCfrIt6VN7kDHO/d2B6qVxmUvigufpu4C7Gp+H/ozjga494B6X9LqAdvGYztdYRr//CD4vkYkjfU7BfF6CPh80kPiEzwe5uNbS3Mf1pfR5AnqfNtvzGn2Mz4E+5ueMygWeJci0N66vyyexwXqS5PxJZCyfQuZ/1Ez7w0VZzuPW2PWBrn9kXuuXouue8fowPEu93Ov6aL14fcA6sDxJ9i8k1wf6OxcYX/QZ+t2wLJ+j+72Mvykm54cJa6a/jZEmx3Tt+GmkT11E5rVSZn+oXhqXLiQueJ4+MyQ53mj9Q4gf5m+J0mcC6fzJ/fwMfa4K7eLxMOIflpUS/1AHnUvocwElAr62MnzFY/oeb4l6C4x6CyKqt8iotyiiepsa9TaNqN5io97iiOqNvl8F1WCzLbNNaKfWauWtsWsvfT91G1ZfUkET1fAOuM3rls3YflndznnEJ/QT3/nSjPhFv5Mnyd/kq1W1FWYpa5KlrJladaO/19GC7JeQv2tp+AkxxvdI0HdN4nu66LsmUQd9ryTqwc8XqVXbiPXig1uS2XaC2CpPVVVU1FWX1QXlwaJUWe3imspUReXiqpqgJqisqVxaVlNeXldTUVNdu7i2OlUbVJTXBfWVteX12lhPRlt9+DSmktkah5RxxZLTZ+ov/CcVDppsg6pQQIsy6jHj11IJd3iJxukrYLef4uv0Urr78bcR/bJifUyl/OzF6CeSIg5q+Mbwu/rzbgbkPXQOG73rkU1Xrr4MULxkBrpw4hqgdfQnegaq7JOMRJuVKplJepCKJ2mWxhkkYHewsnuSBt2D+dtopckvYdjONQ69GW0NUfwTzupMpEN1W2aboIaSzw3L8rme+vwwncPgp7fOJGLO2Y9H/EMxTzUS8xT5XNBIzAMS87IsnyvV58t0Dn7ho64Sc8twxX8Rvjefdx7g1j1Cx5Rb9335MvNfktnPCsZYMrZ1wBm/qKCsk+KHsjxiEx5ph0f64TF2eGYbHneFx5HhsUt4VBsey4TH49bVfzNa/fm41lj153J7eKxjgvpzWS4s/4ZllbB8D5aJwvIrWOYDy8lgmQYsB4BlJ/Bfv/Df0/Bf2bCMAf57GP5bGP47G/7LHZYVwH+5bxymTcK0aZgWhmmzMC0K0+IwLQnT0jDVhak+TJuHaYswbRmmrcK0dZi2CdO2YdouTNuHaYcw7RimncK0c5iWqZVvcVE4hY3eeksztYEA7Kao75jDLfwiok0Z51tqfQWsvlSk6C1A3Bq7RUt/miif1Zc/b9Hi7c3wFu3oXZZtscGWy7ar23mlG7Xm7JeXJVr0h2voD7pghPNJWYIowjL8myKSi339SKpVuzIVxlVPpZK5HLHGI0ilaCx20fmuqqHr5ZF4QUP+kSVmeWQ/oT+TaOQzeX9h56+GolhnQHEg/HsiFgJg/jcC9x102kH+LlPU1cOWCnZhsIV8squS6bgJ5vhxat5tJVvhZxeVVVTVVaaq6mpqa+pqq+srq1NLFtXXL61OVSxZnFq8uKIqVR6U1y+uLkstLqsNq62tq1wSZPyKin1247O10g2p3VV8Q4qlcXYXsLuHsvuGFOjeg7+NsvrKMdHtIWB3T8U7MGEQgk1EpSjopUrJXARY+4VBL3vpfG/lGb2AcEovEABpeqEdJFd62UvxDb69lRv0wql5H+UeveyjeCdJ3PZVMb2wNM6+Anb3U3bTC+jej7+NROhlb+0rt939Fe/AhEEINqOkl2olcxFg7RcGvRyg8wOVZ/QCwim9QACk6YV2kFzp5QDFN/gOVG7QC6fmg5R79HKQ4p0kcTtYxfTC0jgHC9g9RNlNL6D7EP42EqGXA7Wv3HYPVbwDEwYh2IySXmqUzEWAtV8Y9HKYzg9XntELCKf0AgGQphfaQXKll8MU3+A7XLlBL5yaj1Du0csRineSxO1IFdMLS+McKWD3KGU3vYDuo/jbSIReDte+cts9WvEOTBiEYDNKeqlVMhcB1n5h0MsxOj9WeUYvIJzSCwRAml5oB8mVXo5RfIPvWOUGvXBqPk65Ry/HKd5JErfjVUwvLI1zvIDdE5Td9AK6T+BvIxF6OVb7ym33RMU7MGEQgs0o6WUtJXMRYO0XBr2cpPOTlWf0AsIpvUAApOmFdpBc6eUkxTf4TlZu0Aun5lOUe/RyiuKdJHE7VcX0wtI4pwrY/Zeym15A97/420iEXk7WvnLbPU3xDkwYhGAzSnoZqWQuAqz9wqCX03V+hvKMXkA4pRcIgDS90A6SK72crvgG3xnKDXrh1Hymco9ezlS8kyRuZ6mYXlga5ywBu2cru+kFdJ/N30Yi9HKG9pXb7jmKd2DCIASbUdLLKCVzEWDtFwa9nKvz85Rn9ALCKb2cp+TphXaQXOnlXMU3+M5TbtALp+bzlXv0cr7inSRxu0DF9MLSOBcI2L1Q2U0voPtC/jYSoZfztK/cdi9SvAMTBiHYjJJe1lYyFwHWfmHQy8U6v0R5Ri8gnNILBECaXmgHyZVeLlZ8g+8S5Qa9cGq+VLlHL5cq3kkSt8tUTC8sjXOZgN3Lld30Arov528jEXq5RPvKbfcKxTswYRCCzSjpZR0lcxFg7RcGvVyp86uUZ/QCwim9QACk6YV2kFzp5UrFN/iuUm7QC6fmq5V79HK14p0kcbtGxfTC0jjXCNi9VtlNL6D7Wv42EqGXq7Sv3HavU7wDEwYh2IySXtZVMhcB1n5h0Mv1Or9BeUYvIJzSCwRAml5oB8mVXq5XfIPvBuUGvXBqvlG5Ry83Kt5JErebVEwvLI1zk4Ddm5Xd9AK6b+ZvIxF6uUH7ym33FsU7MGEQgs0o6SWtZC4CrP3CoJdbdX6b8oxeQDilFwiANL2kFR+93Kr4Bt9tyg164dR8u3KPXm5XvJMkbneomF5YGucOAbt3KrvpBXTfyd9GIvRym/aV2+5dindgwiAEm1HSy2glcxFg7RcGvdyt83uUZ/QCwim9QACk6YV2kFzp5W7FN/juUW7QC6fme5V79HKv4p0kcbtPxfTC0jj3Cdj9t7KbXkD3v/nbSIRe7tG+ctu9X/EOTBiEYDNKehmjZC4CrP3CoJcHdP6g8oxeQDilFwiANL3QDpIrvTyg+Abfg8oNeuHU/JByj14eUryTJG4Pq5heWBrnYQG7jyi76QV0P8LfRiL08qD2ldvuo4p3YMIgBJtR0stYJXMRYO0XBr08pvPHlWf0AsIpvUAApOmFdpBc6eUxxTf4Hldu0Aun5ieUe/TyhOKdJHF7UsX0wtI4TwrYfUrZTS+g+yn+NhKhl8e1r9x2n1a8AxMGIdiMkl7GKZmLAGu/MOjlGZ0/qzyjFxBO6QUCIE0vtIPkSi/PKL7B96xyg144NT+n3KOX5xTvJInb8yqmF5bGeV7A7gvKbnoB3S/wt5EIvTyrfeW2+6LiHZgwCMFmlPQyXslcBFj7hUEvL+n8ZeUZvYBwSi8QAGl6oR0kV3p5SfENvpeVG/TCqfkV5R69vKJ4J0ncXlUxvbA0zqsCdl9TdtML6H6Nv41E6OVl7Su33dcV78CEQQg2o6SXCUrmIsDaLwx6eUPnbyrP6AWEU3qBAEjTC+0gudLLG4pv8L2p3KAXTs3LlXv0slzxTpK4vaViemFpnLcE7L6t7KYX0P02fxuJ0Mub2lduu+8o3oEJgxBsRkkvE5XMRYC1Xxj08q7O31Oe0QsIp/QCAZCmF9pBcqWXdxXf4HtPuUEvnJrfV+7Ry/uKd5LE7QMV0wtL43wgYPc/ym56Ad3/4W8jEXp5T/vKbfdDxTswYRCCzSjpZZKSuQiw9guDXj7S+cfKM3oB4ZReIADS9EI7SK708pHiG3wfKzfohVPzJ8o9evlE8U6SuH2qYnphaZxPBex+puymF9D9GX8bidDLx9pXbrv/VbwDEwYh2IySXiYrmYsAa78w6OVznX+hPKMXEE7pBQIgTS+0g+RKL58rvsH3hXKDXjg1f6nco5cvFe8kidtXKqYXlsb5SsDu/5Td9AK6/8ffRiL08oX2ldvu14p3YMIgBJtR0ssUJXMRYO0XBr18o/NvlWf0AsIpvUAApOmFdpBc6eUbxTf4vlVu0Aun5u+Ue/TyneKdJHGDcRDTS442v1MNEwqn3R+U3fQCun/gbyMRevlW+8pt90fFOzBhEILNKOllqpK5CLD2C4NeftL5z8ozegHhlF4gANL0QjtIrvTyk+IbfD8rN+iFU/Mvyj16+UXxTpK4/apiemFpnF8F7P6m7KYX0P0bfxuJ0MvP2lduu78r3oEJgxBsRkkv05TMRYC1Xxj08gcJhlf0As5QeoEdaXqhHSRXevlDMU5qeW7QC6fmvDz36CUvj3eSXNFOeTG9sDQOBJLbbjLPbnoB3ck89jYSoRelfeW2m888MGEQgs0o6WW6krkIsPYLg14KdBAKfaMXEE7ppTACeqEdJFd6KWCc1AodoRdOzUUO0kuREL00iemFp3GaCNBLU8vpBXQ3dYReCrWv3HabCdBLs4jpZYaSuQiw9guDXop1EJr7Ri/FBr00j4BeaAfJlV6KGSe15o7QC6fmFg7SSwshemkZ0wtP47QUoJdWltML6G7lCL00175y2y0RoJeSiOllPSVzEWDtFwa9tNZBaOMbvbQ26KVNBPRCO0iu9NKacVJr4wi9cGpu6yC9tBWil3YxvfA0TjsBemlvOb2A7vaO0Esb7Su33Q4C9NIhYnqZqWQuAqz9wqCXjjoInXyjl44GvXSKgF5oB8mVXjoyTmqdHKEXTs2dHaSXzkL00iWmF57G6SJAL10tpxfQ3dUReumkfeW2202AXrpFTC+zlMxFgLVfGPTSXQehh2/00t2glx4R0AvtILnSS3fGSa2HI/TCqbmng/TSU4heSmN64WmcUgF66WU5vYDuXo7QSw/tK7fd3gL00jtiepmtZC4CrP3CoJc+Ogh9faOXPga99I2AXmgHyZVe+jBOan0doRdOzf0cpJd+QvTSP6YXnsbpL0AvAyynF9A9wBF66at95bY7UIBeBkZML3OUzEWAtV8Y9DJIB2Gwb/QyyKCXwRHQC+0gudLLIMZJbbAj9MKpeYiD9DJEiF6GxvTC0zhDBehlmOX0ArqHOUIvg7Wv3HaHC9DL8IjpZa6SuQiw9guDXkboIKR8o5cRBr2kIqAX2kFypZcRjJNayhF64dQcOEgvgRC9lMX0wtM4ZQL0Um45vYDuckfoJaV95bZbIUAvFRHTyzwlcxFg7RcGvVTqIFT5Ri+VBr1URUAvtIPkSi+VjJNalSP0wqm52kF6qRail5qYXngap0aAXmotpxfQXesIvVRpX7ntriVAL2tFTC/rK5mLAGu/MOhlpA7CKN/oZaRBL6MioBfaQXKll5GMk9ooR+iFU/PaDtLL2kL0sk5MLzyNs44AvaxrOb2A7nUdoZdR2lduu2kBeklHTC8bKJmLAGu/MOhltA7CGN/oZbRBL2MioBfaQXKll9GMk9oYR+iFU/NYB+llrBC9jIvphadxxgnQy3jL6QV0j3eEXsZoX7ntThCglwkR08t8JXMRYO0XBr1M1EGY5Bu9TDToZVIE9EI7SK70MpFxUpvkCL1wap7sIL1MFqKXKTG98DTOFAF6mWo5vYDuqY7QyyTtK7fdaQL0Mi1ielmgZC4CrP3CoJfpOggzfKOX6Qa9zIiAXmgHyZVepjNOajMcoRdOzes5SC/rCdHLzJheeBpnpgC9zLKcXkD3LEfoZYb2ldvubAF6mR0xvWyoZC4CrP3CoJc5OghzfaOXOQa9zI2AXmgHyZVe5jBOanMdoRdOzfMcpJd5QvSyfkwvPI2zvgC9bGA5vYDuDRyhl7naV2678wXoZX7E9LKRkrkIsPYLg14W6CBs6Bu9LDDoZcMI6IV2kFzpZQHjpLahI/TCqXkjB+llIyF62TimF57G2ViAXjaxnF5A9yaO0MuG2lduu5sK0MumEdPLxkrmIsDaLwx6WaiDsJlv9LLQoJfNIqAX2kFypZeFjJPaZo7QC6fmRQ7SyyIhelkc0wtP4ywWoJclltML6F7iCL1spn3ltrtUgF6WRkwvmyiZiwBrvzDopU4Hod43eqkz6KU+AnqhHSRXeqljnNTqHaEXTs2bO0gvmwvRyxYxvfA0zhYC9LKl5fQCurd0hF7qta/cdrcSoJetIqaXTZXMRYC1Xxj0srUOwja+0cvWBr1sEwG90A6SK71szTipbeMIvXBq3tZBetlWiF62i+mFp3G2E6CX7S2nF9C9vSP0so32ldvuDgL0skPE9LJQyVwEWPuFQS876iDs5Bu97GjQy04R0AvtILnSy46Mk9pOjtALp+adHaSXnYXoZVlMLzyNs0yAXnaxnF5A9y6O0MtO2lduu7sK0MuuEdPLZkrmIsDaLwx62U0HYXff6GU3g152j4BeNlN89LIb46S2uyP0wql5DwfpZQ8hetkzpheextlTgF72spxeQPdejtDL7tpXbrt7C9DL3hHTyyIlcxFg7RcGveyjg7Cvb/Syj0Ev+0ZAL7SD5Eov+zBOavs6Qi+cmvdzkF72E6KX/WN64Wmc/QXo5QDL6QV0H+AIveyrfeW2e6AAvRwYMb0sVjIXAdZ+YdDLQToIB/tGLwcZ9HJwBPRCO0iu9HIQ46R2sCP0wqn5EAfp5RAhejk0pheexjlUgF4Os5xeQPdhjtDLwdpXbruHC9DL4RHTyxIlcxFg7RcGvRyhg3Ckb/RyhEEvR0ZAL7SD5EovRzBOakc6Qi+cmo9ykF6OEqKXo2N64WmcowXo5RjL6QV0H+MIvRypfeW2e6wAvRwbMb0sVTIXAdZ+YdDLcToIx/tGL8cZ9HJ8BPRCO0iu9HIc46R2vCP0wqn5BAfp5QQhejkxpheexjlRgF5OspxeQPdJjtDL8dpXbrsnC9DLyRHTS52SuQiw9guDXk7RQTjVN3o5xaCXUyOgF9pBcqWXUxgntVMdoRdOzf9ykF7+JUQvp8X0wtM4pwnQy+mW0wvoPt0RejlV+8pt9wwBejkjYnqpVzIXAdZ+YdDLmToIZ/lGL2ca9HJWBPRCO0iu9HIm46R2liP0wqn5bAfp5WwhejknpheexjlHgF7OtZxeQPe5jtDLWdpXbrvnCdDLeRHTy+ZK5iLA2i8MejlfB+EC3+jlfINeLoiAXmgHyZVezmec1C5whF44NV/oIL1cKEQvF8X0wtM4FwnQy8WW0wvovtgRerlA+8pt9xIBerkkYnrZQslcBFj7hUEvl+ogXOYbvVxq0MtlEdAL7SC50suljJPaZY7QC6fmyx2kl8uF6OWKmF54GucKAXq50nJ6Ad1XOkIvl2lfue1eJUAvV0VML1sqmYsAa78w6OVqHYRrfKOXqw16uSYCeqEdJFd6uZpxUrvGEXrh1Hytg/RyrRC9XBfTC0/jXCdAL9dbTi+g+3pH6OUa7Su33RsE6OWGiOllKyVzEWDtFwa93KiDcJNv9HKjQS83RUAvtIPkSi83Mk5qNzlCL5yab3aQXm4WopdbYnrhaZxbBOjlVsvpBXTf6gi93KR95bZ7mwC93BYxvWytZC4CrP3CoJfbdRDu8I1ebjfo5Y4I6IV2kFzp5XbGSe0OR+iFU/OdDtLLnUL0cldMLzyNc5cAvdxtOb2A7rsdoZc7tK/cdu8RoJd7IqaXbZTMRYC1Xxj0cq8Own2+0cu9Br3cFwG90A6SK73cyzip3ecIvXBq/reD9PJvIXq5P6YXnsa5X4BeHrCcXkD3A47Qy33aV267DwrQy4MR08u2SuYiwNovDHp5SAfhYd/o5SGDXh6OgF5oB8mVXh5inNQedoReODU/4iC9PCJEL4/G9MLTOI8K0MtjltML6H7MEXp5WPvKbfdxAXp5PGJ62U7JXARY+4VBL0/oIDzpG708YdDLkxHQC+0gudLLE4yT2pOO0Aun5qccpJenhOjl6ZheeBrnaQF6ecZyegHdzzhCL09qX7ntPitAL89GTC/bK5mLAGu/MOjlOR2E532jl+cMenk+AnqhHSRXenmOcVJ73hF64dT8goP08oIQvbwY0wtP47woQC8vWU4voPslR+jlee0rt92XBejl5YjpZQclcxFg7RcGvbyig/Cqb/TyikEvr0ZAL7SD5EovrzBOaq86Qi+cml9zkF5eE6KX12N64Wmc1wXo5Q3L6QV0v+EIvbyqfeW2+6YAvbwZMb3sqGQuAqz9wqCX5ToIb/lGL8sNenkrAnqhHSRXelnOOKm95Qi9cGp+20F6eVuIXt6J6YWncd4RoJd3LacX0P2uI/TylvaV2+57AvTyXsT0spOSuQiw9guDXt7XQfjAN3p536CXDyKgF9pBcqWX9xkntQ8coRdOzf9xkF7+I0QvH8b0wtM4HwrQy0eW0wvo/sgRevlA+8pt92MBevk4YnrZWclcBFj7hUEvn+ggfOobvXxi0MunEdAL7SC50ssnjJPap47QC6fmzxykl8+E6OW/Mb3wNM5/Bejlc8vpBXR/7gi9fKp95bb7hQC9fBExvSxTMhcB1n5h0MuXOghf+UYvXxr08lUE9EI7SK708iXjpPaVI/TCqfl/DtLL/4To5euYXnga52sBevnGcnoB3d84Qi9faV+57X4rQC/fanpJqJUHAnf7dWJss1Jt5zu4uIbphzD9GKafwvRzmH4J069h+i1Mv4fpDy02L0yJMCXDlB+mgjAVhqkoTE3C1DRMzcJUHKbmYWoRppZhahWmkjC1DlObMLUNUzsdMIzjd/rCjsffG8c/GMc/Gsc/Gcc/G8e/GMe/Gse/Gce/G8d/GMfwDz3OM44TxnHSOM43jguM40LjuMg4bmIcNzWOmxnHxcZxc+O4hXHc0jhuZRyXGMetjeM2xnFb47hdQh7k6JjJde74jnF+fyBfBuTM+OUKr9/n8diCtviBMX4PWh+/jOngx9w1l2nNwU+M8XvI5vhVrPAz+Dk3zSmiOfiFMX4P2xq/spX8DH79+5pThubgN8b4PWJh/KrqV/Ez+P3vaa7Jojn4gzF+j9oWv5qsfgZwoV9DW9V/oTnIS/DF7zGb4lf9l34GiTXTXNaI5iDJGL/HbYlfdaN+Bvmrr3nJ/6M5KGCM3xM2xK/6//UzKFw9zanV0BwUMcbvyX86fqnV8jNo8v9rrlxNzUFTxvg99U/Gr2K1/QyaNaq5on4NNAfFjPF7+p+KX/Ua+Rk0/2vNNWuoOWjBGL9n/oH41davsZ9By+yaU39Dc9CKMX7PRh2/1N/yMyhZVXPwNzUHrRnj91yU8Vv6t/0M2qysuTwHzUFbxvg9H1H8yupz8jNol+C7l0jv2eX8KqKI4pfKbQsY77MFDzHG70VH4sd4nyh4hDF+LzkSP8b7HMFjjPF72ZH4MX5PD55gjN8rjsSP8Xtm8BRj/F51JH6M35OCZxjj95oj8WPk/OA5xvi97kj8GDk1eIExfm84Ej9GzgpeYozfm47Ej5ETglcY47fckfgxXueC1xjj95Yj8WOcp4M3GOP3tiPxY5xnguWM8XvHkfgxjpOAsc8EnPGD9WzwREa3MP0epu46R/u7qj/Xue2t8wN1frjOj9X5yTo/Q+fn6fwSnV+l8xt0fpvO79H5gzp/XOfP6vxlnb+p8/d0/rHOv9D5tzr/WedKr3cs1HlznbfReSed99B5X50P1nlK51U6H6XzMTqfpPMZOp+r8w11vpnO63W+jc530vnuOt9X5wfr/EidH6/zU3V+ls4v0PllOr9G5zfp/A6d36dz/Ik+/LEbfG08voAVX2WGLwXBx2vxQZVS3Q9wvSOug8T1kbhuEtdT4jpLXH+J6zJxvSau48T1nbjuE9eD4jpRXD+K60pxvSmuQ12xPlXnSue4zhXXv+K6WFwvi+tocX0trrvF9bi4ThfX7+K63vYJtdLGvT66PeP97SSOgb/YuHyWs11eLmi7QtB2paDtKkHb1YK2awRt1xYRmx30GO2o804676zzLjrvqvNuYf6IhgZ4BsIcM01Vw5ODeaSsmd5PkLJivZ8kZc31fj4pa6H3C0hZS71fSMpa6f0i4xxsaZ2nctwEHrhK4bMkisQTn47FfcwxLs1IGcalmJSh9uakDOPSgpRhfS1JGdaH8QT7Xcl53GhbYkyoz3g+P4umgiyaCrNoKsqiifoMZRiLtM5TOW6FJEZcNml/xy3POE6T/RYkJs15fQkKVUN7M9nMxKxEIGYt1erHrITErJVAzFrz2szErK1AzFqr1Y9ZWxKzNgIxa8drMxOzDgIxa6dWP2YdSMzaC8SsI6/NlIDNjJ+dBPzsymuzBtq2s1r9tu1K2raLQMy68drMxKw7s02w0YPEBOOHvheT891JvHowxyuP1Il28biHXL0Z/T3/H/09s/jRM0L91L/Y19jX2Nd/1tfu/7CvUG8pa71BdVOjXtgau3aWCsYAbPbitZmZ53sT/1Er1lNMztO+2JtZWx6pE+3iMfUv9jX2NfY19jX2NfY19jX2NfY19jX2NfY19jX21RVf6f+BJogvzN/tM74owxeVJS64NbXIl0KLfEla5EuRRb7kW+RLE4t8KbDIl7x/2Be6LkaRMjyfIGU4P9L1M330Pl0/01fv0/Uz/YhOLOuv9+n6mQF6n64xGkj2MR+k9+kao8F6n64xGqL36RqjoXqfricapvdbkbLher81KRuh99uQMlys3o6U4SLK9qSsTO93JGW4ILITKcOFjJ1JGS5A7ELKcOFgN1KGC/56kjJsQ9rm2Ia9SRm2YR9Shm3Yl5RhG/YjZdiG/UkZtuEAUoZtSNsU23AQKcM2HEzKsA2HkDJcgzSUlGG7DiNl2K7DSRmuxRlByrCtU6QM2zogZbgmpYyUYfuXkzJs/wpShmszKkkZ9okqUoZ9AtsU2mJmXsN5/Hs6RrEeOkars9RXlcUv3KdzEv5NWuep3LbMnETrSZNjrKsZ8aHCAl8KLPKliUW+5FvkS5FFviQt8qXQIl+aWuRLIosv5by+ZC4heH2ADefhcuIH+lRG/AiYY5KxkcWPgPiB9aeIHyN4/chUMTyLHyOIH1j/cOLHMF4/MuEfmsWPYcQPrH8o8WMIrx+Zrjc4ix9DiB9Y/2DixyBePzJdcGAWPyhjY/0DiR8DeP3IIEn/LH4MIH5g/f2JH/14/chU2zeLH/2IH1h/X+JHH14/MnMZ/S4FxzhfYF1J8pnRGpqAien3MMqoyPuUb/F7AWVjfLiHcnWt3qdMvpbepzw/Uu/T7wI439LvEY19B6HfVZC/akgZXtdqSRkywFqkDHkJfSrSf8u8xrUM6sJ1ubg19v2brs/Cv6PfFXGtFl3rK7F2tbvhHx73IP5hGV1TzryeN+NLc8MXPO4uXG9Lo96WEdVbYtRbElG9bYx620RUbyej3k5GvX91313CF2X4ohrxpZ1FvrSyyJcSi3xpZpEvRRb5km+RL10s8qWrRb50tMiXThb50tYiX1pY5EtLi3xpapEvhRb5krTIl84W+dLeIl+kv8+siS+tLfKljUW+FFvkS3OLfGlikS8FFvmS9w/78lfrKfA8/b9avMdC1zD0NDRBWanep2sY8P4YfU8K3kej6xrwPiFd14D34EpIGd7bpGsd8P4dXeuA92LbkjK890fXP+C9Y7rWAe8b0rUOGA8aP7x29iBl+D2GrmvAfldKypAB6P1D/D5G7zPi+KFrHZBl6D1KbBu61gHbht7fxLahax2wbei9UWwbutYB2wbjA7quI+8vwr+nfQfrof/PPzhLfYOy+IX7dKzg36R1nspty4wVWk+aHGNd9P/5B1jgS4FFvjSxyJfmFvlSbJEvbSzypbVFvnSwyJf2FvnS2SJfkhb5UmiRL00t8qWlRb60sMiXthb50skiXzpa5EtXi3zpYpEv+Rb5UmSRL80s8qXEIl9aWeRLO4t8SUTkC35/RruDDF+g3v689WaWZvUj9eL3+v5EP9ZPn6vpy+xHnuFHKalXct0b2OidRX8foh/r70386M3sB+jvQPxIk2N6Lwm5HtsH5vjKRINfzOskM37R/refWvW7RZJ8Zmyiwa/aREMMcQ0afW9yD6MM7Eu8K6yHEVc8xrrAP3MtGvWPPvNkvt+M3lekf5s06ihSIu2Tou0DW6latX3oPFeoVh5bOOaS5DOTSBsemGz4O2bfV1oLnFDZv7Myj/fM8lQcO4rYpzHsRfazzYe9jc9hTBn9DEw/sP5SUtYji5+9iJ/Z3hvI/W5Uc3zlqVXHiLmPWvoQv5jXyDZ6Pe1G6mVeZ1+2pu8IHEJ8Gc7rSzl9/nR1fBF8DiIQeMYj867fFLNNsEF/lATjh74Xk/P0+RXu52jySJ1oF4+pf7Gv/L6CL90MP+nz2N0s8A/L6HPHXYz4wfV7Zzk2LM/Ghub9D8qGhyYb/NqNsOFAI670/4NprCWeeaEskFarXpuaES30OSDm72ErfRdFuzbVyxz7TBelfDMwS9yxfmnO6pnFj1LiB9ZP3y3MzFEZLh2SxY/uxA+snzLDUOZ4NDX8gK0xZqDPLDLzS0DflbE6vlB+YeaCgM7/q+MLvYaVCfgSrIEv9HnfCgFfytfAF/oMdJWAL5Vr4EsV8aVGwJfqNfAF64drO46//qQMx0EvUob9ka7jwn7Rl5Rh+/QmZeb7PIqJv3StGD7zSO/bjDTKIH6jDE2p3LbMdQnrQbt4PIr4h89fjpTzpYbap/cpRpE612bWX0hscekAm6OZ/QQbY7StfNIeWE+SnL+B3Fe6Se9Df1pHn68ldh7Ich63xsZRmrTJOF6tmXsd44n9dJY6oHwCb70BrTdPJ6wDy5Nk/34c1ORzsGF80WcYP2OzfI7ur2P8TTE5P1ZY8zjiR5ocY13QT24lfeoB8l1nXWZ/qF4al5EkLnh+bfK5MWQfP1tK4jaW188agX6f0T6exBxji/XQvvckaY+nyRgebcQNzi/Pch63xsY47XcTebVmxvgkYj9N6qD1TuatN6D14hjHOrA8SfbfJGN8csPuiviizzDGJ2T5HN0fbfxNMTk/QVjzROJHmhxjXdBPniN9ajkZ42lmf6heGpcxJC54nt43GE/28bOlJG7Mc2ONQL/PaJ9EYo52sR7a9z4k7fExGcPjjLjB+R+ynMetsTFO+90UXq2ZMT6V2E+TOmi903jrDWi9OMaxDixPkv3vyRif1rC7Ir7oM4zxyVk+R/fHGX9TTM5PFtY8hfiRJsdYF/STz0if+oGMcebrY0D10riMJ3HB8/T+1CSyj58tJXFjnhtrBPp9RvtUEnOMLdZD+54i92oT5PmQiUbc4HzrLOdxa2yM0343nVdrZozPIPbTpA5a73q89Qa0XhzjWMcMElrcL8GFAuRzsGF80WcY49OyfI7uTzT+ppicnyaseTrxI02OsS7oJwWkT7Um6wq4vztQvTQuk0hc8Dy99zuV7ONnS0ncmOfGGoF+n9E+g8QcY4v10L7XhbRHNzKGpxhxg/NDspzHrbExTvvdTF6tmTE+i9hPkzpovbN56w1ovTjGsQ4sT5L9wWSMz27YXRFf9BnG+HpZPkf3pxh/U0zOryeseSbxI02OsS7oJz1JnxpCxjj3dweql8ZlKokLnu9LPjeD7ONnS0ncmOfGGoF+n9E+i8QcY4v10L5XQdqjiozh6Ubc4Pz4LOdxa2yM0343h1drZozPJfbTpA5a7zzeegNaL45xrAPLk2R/HBnj8xp2V8QXfYYxPjvL5+j+dONvisn52cKa5xA/0uQY68qs6yR9ajwZ49zfHaheGpcZJC54vjf53Cyyj58tJXFjnhtrBPp9RvtcEnOMLdZD+94M0h4zyRieacQNzi/Mch63xsY47Xfr82rNjPENiP00qYPWO5+33oDWi2Mc68DyJNnflIzx+Q27K+KLPsMYn5flc3R/pvE3xeT8PGHN6xM/0uQY64J+Mof0qYVkjHN/d6B6aVxmkbjgeXI7ZEXfp58tJXFjnhtrBPp9RvsGJOYYW6yH9r0tSHtsRcbwHCNucH6PLOdxa2yM0363gFdrZoxvSOynSR203o146w1ovTjGsQ4sT5L93ckY36hhd0V80WcY4/OzfI7uzzH+ppicny+seQHxI02OsS7oJ9uSPrUHGePc3x2oXhqXuSQueJ6+C7ir8Xnozzge6NoD7nFJrwtoF4/pfI1l9PuP4PMSmTjS5xTM5yXo80EDiU/4fJCLay3NfVxfSp8noPdpsz2v0cf4HOhjfs6oXOBZgkx74/q6fBIbrCdJzp9ExvIpZP5HzbQ/XJTlPG6NXR/o+kfmtX4puu4Zrw/Ds9TLva6P1ovXB6wDy5Nk/0JyfaC/c4HxRZ+h3w3L8jm638v4m2JyfpiwZvrbGGlyTNeOn0b61EVkXitl9ofqpXHpQuKC5+kzQ5LjjdY/hPhh/pYofSaQzp/cz8/Q56rQLh4PI/5hWSnxD3XQuYQ+F1Ai4Gsrw1c8pu/xlqi3wKi3IKJ6i4x6iyKqt6lRb9OI6i026i2OqN7o+1VQDTbbMtuEdmqtVt4au/bS91O3YfUlFTRRDe+A27xu2Yztl9XtnEd8Qj/xnS/NiF/0O3mS/E2+WlVbYZayJlnKmqlVN/p7HS3Ifgn5u5aGnxBjfI8EfdckvqeLvmsSddD3SqIe/HyRWrWNWC8+uCWZbSeIrfJUVUVFXXVZXVAeLEqV1S6uqUxVVC6uqglqgsqayqVlNeXldTUVNdW1i2urU7VBRXldUF9ZW16vjXVO8NnqnuADyGS2xiFlXLHk9Jn62yPRMGiyDapCAS3KqMeMX0sl3OElGgcCyW23J2Onl9LdM8HeRvTLivUxlfKzK6OfSIo4qDuEtn8P844676Rz2Ep1P4bPY9PCHYDf9Tn8XK9E9sErEYsuQpNf73jy42mc3gKTXx/LJz/Q3Ud48ksYtnONQzfGmPblG5TBmkxQ/RqZoPqRz/XP8rnO+nx/nWdub9KRLxBzzn488B+K+aBGYj6IfG5wIzEfTGI+JMvnuujzQ3Seuc2sT0rMLQOyzFm5ts8f+bzzALdu6D9DBXTD/S5O3bglmf0cxjh+GNs64IxfVFDWSfFDWR6xOTxsqxFhSoUJbiWUhak8TBWJP/9rsSpM1WGqSfz5yr+1wjQyTKPCtHaY1gnTutDeYRodpjGJP18TOC5M48M0IUwTE3++dm5ymKaEaWqYpoVpephmhGm9MM0M06wwzQ7TnDDNDdO8MK0fpg3CND9MC8K0YZg2CtPGYdokTJuGaWGYNgvTojAtDtOSMC0NU12Y6sO0eZi2CNOWYdoqTFuHaZswbZtY+dZRwmhLekuLqw0EYDdFfcccbo0XEW3KON9S6ytg9aUiRW+tKdLfVJZYKrXyT/7ks/ry561PvG0Y3vocvcuyLTbYctl2dTuvdAPUnP3yskSL/iAM/aEUjHA+KUsQRViGf1NEcrGvH0m1alemwrjqGZ6QuRyxxiNIpWgsttMH2ycaul4eiRc05B9ZYpZH9hP6M4lGPpP3F3b+aiiKdQYUB8K/J2IhAObtee4707SD/F2mqKuHLRVsx2AL+WR7oY6bYI4fp+YdVrIVfnZRWUVVXWWqqq6mtqautrq+sjq1ZFF9/dLqVMWSxanFiyuqUuVBef3i6rLU4rLasNrausolQcavqNhnB8Z2ov7umIhvSLE0zo4Jfrs7MXZ6Kd07JdjbKKuvHBPdTgl+uzszD0wIJ9hEVIqCXkY4SC/L9MEuvtHLMoNedomAXkYw0ssyxkltF0fohVPzrg7Sy65C9LJbTC88jbObAL3sbjm9gO7dHaGXXbSv3Hb3EKCXPSKml5SD9LKnPtjLN3rZ06CXvSKglxQjvezJOKnt5Qi9cGre20F62VuIXvaJ6YWncfYRoJd9LacX0L2vI/Syl/aV2+5+AvSyX8T0EjhIL/vrgwN8o5f9DXo5IAJ6CRjpZX/GSe0AR+iFU/OBDtLLgUL0clBMLzyNc5AAvRxsOb2A7oMdoZcDtK/cdg8RoJdDIqaXMgfp5VB9cJhv9HKoQS+HRUAvZYz0cijjpHaYI/TCqflwB+nlcCF6OSKmF57GOUKAXo60nF5A95GO0Mth2lduu0cJ0MtREdNLuYP0crQ+OMY3ejnaoJdjIqCXckZ6OZpxUjvGEXrh1Hysg/RyrBC9HBfTC0/jHCdAL8dbTi+g+3hH6OUY7Su33RME6OWEiOmlwkF6OVEfnOQbvZxo0MtJEdBLBSO9nMg4qZ3kCL1waj7ZQXqhPqdy3Ki/pyRiemFpHAgkt91TE3bTC+g+NcHeRiL0cpL2ldvuv5gHJoQTbEZJL5UJmYsAa78w6OU0fXB6wjN6AeGUXiAA0vRSmeCjl9MYJ7XTE27QC6fmMxLu0csZQvRyZkwvPI1zpgC9nGU5vYDusxyhl9O1r9x2zxagl7MjppcqB+nlHH1wrm/0co5BL+dGQC9VjPRyDuOkdq4j9MKp+TwH6eU8IXo5P6YXnsY5X4BeLrCcXkD3BY7Qy7naV267FwrQy4UR00u1g/RykT642Dd6ucigl4sjoJdqRnq5iHFSu9gReuHUfImD9HKJEL1cGtMLT+NcKkAvl1lOL6D7Mkfo5WLtK7fdywXo5fKI6aXGQXq5Qh9c6Ru9XGHQy5UR0EsNI71cwTipXekIvXBqvspBerlKiF6ujumFp3GuFqCXayynF9B9jSP0cqX2ldvutQL0cm3E9FLrIL1cpw+u941erjPo5foI6KWWkV6uY5zUrneEXjg13+AgvdwgRC83xvTC0zg3CtDLTZbTC+i+yRF6uV77ym33ZgF6uTlielnLQXq5RR/c6hu93GLQy60R0MtajPRyC+Okdqsj9MKp+TYH6eU2IXq5PaYXnsa5XYBe7rCcXkD3HY7Qy63aV267dwrQy50R08tIB+nlLn1wt2/0cpdBL3dHQC8jGenlLsZJ7W5H6IVT8z0O0ss9QvRyb0wvPI1zrwC93Gc5vYDu+xyhl7u1r9x2/y1AL/+OmF5GOUgv9+uDB3yjl/sNenkgAnoZxUgv9zNOag84Qi+cmh90kF4eFKKXh2J64WmchwTo5WHL6QV0P+wIvTygfeW2+4gAvTwSMb2s7SC9PKoPHvONXh416OWxCOhlbUZ6eZRxUnvMEXrh1Py4g/TyuBC9PBHTC0/jPCFAL09aTi+g+0lH6OUx7Su33acE6OWpiOllHQfp5Wl98Ixv9PK0QS/PREAv6zDSy9OMk9ozjtALp+ZnHaSXZ4Xo5bmYXnga5zkBennecnoB3c87Qi/PaF+57b4gQC8vREwv6zpILy/qg5d8o5cXDXp5KQJ6WZeRXl5knNRecoReODW/7CC9vCxEL6/E9MLTOK8I0MurltML6H7VEXp5SfvKbfc1AXp5LWJ6STtIL6/rgzd8o5fXDXp5IwJ6STPSy+uMk9objtALp+Y3HaSXN4XoZXlMLzyNs1yAXt6ynF5A91uO0Msb2lduu28L0MvbEdPLaAfp5R198K5v9PKOQS/vRkAvoxnp5R3GSe1dR+iFU/N7DtLLe0L08n5MLzyN874AvXxgOb2A7g8coZd3ta/cdv8jQC//iZhexjhILx/qg498o5cPDXr5KAJ6GcNILx8yTmofOUIvnJo/dpBePhail09ieuFpnE8E6OVTy+kFdH/qCL18pH3ltvuZAL18FjG9jHWQXv6rDz73jV7+a9DL5xHQy1hGevkv46T2uSP0wqn5Cwfp5QshevkypheexvlSgF6+spxeQPdXjtDL59pXbrv/E6CX/0VML+McpJev9cE3vtHL1wa9fBMBvYxjpJevGSe1bxyhF07N3zpIL98K0ct3Mb3wNM53AvTyveX0Arq/d4RevtG+ctv9QYBefoiYXsY7SC8/6oOffKOXHw16+SkCehnPSC8/Mk5qPzlCL5yaf3aQXn4WopdfYnrhaZxfBOjlV8vpBXT/6gi9/KR95bb7mwC9/BYxvUxwkF5+1wd/+EYvvxv08kcE9DKBkV5+Z5zU/nCEXjg1Q+M22HKDXqjPqRw36m9eMqYXlsaBQHLbTSTtphfQnUiyt5EIvcBEl0jy200yD0wYhGAzSnqZ6CC95Ot+V5D0jF5AOKUXCIA0vUxkpJd8xkmtICnTcbnphVNzoYP0UihEL0UxvfA0TpEAvTSxnF5AdxNH6KVA+8ptt6kAvTSNmF4mOUgvzXS/K/aNXpoZ9FIcAb1MYqSXZoyTWrEj9MKpubmD9NJciF5axPTC0zgtBOilpeX0ArpbOkIvxdpXbrutBOilVcT0MtlBeinR/a61b/RSYtBL6wjoZTIjvZQwTmqtHaEXTs1tHKSXNkL00jamF57GaStAL+0spxfQ3c4RemmtfeW2216AXtpHTC9THKSXDrrfdfSNXjoY9NIxAnqZwkgvHRgntY6O0Aun5k4O0ksnIXrpHNMLT+N0FqCXLpbTC+ju4gi9dNS+ctvtKkAvXSOml6kO0ks33e+6+0Yv3Qx66R4BvUxlpJdujJNad0fohVNzDwfppYcQvfSM6YWncXoK0Eup5fQCuksdoZfu2lduu70E6KVXxPQyzUF66a37XR/f6KW3QS99IqCXaYz00ptxUuvjCL1wau7rIL30FaKXfjG98DROPwF66W85vYDu/o7QSx/tK7fdAQL0MiBiepnuIL0M1P1ukG/0MtCgl0ER0Mt0RnoZyDipDXKEXjg1D3aQXgYL0cuQmF54GmeIAL0MtZxeQPdQR+hlkPaV2+4wAXoZFjG9zHCQXobrfjfCN3oZbtDLiAjoZQYjvQxnnNRGOEIvnJpTDtJLSohegpheeBonEKCXMsvpBXSXOUIvI7Sv3HbLBeilPGJ6Wc9BeqnQ/a7SN3qpMOilMgJ6WY+RXioYJ7VKR+iFU3OVg/RSJUQv1TG98DROtQC91FhOL6C7xhF6qdS+ctutFaCX2ojpZaaD9LKW7ncjfaOXtQx6GRkBvcxkpJe1GCe1kY7QC6fmUQ7Syyghelk7pheexllbgF7WsZxeQPc6jtDLSO0rt911Behl3YjpZZaD9JLW/W60b/SSNuhldAT0MouRXtKMk9poR+iFU/MYB+lljBC9jI3phadxxgrQyzjL6QV0j3OEXkZrX7ntjhegl/ER08tsB+llgu53E32jlwkGvUyMgF5mM9LLBMZJbaIj9MKpeZKD9DJJiF4mx/TC0ziTBehliuX0ArqnOEIvE7Wv3HanCtDL1IjpZY6D9DJN97vpvtHLNINepkdAL3MY6WUa46Q23RF64dQ8w0F6mSFEL+vF9MLTOOsJ0MtMy+kFdM90hF6ma1+57c4SoJdZEdPLXAfpZbbud3N8o5fZBr3MiYBe5jLSy2zGSW2OI/TCqXmug/QyV4he5sX0wtM48wToZX3L6QV0r+8IvczRvnLb3UCAXjaImF7mOUgv83W/W+Abvcw36GVBBPQyj5Fe5jNOagscoRdOzRs6SC8bCtHLRjG98DTORgL0srHl9AK6N3aEXhZoX7ntbiJAL5tETC/rO0gvm+p+t9A3etnUoJeFEdDL+oz0sinjpLbQEXrh1LyZg/SymRC9LIrphadxFgnQy2LL6QV0L3aEXhZqX7ntLhGglyUR08sGDtLLUt3v6nyjl6UGvdRFQC8bMNLLUsZJrc4ReuHUXO8gvdQL0cvmMb3wNM7mAvSyheX0Arq3cIRe6rSv3Ha3FKCXLSOml/kO0stWut9t7Ru9bGXQy9YR0Mt8RnrZinFS29oReuHUvI2D9LKNEL1sG9MLT+NsK0Av21lOL6B7O0foZWvtK7fd7QXoZfuI6WWBg/Syg+53O/pGLzsY9LJjBPSygJFedmCc1HZ0hF44Ne/kIL3sJEQvO8f0wtM4OwvQyzLL6QV0L3OEXnbUvnLb3UWAXnaJmF42dJBedtX9bjff6GVXg152i4BeNmSkl10ZJ7XdHKEXTs27O0gvuwvRyx4xvfA0zh4C9LKn5fQCuvd0hF52075y291LgF72ipheNnKQXvbW/W4f3+hlb4Ne9omAXjZipJe9GSe1fRyhF07N+zpIL/sK0ct+Mb3wNM5+AvSyv+X0Arr3d4Re9tG+cts9QIBeDoiYXjZ2kF4O1P3uIN/o5UCDXg6KgF42ZqSXAxkntYMcoRdOzQc7SC8HC9HLITG98DTOIQL0cqjl9AK6D3WEXg7SvnLbPUyAXg6LmF42cZBeDtf97gjf6OVwg16OiIBeNmGkl8MZJ7UjHKEXTs1HOkgvRwrRy1ExvfA0zlEC9HK05fQCuo92hF6O0L5y2z1GgF6OiZheNnWQXo7V/e443+jlWINejouAXjZlpJdjGSe14xyhF07NxztIL8cL0csJMb3wNM4JAvRyouX0ArpPdIRejtO+cts9SYBeToqYXhY6SC8n6353im/0crJBL6dEQC8LGenlZMZJ7RRH6IVT86kO0supQvTyr5heeBrnXwL0cprl9AK6T3OEXk7RvnLbPV2AXk6PmF42c5BeztD97kzf6OUMg17OjIBeNmOklzMYJ7UzHaEXTs1nOUgvZwnRy9kxvfA0ztkC9HKO5fQCus9xhF7O1L5y2z1XgF7OjZheFjlIL+fpfne+b/RynkEv50dAL4sY6eU8xkntfEfohVPzBQ7SywVC9HJhTC88jXOhAL1cZDm9gO6LHKGX87Wv3HYvFqCXiyOml8UO0sslut9d6hu9XGLQy6UR0MtiRnq5hHFSu9QReuHUfJmD9HKZEL1cHtMLT+NcLkAvV1hOL6D7Ckfo5VLtK7fdKwXo5cqI6WWJg/Ryle53V/tGL1cZ9HJ1BPSyhJFermKc1K52hF44NV/jIL1cI0Qv18b0wtM41wrQy3WW0wvovs4Rerla+8pt93oBerk+YnpZ6iC93KD73Y2+0csNBr3cGAG9LGWklxsYJ7UbHaEXTs03OUgvNwnRy80xvfA0zs0C9HKL5fQCum9xhF5u1L5y271VgF5ujZhe6hykl9t0v7vdN3q5zaCX2yOglzpGermNcVK73RF64dR8h4P0cocQvdwZ0wtP49wpQC93WU4voPsuR+jldu0rt927Bejl7ojppd5BerlH97t7faOXewx6uTcCeqlnpJd7GCe1ex2hF07N9zlIL/cJ0cu/Y3rhaZx/C9DL/ZbTC+i+3xF6uVf7ym33AQF6eSBietncQXp5UPe7h3yjlwcNenkoAnrZnJFeHmSc1B5yhF44NT/sIL08LEQvj8T0wtM4jwjQy6OW0wvoftQRenlI+8pt9zEBenksYnrZwkF6eVz3uyd8o5fHDXp5IgJ62YKRXh5nnNSecIReODU/6SC9PClEL0/F9MLTOE8J0MvTltML6H7aEXp5QvvKbfcZAXp5JmJ62dJBenlW97vnfKOXZw16eS4CetmSkV6eZZzUnnOEXjg1P+8gvTwvRC8vxPTC0zgvCNDLi5bTC+h+0RF6eU77ym33JQF6eSlietnKQXp5Wfe7V3yjl5cNenklAnrZipFeXmac1F5xhF44Nb/qIL28KkQvr8X0wtM4rwnQy+uW0wvoft0RenlF+8pt9w0BenkjYnrZ2kF6eVP3u+W+0cubBr0sj4BetmaklzcZJ7XljtALp+a3HKSXt4To5e2YXnga520BennHcnoB3e84Qi/Lta/cdt8VoJd3I6aXbRykl/d0v3vfN3p5z6CX9yOgl20Y6eU9xkntfUfohVPzBw7SywdC9PKfmF54Guc/AvTyoeX0Aro/dIRe3te+ctv9SIBePoqYXrZ1kF4+1v3uE9/o5WODXj6JgF62ZaSXjxkntU8coRdOzZ86SC+fCtHLZzG98DTOZwL08l/L6QV0/9cRevlE+8pt93MBevlc0wscw5W5Q1j4e5h31DnWt33izwvXLjrfS+cH6PwwnR+j85N0frrOz9X5xTq/UufX6/xWnd+t8wd0/pjOn9H5Szp/Q+fv6vwjnX+u8290/pPO/9B5gb4AF+u8tc476ry7zvvofJDOR+i8UucjdT5a5xN1Pl3nc3S+QOcLdV6n8611vqPOd9P5Pjo/SOdH6Pw4nZ+ic/y5Z/zhRPwJInyZP74WF18wh69qwYee8fEhXIiLS1rwP4fwNgsCS6nuB+10HNvqvI3OW+u8ROetdN5S5y103lznxTpvpvOmOm+i8yKdF2K76Txf50mdJ3Sep3OF7Z33Z/67zn/T+a86/0XnP+v8J53/qPMfdP69zr/T+RdkDlKKf577gnke/is/c7X9JcNcVFdTtWhxRX29RBx7hzYGCuhOFshee1K5bcGQ0EaFgO78Ahl4TzL7+RXfNTJgbOsg3/J+0y2cN3sl+PtNkeW6+4aahwnobuLIePkf43hhbOtAKn7c7fw1X/zKqJ8J5n6ex6j5G0du5CQYNX/riOYko+bvHNGcz6j5e0c0FzBq/sERzYWMmn90RHMRo+afHNHchFHzz45o7sqo+RdHNH/JeK/jV0c0d2Zs59881Py7h5r/cETzV5z3LvPd0DyAsZ3zHNH8P8Z2Tjii+WtGzUlHNHPOYfkeai7wUHOhh5qLPNTcxEPNTT3U3MxDzcUeam7uoeYWHmpu6aHmVh5qLvFQc2sPNbfxUHNbDzW381Bzew81d/BQc0cPNXfyUHNnDzV38VBzVw81d/NQc3cPNffwUHNPDzWXeqi5l4eae3uouY+Hmvt6qLmfh5r7e6h5gIeaB3qoeZCHmgd7qHmIh5qHeqh5mIeah3uoeYSHmlMeag481FzmoeZyDzVXeKi50kPNVR5qrvZQc42Hmms91LyWh5pHeqh5lIea1/ZQ8zoeal7XQ81pDzWP9lDzGA81j/VQ8zgPNY/3UPMEDzVP9FDzJA81T/ZQ8xQPNU/1UPM0DzVP91DzDA81r+eh5pkeap7loebZHmqe46HmuR5qnueh5vU91LyBh5rne6h5gYeaN/RQ80Yeat7YQ82beKh5Uw81L/RQ82Yeal7koebFHmpe4qHmpR5qrvNQc72Hmjf3UPMWHmre0kPNW3moeWsPNW/joeZtPdS8nYeat/dQ8w4eat7RQ807eah5Zw81L/NQ8y4eat7VQ827eah5dw817+Gh5j091LyXh5r39lDzPh5q3tdDzft5qHl/DzUf4KHmAz3UfJCHmg/2UPMhHmo+1EPNh3mo+XAPNR/hoeYjPdR8lIeaj/ZQ8zEeaj7WQ83Heaj5eA81n+Ch5hM91HySh5pP9lDzKR5qPtVDzf/yUPNpHmo+3UPNZ3io+UwPNZ/loeazPdR8joeaz/VQ83keaj7fQ80XeKj5Qg81X+Sh5os91HyJh5ov9VDzZR5qvtxDzVd4qPlKDzVf5aHmqz3UfI2Hmq91RHNTRs3XOaK5GaPm6x3RXMyo+QZHNDdn1HyjI5pbMGq+yRHNLRk13+yI5laMmm9xRHMJo+ZbHdHcmlHzbY5obsOo+XZHNLdl1HyHI5rbMWq+0xHN7Rk13+WI5g6Mmu92RHNHRs33MGrupO3kac3JMIXmVUGYCsNUFKYmYYLvhfA9Cb43AEcDVwJnAXfAdRiuSzBPw7wF4xj6NbQz6O5E4vqkzr8JK/o2TN+F6fsw/RCmH8P0U5h+DtMvYfo1TL+F6fcw/aEdywtTIkzJMOWHqSBMhWEqClOTMDUNU7MwFYepeZhahKllmFqFqSRMrcPUJkxtw9QuTO3D1CFMHcPUKUydw9QlTF3D1C1M3cPUI0w9w1Qapl5h6h2mPmHqG6Z+YeofpgFhGhimQWEaHKYhYRoapmFhGh6mEWFKhSkIU1mYysNUEabKMFWFqTpMNWGqDdNaYYLfr4ffc4ffN4ff+878/nWY4PeR4feC4fdz4fdk4fdV4fdG4fc34fco4fcZ4fcK4ff74Pfs4Pfd4PfO4Pe/4Pew4Peh4PeS4PeD4Pd04Pdl4PdW4PdH4Pc44Pcp4Pca4PcL4H3+8H57eN87vP8c3gcO78eG90XD+5PhfcLwfl143yy8fxXeRwrv54T3VcL7G+F9hvB+P3jfHbz/Dd6HBu8Hg/dlwfuj4H1K8H4heN8OvH8G3scC7yeB93XA+yvgfQ7wfgN43h+ef4fnweH5aHheGJ6fhedJ4flKeN4Qnr+D59Hg+Sx4Xgme34HnWeD5DnjeAdb/w3p4WB8O66Vh/TCsp4X1pbDeEtYfwno8WJ8G67Vg/RKs54H1LbDeA9Y/wHoA+P9x+P9i+P9T+P9E+P81+P8m+P8X+P8IuD8P96vh/i3cz4T7e3C/C+7/wP0QuD8A35fh+yN8n4LvF8DbwJ/AY8AncL2G6xfM5zC/wXjH7f8A4kKQIDDIBgA=", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid_public", + "functionType": "open", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_reads", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "current_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack_hashes", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffect", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", + "fields": [ + { + "name": "note_hash_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "archive_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "set_is_valid_storage", + "functionType": "open", + "isInternal": true, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "value", + "type": { + "kind": "boolean" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_reads", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "current_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack_hashes", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffect", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", + "fields": [ + { + "name": "note_hash_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "archive_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + } + ], + "bytecode": "H4sIAAAAAAAA/+3dB7wV1Z0H8Ht5tMulPAvS5dKLiu89sLdnx16wV3qR8hAeIFZU7EoTQRAEQZpiV0DFit1oLMkm2bhJNlmTTTbJJptkk03b/Z+55y8/hvHtO/GcMDfvN5/P3zvzn7nnfM+cmXPvnZknn2YymWymOJVJtM3sPOn6avta8dWmyqy/sipCOhuViLOsRJyNS8TZpEScTUvE2axEnM1LxJkrEWeLEnHmS8TZskScrUrE2bpEnG1KxFleIs7dSsS5e4k49ygR554l4mzr0dkRnHvZ13b2tb197WBfddtO9rWzfe1iX/e2bW1sl7tKFCS6SXS363TH9JDoKdFLordEH4m+Ev0k+kvsI7GvxH4SAyT2t++tlKiSGCgxSOIAiQMlDpI4WOIQiUMlDpM4XOIIiSMljrL77GiJYySOlThO4niJEyROlBgscZLEyRKnSJwqcZrE6RJnSJwpcZbE2bYtBduWIRLnSJwrcZ7E+RIXSFwocZHExRKXSFwqcZnE5RJDJYZJDJcYITFSYpTEaIkxEmMlxklcITFeYoLERIlJEjUSkyWulJgS2+dTJWolpklMjzlnSFwlMVPiaolrJK6VuE7ieokbJGZJ3Chxk8TNErMlbpG4VeI2idsl7pC4U+Iuibsl7pGYIzFXYp7EfIkFEvdKLJS4T2JRZsf+Xyxxv8QSiaUSD0gsk1gu8aDEComVEg9JrJJYLfGwxBqJtRLrJNZLbJB4ROJRiY0Sj0k8LvGExJMST0k8LfGMxLMSz0lsktgssUXieYkXJF6U2CrxksTLEq9IvCrxmsTrEtsk3pB4U+It25ZGti1vS7wTy70r8Z6df9++fs2+fmBfP7SvX7evH9nXj+3rJ/b1U4lflxfnzXf7+DUYk9NzNws5PY8bQU7P6TLI6fndGHJ6rjeBnJ73TSGnY0AzyOl40Bxye8O8vna18y0gV7Dzech1s/MtIdfdzreCXA873xpyPe18G8j1svPlkOtt53eDXB87vzvk+tr5PSDXz87vaV91/5ip2r5WfMXJlOn5c6TC2PXYaAvt0WNjL8jpsdEOcnpstIectr0D5PTY6Ag5PTY6QU6Pjc6Q02OjC+T02MBjSo+NrpDTY6MAOT02ukFOj43ukNNjowfk9NjoCTk9NnpBTo+N3pDTY6MP5HSf94Wc7nM9psw+HgzrdcJzGq/Pak7X4zldBmVqTtfjOa3r8ZzW9XhO43p91fV4Tut6PKd1PZ6/uh7PVe1XPC/1PXgOar/icazl4DGr/YrHp5aNx6L2Kx6LWh8ei9qveCyqAY9F7dcC5NSFx6KeS3gsqhXHt6bgrbavFV9tqsRxX6dsbLka5vHzoItfy0D8bKmPBftE+2Iv8HX166vKw77qCvV081wPfibWZz90A0t3v5boenIPv2VGXwd7gr9gX7WePKxvC23r6bltWahTy9Vl9NXXuvcuthpL55gTvyN1ToFPczj+9Uzw9fLrq8pmduzHaljuBT7NdQeL5+O/KhezmKmu87sHWPp4tVRW4Hfj+lj6gKW3V0txrOnrt8zoO3Q/z2WaMvrDPtH9p/Y8rO8H+6u/5/2VhTq1XF1GH6200korrbTSSiutDduKv3PwGqZu1zMFPs31Bovv3wZ4PU7LNtdGt0Cdfq+nVFbg72RTfgEMWlcZbLOtzXbXVptrkdn5tzXeM+kZK9+fv9h/Wo+Wq8sF8Glb8NqU5+tkkaV7zPKPW2/VCP/XNCsrzLX25pntx1PXWDsK9hWvU2vOHJPvQXvTcm0ar9M2Ap/n69WVf+v1arxOVwY+z9erK/G6eH18XcGn78N7Rb7Po7/1Once3tcEfJ6v01XiPef6+PCaMF4/1FfP1zQrXa8jJl3nbAY+v9cWi77eDr4+4NP3NQef5+t4lfidpz6+fuDD+7fq2yeAr7+Dbx/w6ftagG+/AL59HXz7gW9fmFff/gF8Axx8+4NJ39cSfJUBfBWZ+vsqwafvawW+gQF8VQ6+geDT97UG3wEBfIMcfAeAT9/XBnwHBfAd6OA7CHz6vnLwHRLAd7CD7xDw6ft2A99hAXyHOvgOA5++b3fwHRHAd7iD7wjw6fv2AN9RAXxHOviOAp++D59vOzqAr9rBdzRYjvFrqcC/9zkG6jkuQJuPzdS/zVp/Ht7XHnwn+PVF96aPd/CdAJaT/FoGGcuJDpaTwDLYryW6N32y3zKjj/BTwK9t1XrysB6PyVM8ty0LdWq5uow+Whu21ViOjzlzsN3xKfBpbnBASy5mMVNd41KSD/vyNL++aAw/1cF3GljO9GoZGF1jP93BciZYzvBqKY7hZ/ktMxrDzwa/tlXrycN67POzPbctC3VqubqMPlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmml1b/VWE6NOXOw3akp8GnujICWXMxiprqeE0nyYV+e49cXPVMzxMF3DljO92qpip6pOdfBcj5YzvNqKT5Tc4HfMqNnai4Ev7ZV68nDeuzzCz23LQt1arm6jD5aaaWVVlpppZVWWmmllVZaaaWVVlpppZXWUrEay5CYMwfbDUmBT3PnBbTkYhYz1XWdPcmHfXmxX190T+IiB9/FYLnMryX6fzVc4mC5DCyX+rVE9yQu91tmdE9iKPi1rVpPHtZjnw/13LYs1Knl6vJQyNPasK3GclHMmYPtLkqBT3OXBrTkYhYz1TUuDU3wYV8O9+uLxvBhDr7hYBnl1VK8rzzCwTIKLCO9Wopj+Gi/ZUZj+Bjwa1u1njysxz4f47ltWahTy9Vl9NFKK6200korrbTSSiuttNJKK6200korrbSWitVYhsWcOdhuWAp8mhsZ0JKLWcxU13X2JB/25Ti/vuiexFgH3ziwTPBqKf7/o69wsEwAy3ivluI9iYl+y4zuSUwCv7ZV68nDeuzzSZ7bloU6tVxdRh+ttNJKK6200korrbTSSiuttNJKK6200korrbTSSiuttNJKK6200urfaixjY84cbDc2BT7NjQ9oycUsZqrrOZEkH/blZL++6JmaGgffZLBMDWC50sEyFSxT/FqiZ2pq/ZYZPVMzDfzaVq0nD+uxz6d5blsW6tRydRl9pWI1lpqYMwfb1aTAp7kpAS25mMVMdZ0/ST7syxl+fdH5Pd3BNwMsVwewXOVguRosM/1aorHmGr9lRmPNteDXtmo9eViPfX6t57ZloU4tV5fRVypWY5kec+Zgu+kp8GluZkBLLmYxU13nT5IP+/L6AL7rHHzXg++6BN+sAL4bHHyzwKfvawG+mwL4bnTw3QS+G2FefbMD+G528M0Gk76vJfhuDeC7xcF3K/j0fa3Ad3sA320OvtvBp+9rDb47A/jucPDdCT59Xxvw3R3Ad5eD727w6fvKwTcngO8eB98c8On7cPybF8A318E3D3xzE3wLAvjmO/gWgG9+gm9hAN+9Dr6F4Ls3wbcogO8+B98isCz2a6nIg2Ux1LMkQJvvz9S/zUvAsjRAm9WyFOpZFqDND2Tq32atPw/vQ9+DAXzLHXwPgm95gm9lAN8KB99K8On78DxeFcD3kINvFfgeSvA9HMC32sH3MPhWJ/jWBvCtcfCtBd+aBN/6AL51Dr714FuX4HskgG+Dg+8R8G1I8G0M4HvUwbcRfI8m+B4P4HvMwfc4+B5L8D0ZwPeEg+9J8D2R4Hs6gO8pB9/T4HsqwfdsAN8zDr5nwfdMgm9TAN9zDr5N4HsuwbclgG+zg28L+DYn+F4I4HvewfcC+J5P8G0N4HvRwbcVfC8m+F4O4HvJwfcy+F5K8L0awPeKg+9V8L2S4Hs9gO81B9/r4HstwfeGX190H2ebg+8NsLzt1xL9WwNvOljeBstbfi3RPaV3/JYZ3VN6F/zaVq0nD+uxz9/13LYs1Knl6jL6aG3YVmPZFnPmYLttKfBp7q2AllzMYqa6xqUkH/bl+3590Rj+noPvfbB86NUyKPr/+nzNwfIhWD7waimO4V/3W2Y0hn8Efm2r1pOH9djnH3luWxbq1HJ1GX200korrbTSSiuttNJKK6200korrbTSSiuttNJKK6200korrbTSSiuttNJKK6200korrbQ2bKuxvBdz5mC791Lg09wHAS25mMVM2dhyNcwn+bAvP/Hri54J/9jB9wlYvunVUhU9E/6pg+WbYPmGV0vxmfB/8ltmhSnjW+DXtmo9eViPff4tz23LQp1ari6jj1ZaaaWVVlpppZVWWmmllVZaaaWVVlpppbVUrMbyccyZg+0+ToFPc98IaMnFLGaq6zp7kg/78jt+fdE9iW87+L4Dls+8WgZG9yT+2cHyGVi+69VSvCfxL37LjO5JfA/82latJw/rsc+/57ltWahTy9Vl9NFKK6200korrbTSSiuttNJKK6200korrbTSSiuttNJKK6200korrf6txvLtmDMH2307BT7NfTegJRezmKmu50SSfNiXP/Dri56p+b6D7wdg+ZFXS2X0TM2/Olh+BJYferUUn6n5N79lRs/UfA5+bavWk4f12Oefe25bFurUcnUZfbTSSiuttNJKK620NmyrsXw/5szBdt9PgU9zPwxoycUsZqrrd0qSD/vyJ3590W+6Hzv4fgKWn/m1RP8m+787WH4Glp/6tUS/6f7Db5nRb7qfg1/bqvXkYT32+c89ty0LdWq5uow+Whu21Vh+HHPmYLsfp8CnuZ8GtORiFjPVNS4l+bAvf+nXF43hv3Dw/RIsv/Zricbw/3Sw/Bosv/Jricbw//JbZjSG/wb82latJw/rsc9/47ltWahTy9Vl9NHasK3G8ouYMwfb/SIFPs39KqAlF7OYqa5xKcmHffk7v75oDP+tg+93YPlDAMt/O1j+AJbf+7VEY/j/+C0zGsP/CH5tq9aTh/XY53/03LYs1Knl6jL6SsVqLL+NOXOw3W9T4NPc7wNacjGLmeo6f5J82Jd/DuD7k4Pvz+D7U4LvrwF8f3Hw/RV8f0nw6Zt9+v43U3+frszD+9DXKIAvm62/rxH49H3oaxzAV+bgawy+sgRf0wC+Jg6+puBrkuBrHsDXzMHXHHzNEnwtAvhyDr4W4Msl+FoG8OUdfC3Bl0/wtQ7ga+Xgaw2+Vgm+8gC+Ng6+cvDp+xaDb/cAvt0cfLuDT9+3FHx7BvDt4eDbE3x7JPj2CuBr6+DbC3xtE3ztA/jaOfjag69dwvnRMYCvg4OvI/g6JPg6B/B1cvB1Bl+nBN/eAXxdHHx7g69Lgq8QwNfVwVcAX9cEX/cAvm4Ovu7g65bg6xnA18PB1xN8PRJ8vQP4ejn4eoOvV4KvbwBfHwdfX/D1SfD1D+Dr5+DrD75+Cb59A/j2cfDtC759EnwDAvj2c/ANAN9+Cb6KAL79HXwV4Ns/wVcVwFfp4KsCX2WCb1AA30AH3yDwDUzwHRjAd4CD70DwHZDgOziA7yAH38HgOyjBd2gA3yEOvkPBd0iC73C/vuj6/mEOPq3fWI7ya4nuFx/hYDkKLEd67jdTZrXfMqN7DUdDg7St1dDnRyf0+dGe25aFOrVcXUYfrQ3baiw6NqgzB9sdlt31Ps0dGdCSi1nMVNe4lOTDvjw2wBh+jIPvWNhXJ3i1DIr+Fu84B8sJYDk+wBh+YoAxfDA0SNt6IvT54IQ+Hxzg/Dgxdn7oMvpopZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmlt2FZj0WeN1ZmD7XTdrvRp7viAllzMYqbY4hd1fZkP+/Jkv77omfCTHHwnw746zaulKnom/BQHy2lgOdVzv5kyT/dbZvRM+BnQIG3r6dDnZyT0+RkBzo/TY+eHLqOPVlpppZVWWmmllVZaaaWVVlpppZVWWmmltVSsxqLXutWZg+103a70ae7UgJZczGKm2OIO19mTfNiXZ/n1RfckznTwnQX76hyvloHRPYmzHSzngGWI534zZZ7rt8zonsR50CBt67nQ5+cl9Pl5Ac6Pc2Pnhy6jj1ZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpp9W81Fn1WQ5052E7X7Uqf5oYEtORiFjPFFr+o68t82JcX+PVFz9Sc7+C7APbVxV4tldEzNRc6WC4Gy0We+82UeYnfMqNnai6FBmlbL4E+vzShzy8NcH5cEjs/dBl9tNJKK6200korrbQ2bKux6G8FdeZgO123K32auyigJRezmCm2uMPvlCQf9uXlfn3Rb7rLHHyXw74a7tcS/ZvsQx0sw8EyzHO/mTJH+C0z+k03EhqkbR0BfT4yoc9HBjg/RsTOD11GH60N22osOjYMhTFct7ssu+t9mhsW0JKLWcxU17iU5MO+HB1gDB/l4BsN+2pcgDF8jINlHFjGBhjDrwgwho+HBmlbr4A+H5/Q5+MDnB9XxM4PXUYfrQ3baiw6NoyBMVy3G5Xd9T7NjQ1oycUsZqprXEryYV9ODDCGT3DwTYR9NTmAZZKDZTJYagKM4VcGGMOnQIO0rVdCn09J6PMpAc6PK2Pnhy6jr1SsxqLH8CQYa3S7Cdld79NcTUBLLmYxU13nT5IP+7I2gG+qg68WfFMTfNMD+KY5+KaDb1qC76oAvhkOvqvANyPBd3UA30wH39Xgm5nguzaA7xoH37XguybBd30A33UOvuvBd12Cb1YA3w0OvlnguyHBd3OA7w83OvhuhrH4pgDfH2b7LbPClHmL531myrgVdpLuv9nQd7r+Fthftwb4HJ0d+xzVZfTV19o2s2utAeqtaillNId2a/mLMzvuBzPdZucbQx7PvTsC7JPbbZlZG1rHbbBP7gxQr9bTxNarDq2rDLbZs2XxtVWm+B1R83vBvrknwLh5l8O4dA/sr7sDjEtzPI9Lpoy50CBt6xw4L3X9HdC2uQGOhTmx81KX54JFp0aZ7ZY5ASw4VcP8nARLmxRZWqbIkkuRpWmKLGUpsnRIkaU8RZZWKbK0SJGlWYosjVNkaZ8iS7sUWfA7w662zE6RpXUmPZZ8iizNU2RpkiJLdhdbcpmdf/fkYP1s2E6/r98FuXl2/m7INUqoQ78bzYWcjvPz4LfiT8t3Lhv3UYjfJ1hPNSxrXS3AMC/wb6X6WJqkyNI8RZZ8iiytU2TRczgNljtSZGmXoj5qnyJL4xRZmqXI0iJFllYpspSnyNIhRZayFFmapsiSS5GlZYosbVJkaZRgme/XMgh/U+gUW9zhN8t8sPj+rWTKXOC3zOje8L2eyzRlLISdpPtP7XlYfy/sr4UBjqMF2R37SZfRR2vDtpp67/Nab/Hf0FngMG7cF3AfmDIXBTjHF0ODtK2LoH8XJ/Tv4gD9uyjWv7qMPlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmml1b/V1Hu/13qromcusF4zxRa/qCsD9YfYB6bMJX7LjJ65WAoN0rYugf5dmtC/SwP075JY/+oy+millVZaaaWVVlpppZVWWmmllVZaaaWVVlpLxWrqfcBvvdHfF2O9Zoot7nDN+oGA+8CUucxvmdE16+XQIG3rMujf5Qn9uzxA/y6L9a8uo4/Whm019T7otd7ifallDuf4gwH3gSlzRYBzfCU0SNu6Avp3ZUL/rgzQvyti/avL6KOVVlpppZVWWmmllVZaaaWVVlpppZVWWmktFaup9yGv9Rb//5VYr5liiztcs34o4D4wZa7yW2Z0zXo1NEjbugr6d3VC/64O0L+rYv2ry+ijlVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlr9W029D/uttyoXq9dMscUv6spA/SH2gSlzjd8yo2cu1kKDtK1roH/XJvTv2gD9uybWv7qMvlKxmnrXBTgW1zgci+sC7gNT5voAx+IGaJC2dT3074aE/t0QoH/Xx/pXl9FXKtYc5Bpltud0fRnkHrG5xpB71OaaQG4jtElzj9lcM8g9bnPNIfcEuPT1SZtrD7mnbG4ubP+0nZ8DuWfs/ALIPWvnF0LuOTu/CHKb7PxiyG2280sgt8XOL4Xc83Z+GeResPPLIfeinV8Bua12fiXkXop9tprcy7HPOJN7JTbumdyrsfHH5F6LHX8m97qdb5HZntsGx6zm3rC5lpB70+ZaQe4tm2sNubdtrg3k3rG5csi9m+DT43M95PT4xONZj89HIKfH56OQ0+NzI+T0+HwMcnp8Pg45PT7xeNX99iTkdL89BTndb09DTvfbM5DT/fYs5HS/PQc53W+bILebzW2G3O42twVye9jc85Db0+ZegFxbm3sRcnvZ3FbItbO5lyCn5+3LkOtgc69ArqPNvQq5Tjb3GuQ629zrkOtic9sgt7fNvQG5rjb3JuQKNvcW5LrZ3NuQ625z70Cuh829C+NbU9i22r5WfLWpEuvSKRtbroZ5rb8ptMWTpSIPlm5QT1ev9VRVmPYVbFmN7LweX12h3i5+6q3UGVNv59j+U4fWVQbbfGhPylZ2+85e90NFVRbqbWot6ukMHt3mE+sx4+C08h3b4dOF54ROdR2TeKx46jOlVOB5XB8L7k+/x23x+6/nY6DClNnJc5mmjI6wTwr2Ve15WN8J9ldHz/sLzzctV5fRRyuttNJKK6200korrbTSSiuttNJKK6200loqVmPpHnPi/a3uKfBpDu+3+L62jfcDtWxz72IE3LsoeK2zeG8J70cUwKB1lcE2y8u3u8bY+RawXvsK7zFi//m931HsP61Hy9VlrasFtAX7z/f9DrxPp+X+49ZbNcL/OVBVYZ4JMM8Z6PEUP++0T/Heq+bwPp/pcz3uetpXvDfWM9h+qV9/4DlTgJzO9wCf331cGeIeWqUpoyP0g7ZN6ymD9bNgDLmpfHvfxMcLs35+wnqdsrHlapjH+9a9/bY1GjP7QPnVUAfW29dvvZVYb9aG1qH5Mpifpw/EwHZm0v2rZnPc9UrYDue7xt6Th/W9Are5NziqYVnrMsfJLXBMzYfPS9+fN9he3C/tYL/o+gLsF9/nm9kv8e93augElp4xJ36vwjGwVwDfl32v6gU+zXUBn7YDx5MtYC14te74HSj+fE0B6vX0ObHD8zX4/EU3cGhd+DzLantcm+dr4t97CvDeDlDm3+OZoPhnMz4TtB7Mf69ngtST9EzQRhgnPv9/vr92ieUC+CvRr+V2ifnxe0GXcJZ67ctQv8F0zDLPp6JD6yqDbTbHjinPn+/R81w4xmcydX/X6A37po/nfRPgMzV63qkf+OOf/XlY3xba1s9z2/D7i5ary+irr3XvFFj7JljxO3+n2HbG2t+rtSr6fr+P1zKL33v2tWWZsbNg57WeMlj/PoyxH8D3d21zNyjns4T1OtV1zvWH/TfAb1ujz7j9ofxqqAPrrfBbbyXWq9/vtQ7Nl8H8d+H7fcX22S/2r5rNcbdfwnY43zf2njys3y9wmweAoxqWtS5znHwEx9Rn8P3e93mO7cX90gH2i67H79ndY9ub41nPB/z+4Pu8zEI9Wq4u7wM+zfWDffp5sOuKRVc3cBUyO19XxOudOCbg9c4mAVyNMzvuL13Wuky9zTzXi397o1Nd41szsDT1bDHX1/Rvb6bW1kwZNmbU+VPG1Y7KgqtJzNgIbI1gXVlsu2aZndvlDd4WKmtkK29ssdpppnH6R0h521DzRdH8EZH5ewBzbJk/CjJ/BGT+6Mf8kU9bsL5sX80f9ZgfgeaPdsxBar6ImhPefBE2X07Nlw3zwV7IFA9ec5Kbi3bmR7X54DdfCs2XQTMgmJPOfHCYE9KciGYAMYOcGcjNIGdGnSqJgRKDJA6QOFDiIImDJQ6ROFTiMInDJY6QOFLiKLtvj5Y4RuJYieMkjpc4QeJEicESJ0mcLHGKxKkSp0mcLnGGxJkSZ0mcLTFE4hyJcyXOkzhf4gKJCyUukrhY4hKJSyUuk7hcYqjEMInhEiMkRkqMkhgtMUZirMQ4iSskxktMkJgoMUmiRmKyxJUSUySmStRKTJOYLjFD4iqJmRJXS1wjca3EdRLXS9wgMUviRombJG6WmC1xi8StErdJ3C5xh8SdEndJ3C1xj8QcibkS8yTmSyyQuFdiocR9EoskFkvcL7FEYqnEAxLLJJZLPCixQmKlxEMSqyRWSzwssUZircQ6ifUSGyQekXhUYqPEYxKPSzwh8aTEUxJPSzwj8azEcxKbJDZnihc+npd4QeJFia0SL2WKx+krEq9KvCbxusQ2iTck3pR4S+JtiXck3pV4T+J9ia9JfCDxocTXJT6S+FjiE4lPMzuf+Gbaw44Wh9vlIcVBozB1Qk1toaIwSf47bMKEmhmjRg4o4LqphYnTptYWptYOm1JbGD2lZmKhcgCW+4H9Ax0d/IfV1o6aOLm2UFsjb5xQO27yhJmFGeNqxxZqpo+aMloqwDevKv8Kb15n39x55zcPGznyy9+3yb5P/1zwpEkjR11VqJlWW6gZXRheM23SyKn/B8P+l/Ia6QIA", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + } + ], + "events": [] +} diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json new file mode 100644 index 00000000000..74dd32db470 --- /dev/null +++ b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json @@ -0,0 +1,820 @@ +{ + "name": "SchnorrSingleKeyAccount", + "functions": [ + { + "name": "constructor", + "functionType": "secret", + "isInternal": false, + "parameters": [], + "returnTypes": [], + "bytecode": "H4sIAAAAAAAA/+XdVZMcVRjG8d3N7k5wZ+PZuCejOzNxd3eXIbM4BA8egnvw4CG4B3cIwSFIcCdAPgjPUwxVuSBXOVuVU/+uemqr9qJrfj0zPd2nz3nfXVVVVTuq/t2qlRqlVmnc7X/eRlb+JvduS9VpH3X/s99MsimbLefT5VQmtSqZLpYKuWQ2V2oqpAqpXCG3Ol3IZMqFbCFfLBXzyWIqmymnmnPFTHNlx3XhXmOyJdz12kd9C7jr93F3QvtItIA7EdhdtYfP+96+zjYt9DprAr9P1QHNbSMx1wQ0t4vE3CqguX0k5tqA5g6RmOsCmjtGYq4PaO4UiTkR0Nw5EnPrgObGSMxtApq7AM1dgeZuQHN3oLkH0NwTaO4FNPcGmvsAzX2B5n5Ac3+geQDQPBBoHgQ0J4HmFNCcBpozQHMWaM4BzU1Acx5oLgDNRaB5MNA8BGgeCjQPA5qHA80jgOaRQPMooHk00DwGaB4LNI8DmscDzROA5olA8ySgeTLQPAVongo0TwOapwPNM4DmmUDzLKB5NtA8B2ieCzTPA5rnA80LgOaFQPMioHkx0LwEaF4KNC8DmpcDzSuA5pVA8yqguQQ0HwM0rwaay0BzM9B8LNB8HNB8PNB8AtB8ItB8EtB8MtB8CtB8KtC8Bmg+DWg+HWg+A2g+E2g+C2g+G2g+B2heCzSfCzSfBzSfDzRfADRfCDRfBDRfDDSvA5ovAZrXA82XAs2XAc2XA81XAM1XAs1XAc1XA83XAM3XAs3XAc3XA803AM03As0bgOabgOabgeZbgOZbgebbgObbgeY7gOaNQPOdQPNdQPPdQPM9QPO9QPN9QPP9QPMmoPkBoHkz0Pwg0PwQ0Pww0PwI0Pwo0PwY0Pw40PwE0Pwk0PwU0Pw00PwM0Pws0LwFaH4OaH4eaH4BaH4RaH4JaH4ZaH4FaH4VaH4NaH4daH4DaH4TaH4LaH4baH4HaN4KNL8LNG8Dmt8Dmt8Hmj8Amj8Emj8Cmj8Gmj8Bmj8Fmj8DmrcDzZ8DzV8AzV8CzV8BzTuA5q+B5m+A5m+B5u8iMe8X0Px9JOb9A5p/iMR8QEDzj5GYDwxo/ikS80EBzT9HYj44oPmXSMyHBDT/Gon50IDm3yIxHxbQ/Hsk5sMDmv+IxHxEQPPOSMxHBjT/GYn5qIDmvyIxHx3Q/Hck5oaA5l0BzQ2V/VRXzK2UWqVOqVcSSmvF94W+T/J9g6+jfV3p6yxfd/h32L9LPk/7vOXvsT/Xfp8bdjum2yt/2yrtlPZKB6Wj0knprDQqXZSuSjelu9JD6an0UnorfZS+Sj+lvzJAGagM8vFQUkrax1nJKjmlSckrBaWoDFaGKEOVYcpwZUTluI5SRitjlLHKOGW8MkGZqExSJitTlKnKNGW6MkOZqcxSZitzlLnKPGW+skBZqCxSFitLlKXKMmW5skJZqbh3fUlxb3P3+nbva/eCdm9k9wp271z3knVvVfcade9N96J0b8Y1inv3uZede7u515l7f7kXlntDrVXcO8i9dNxbxr1W3HvEvTjcm2Kd4t4F6xXXtnetd9c+dy1w18Z2rWjXTnYtYdfWda1Z1151LVLX5tyguHajaxm6tp9r3bn2m2uhuTbYRsW1o1xLybWFXGvHtWdci8W1STYprl2xWXFtA6/199p3rwX32mivFfbaWa8l9dpKrzX02juvRfParC2K1+54LYvXdnitg+f+ey6854Z7rrTnDnsureeWeq6l5x56Lp7npm1VPHdpm+K5LZ7r4bkPngvgZ+N+Vuxnp36W6Gdr/kz72YufRXhs3mPVHrv1WKbH9jzW5bEfj4V4bMD3yr539L2U7y18re1rT1+L+dpkp+LfLp/LfW7zd/2/7R909T5JyMkAAA==", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "entrypoint", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "payload", + "type": { + "kind": "struct", + "path": "authwit::entrypoint::EntrypointPayload", + "fields": [ + { + "name": "function_calls", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "struct", + "path": "authwit::entrypoint::FunctionCall", + "fields": [ + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "target_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_public", + "type": { + "kind": "boolean" + } + } + ] + } + } + }, + { + "name": "nonce", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "public" + } + ], + "returnTypes": [], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid_public", + "functionType": "open", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_reads", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "current_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack_hashes", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffect", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", + "fields": [ + { + "name": "note_hash_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "archive_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "set_is_valid_storage", + "functionType": "open", + "isInternal": true, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "value", + "type": { + "kind": "boolean" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_reads", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::contrakt::storage_read::StorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "current_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack_hashes", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffect", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", + "fields": [ + { + "name": "note_hash_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "archive_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + } + ], + "events": [] +} diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index 664e551ce56..57cc0593db3 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -112,7 +112,7 @@ global CONTRACT_STORAGE_READ_LENGTH: Field = 2; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; -global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 161; +global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 228; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87; global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 192; global COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 4096; From 1c5c57f03604acc93a7a4e9b7a1ac834b8b835f1 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 06:16:52 +0000 Subject: [PATCH 38/71] update noir-compiler snapshot --- .../src/core/libraries/ConstantsGen.sol | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 2 +- .../src/__snapshots__/index.test.ts.snap | 19 ++++++++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index d003a06cce9..08f82273eb4 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -79,7 +79,7 @@ library Constants { uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant EMPTY_NULLIFIED_COMMITMENT = 1000000; - uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; + uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 228; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; uint256 internal constant COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 38d1182397a..cefffe4c7d9 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -65,7 +65,7 @@ export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; -export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 161; +export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 228; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; diff --git a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap index 5d3f916dc63..73480bd0d66 100644 --- a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap @@ -47,17 +47,21 @@ exports[`noir-compiler using nargo generates Aztec.nr external interface 1`] = ` use dep::std; use dep::aztec::context::{ PrivateContext, PublicContext }; -use dep::protocol_types::constants::RETURN_VALUES_LENGTH; +use dep::protocol_types::{ + address::AztecAddress, + abis::function_selector::FunctionSelector, + constants::RETURN_VALUES_LENGTH, +}; // Interface for calling TestContract functions from a private context struct TestContractPrivateContextInterface { - address: Field, + address: AztecAddress, } impl TestContractPrivateContextInterface { - pub fn at(address: Field) -> Self { + pub fn at(address: AztecAddress) -> Self { Self { address, } @@ -69,7 +73,7 @@ impl TestContractPrivateContextInterface { ) { let mut serialized_args = [0; 0]; - context.call_public_function(self.address, 0x46be982e, serialized_args) + context.call_public_function(self.address, FunctionSelector::from_field(0x46be982e), serialized_args) } } @@ -79,11 +83,11 @@ impl TestContractPrivateContextInterface { // Interface for calling TestContract functions from a public context struct TestContractPublicContextInterface { - address: Field, + address: AztecAddress, } impl TestContractPublicContextInterface { - pub fn at(address: Field) -> Self { + pub fn at(address: AztecAddress) -> Self { Self { address, } @@ -95,7 +99,7 @@ impl TestContractPublicContextInterface { ) -> [Field; RETURN_VALUES_LENGTH] { let mut serialized_args = [0; 0]; - context.call_public_function(self.address, 0x46be982e, serialized_args) + context.call_public_function(self.address, FunctionSelector::from_field(0x46be982e), serialized_args) } } @@ -123,6 +127,7 @@ import { EthAddressLike, FieldLike, Fr, + FunctionSelectorLike, Point, PublicKey, Wallet, From f5ad5a540221ba76a14be90f5c8c5e10665160e2 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 20:17:59 +0000 Subject: [PATCH 39/71] 0 --- yarn-project/circuits.js/src/tests/factories.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 5a0d56b9d9f..6c7aaa55d1b 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -396,6 +396,7 @@ export function makePublicCallRequest(seed = 1): PublicCallRequest { new FunctionData(makeSelector(seed + 0x1), false, false, false), makeCallContext(seed + 0x2, makeAztecAddress(seed)), makeTuple(ARGS_LENGTH, fr, seed + 0x10), + 0, ); } From 25ad6900207e43397d983a60bf991c4e5fb1e1d3 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 21:28:35 +0000 Subject: [PATCH 40/71] fix tobuffer/serialization method --- .../circuits.js/src/structs/call_context.ts | 8 +- .../src/structs/kernel/private_kernel.test.ts | 88 ++++++++++++++++++- .../src/structs/public_call_request.ts | 11 ++- yarn-project/types/src/tx/tx.test.ts | 1 + 4 files changed, 101 insertions(+), 7 deletions(-) diff --git a/yarn-project/circuits.js/src/structs/call_context.ts b/yarn-project/circuits.js/src/structs/call_context.ts index 76feb665227..fd5d24c676c 100644 --- a/yarn-project/circuits.js/src/structs/call_context.ts +++ b/yarn-project/circuits.js/src/structs/call_context.ts @@ -78,7 +78,8 @@ export class CallContext { this.msgSender.isZero() && this.storageContractAddress.isZero() && this.portalContractAddress.isZero() && - this.functionSelector.isEmpty() + this.functionSelector.isEmpty() && + this.startSideEffectCounter.isZero() ); } @@ -122,7 +123,7 @@ export class CallContext { reader.readBoolean(), reader.readBoolean(), reader.readBoolean(), - new Fr(reader.readNumber()), + reader.readObject(Fr), ); } @@ -134,7 +135,8 @@ export class CallContext { callContext.functionSelector.equals(this.functionSelector) && callContext.isDelegateCall === this.isDelegateCall && callContext.isStaticCall === this.isStaticCall && - callContext.isContractDeployment === this.isContractDeployment + callContext.isContractDeployment === this.isContractDeployment && + callContext.startSideEffectCounter === this.startSideEffectCounter ); } } diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel.test.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel.test.ts index 0adfba51b46..b6abcbbcb42 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel.test.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel.test.ts @@ -1,5 +1,24 @@ -import { makePrivateKernelInputsInner } from '../../tests/factories.js'; -import { PrivateKernelInputsInner } from './private_kernel.js'; +import { + makeCallRequest, + makeFinalAccumulatedData, + makeNewSideEffect, + makePreviousKernelData, + makePrivateCallData, + makePrivateCallStackItem, + makePrivateCircuitPublicInputs, + makePrivateKernelInputsInner, + makePrivateKernelPublicInputsFinal, +} from '../../tests/factories.js'; +import { + CallRequest, + FinalAccumulatedData, + PreviousKernelData, + PrivateCallStackItem, + PrivateCircuitPublicInputs, + PrivateKernelPublicInputsFinal, + SideEffect, +} from '../index.js'; +import { PrivateCallData, PrivateKernelInputsInner } from './private_kernel.js'; describe('PrivateKernel', function () { it(`serializes PrivateKernelInputsInner to buffer and deserializes it back`, () => { @@ -9,3 +28,68 @@ describe('PrivateKernel', function () { expect(res).toEqual(expected); }); }); + +describe('Public call request', () => { + it('convert to and from buffer', () => { + const pkpi = makePrivateKernelPublicInputsFinal(); + const buf = pkpi.toBuffer(); + expect(PrivateKernelPublicInputsFinal.fromBuffer(buf)).toEqual(pkpi); + }); +}); + +describe('SideEffect', () => { + it('convert to and from buffer', () => { + const sde = makeNewSideEffect(0); + const buf = sde.toBuffer(); + expect(SideEffect.fromBuffer(buf)).toEqual(sde); + }); +}); + +describe('FinalAccumulatedData', () => { + it('convert to and from buffer', () => { + const fad = makeFinalAccumulatedData(0); + const buf = fad.toBuffer(); + expect(FinalAccumulatedData.fromBuffer(buf)).toEqual(fad); + }); +}); + +describe('PreviousKernelData', () => { + it('convert to and from buffer', () => { + const fad = makePreviousKernelData(0); + const buf = fad.toBuffer(); + expect(PreviousKernelData.fromBuffer(buf)).toEqual(fad); + }); +}); + +describe('PrivateCallData', () => { + it('convert to and from buffer', () => { + const fad = makePrivateCallData(0); + const buf = fad.toBuffer(); + expect(PrivateCallData.fromBuffer(buf)).toEqual(fad); + }); +}); + +describe('CallRequest', () => { + it('convert to and from buffer', () => { + const fad = makeCallRequest(0); + const buf = fad.toBuffer(); + expect(CallRequest.fromBuffer(buf)).toEqual(fad); + }); +}); + +describe('PrivateCallStackcItem', () => { + it('convert to and from buffer', () => { + const fad = makePrivateCallStackItem(0); + + const buf = fad.toBuffer(); + expect(PrivateCallStackItem.fromBuffer(buf)).toEqual(fad); + }); +}); + +describe('Private Circuit Public Inputs', () => { + it('convert to and from buffer', () => { + const pkpi = makePrivateCircuitPublicInputs(); + const buf = pkpi.toBuffer(); + expect(PrivateCircuitPublicInputs.fromBuffer(buf)).toEqual(pkpi); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/public_call_request.ts b/yarn-project/circuits.js/src/structs/public_call_request.ts index 78918e1739f..337a0748459 100644 --- a/yarn-project/circuits.js/src/structs/public_call_request.ts +++ b/yarn-project/circuits.js/src/structs/public_call_request.ts @@ -42,7 +42,7 @@ export class PublicCallRequest { /** * Optional side effect counter tracking position of this event in tx execution. */ - public sideEffectCounter?: number, + public sideEffectCounter: number, ) {} /** @@ -50,7 +50,13 @@ export class PublicCallRequest { * @returns The buffer. */ toBuffer() { - return serializeToBuffer(this.contractAddress, this.functionData, this.callContext, new Vector(this.args)); + return serializeToBuffer( + this.contractAddress, + this.functionData, + this.callContext, + new Vector(this.args), + this.sideEffectCounter, + ); } /** @@ -65,6 +71,7 @@ export class PublicCallRequest { FunctionData.fromBuffer(reader), CallContext.fromBuffer(reader), reader.readVector(Fr), + reader.readNumber(), ); } diff --git a/yarn-project/types/src/tx/tx.test.ts b/yarn-project/types/src/tx/tx.test.ts index 3cfe2c1a4eb..c3269505a96 100644 --- a/yarn-project/types/src/tx/tx.test.ts +++ b/yarn-project/types/src/tx/tx.test.ts @@ -4,6 +4,7 @@ import { Tx } from './tx.js'; describe('Tx', () => { it('convert to and from buffer', () => { const tx = mockTx(); + console.log(tx); const buf = tx.toBuffer(); expect(Tx.fromBuffer(buf)).toEqual(tx); }); From 20b4d4faa69144808870cc1bd79fcf28b009b891 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 14 Dec 2023 23:50:20 +0000 Subject: [PATCH 41/71] fix two tests but acvm failing --- .../acir-simulator/src/client/private_execution.test.ts | 4 ++-- yarn-project/acir-simulator/src/client/private_execution.ts | 2 ++ yarn-project/acir-simulator/src/client/simulator.ts | 1 + yarn-project/acir-simulator/src/public/index.test.ts | 4 ++-- yarn-project/types/src/tx/tx.test.ts | 1 - 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/yarn-project/acir-simulator/src/client/private_execution.test.ts b/yarn-project/acir-simulator/src/client/private_execution.test.ts index 05baae92d2e..30170bc9c4e 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.test.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.test.ts @@ -248,10 +248,10 @@ describe('Private Execution test suite', () => { ); }); - it('should run the create_note function', async () => { + it.only('should run the create_note function', async () => { const artifact = getFunctionArtifact(StatefulTestContractArtifact, 'create_note'); - const result = await runSimulator({ args: [owner, 140], artifact }); + const result = await runSimulator({ args: [owner, 140], artifact }); // this line expect(result.newNotes).toHaveLength(1); const newNote = result.newNotes[0]; diff --git a/yarn-project/acir-simulator/src/client/private_execution.ts b/yarn-project/acir-simulator/src/client/private_execution.ts index d2d43ca534d..90d81c92ddd 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.ts @@ -29,6 +29,7 @@ export async function executePrivateFunction( const acir = Buffer.from(artifact.bytecode, 'base64'); const initialWitness = context.getInitialWitness(artifact); const acvmCallback = new Oracle(context); + await AcirSimulator.getSolver(); const { partialWitness } = await acvm(await AcirSimulator.getSolver(), acir, initialWitness, acvmCallback).catch( (err: Error) => { throw new ExecutionError( @@ -43,6 +44,7 @@ export async function executePrivateFunction( }, ); + log(`got partialWitness, getting publicInputs`); // failing in line above const publicInputs = extractPrivateCircuitPublicInputs(partialWitness, acir); const encryptedLogs = context.getEncryptedLogs(); diff --git a/yarn-project/acir-simulator/src/client/simulator.ts b/yarn-project/acir-simulator/src/client/simulator.ts index b34093e983c..c1646f0440b 100644 --- a/yarn-project/acir-simulator/src/client/simulator.ts +++ b/yarn-project/acir-simulator/src/client/simulator.ts @@ -105,6 +105,7 @@ export class AcirSimulator { ); try { + // this is failing right now const executionResult = await executePrivateFunction( context, entryPointArtifact, diff --git a/yarn-project/acir-simulator/src/public/index.test.ts b/yarn-project/acir-simulator/src/public/index.test.ts index c23e07b9eff..7522b1a41f1 100644 --- a/yarn-project/acir-simulator/src/public/index.test.ts +++ b/yarn-project/acir-simulator/src/public/index.test.ts @@ -323,7 +323,7 @@ describe('ACIR public execution simulator', () => { const expectedNoteHash = pedersenHash([amount.toBuffer(), secretHash.toBuffer()]); const storageSlot = new Fr(5); // for pending_shields const expectedInnerNoteHash = pedersenHash([storageSlot.toBuffer(), expectedNoteHash]); - expect(result.newCommitments[0].toBuffer()).toEqual(expectedInnerNoteHash); + expect(result.newCommitments[0].value.toBuffer()).toEqual(expectedInnerNoteHash); }); it('Should be able to create a L2 to L1 message from the public context', async () => { @@ -445,7 +445,7 @@ describe('ACIR public execution simulator', () => { expect(result.newNullifiers.length).toEqual(1); const expectedNewMessageValue = pedersenHash(params.map(a => a.toBuffer())); - expect(result.newNullifiers[0].toBuffer()).toEqual(expectedNewMessageValue); + expect(result.newNullifiers[0].value.toBuffer()).toEqual(expectedNewMessageValue); }); }); }); diff --git a/yarn-project/types/src/tx/tx.test.ts b/yarn-project/types/src/tx/tx.test.ts index c3269505a96..3cfe2c1a4eb 100644 --- a/yarn-project/types/src/tx/tx.test.ts +++ b/yarn-project/types/src/tx/tx.test.ts @@ -4,7 +4,6 @@ import { Tx } from './tx.js'; describe('Tx', () => { it('convert to and from buffer', () => { const tx = mockTx(); - console.log(tx); const buf = tx.toBuffer(); expect(Tx.fromBuffer(buf)).toEqual(tx); }); From 7e0e9ffc0ed4a730466b4cfa032b06b748d37d75 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Fri, 15 Dec 2023 00:51:28 +0000 Subject: [PATCH 42/71] fix output notes --- yarn-project/pxe/src/kernel_prover/kernel_prover.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts index 5c7232f8f28..06ec0dd73dc 100644 --- a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts +++ b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts @@ -186,7 +186,7 @@ export class KernelProver { // Only return the notes whose commitment is in the commitments of the final proof. const finalNewCommitments = outputFinal.publicInputs.end.newCommitments; - const outputNotes = finalNewCommitments.map(c => newNotes[c.toString()]).filter(c => !!c); + const outputNotes = finalNewCommitments.map(c => newNotes[c.value.toString()]).filter(c => !!c); return { ...outputFinal, outputNotes }; } From ef300c963cbf08b1beafdc84be5e6399026d5f16 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Fri, 15 Dec 2023 06:59:12 +0000 Subject: [PATCH 43/71] add some logs, having trouble with some failing tests --- .../src/crates/types/src/abis/side_effect.nr | 9 --------- yarn-project/noir-protocol-circuits/src/index.ts | 3 +++ .../src/sequencer/public_processor.test.ts | 2 ++ .../sequencer-client/src/sequencer/public_processor.ts | 5 +++++ .../sequencer-client/src/simulator/public_kernel.ts | 2 ++ 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index b1b38da2ea6..e1ab150fe33 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -2,7 +2,6 @@ use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT}; struct SideEffect{ value: Field, - // counter is called "side_effect_counter" in david's PR counter: Field, } @@ -22,10 +21,6 @@ impl SideEffect { self.serialize() , GENERATOR_INDEX__SIDE_EFFECT) } - pub fn assert_is_empty(self){ - assert(self.is_empty()); - } - pub fn is_empty(self) -> bool { (self.value == 0) & (self.counter == 0) @@ -69,10 +64,6 @@ impl SideEffectLinkedToNoteHash{ GENERATOR_INDEX__SIDE_EFFECT) } - pub fn assert_is_empty(self){ - assert(self.is_empty()); - } - pub fn is_empty(self) -> bool { (self.value == 0) & (self.note_hash == 0) diff --git a/yarn-project/noir-protocol-circuits/src/index.ts b/yarn-project/noir-protocol-circuits/src/index.ts index 97671183a7c..8037d73a918 100644 --- a/yarn-project/noir-protocol-circuits/src/index.ts +++ b/yarn-project/noir-protocol-circuits/src/index.ts @@ -173,9 +173,12 @@ export async function executePublicKernelPublicPrevious( const params: PublicPrivatePreviousInputType = { input: mapPublicKernelInputs(publicKernelPrivateInputs), }; + console.log(`params: ${params}`); const returnType = await executePublicKernelPublicPreviousWithACVM(params); + console.log(`returnType: ${returnType}`); + return mapKernelCircuitPublicInputsFromNoir(returnType); } diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 21c7863789d..18c1d0ca34d 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -38,6 +38,7 @@ import { } from '@aztec/types'; import { MerkleTreeOperations, TreeInfo } from '@aztec/world-state'; +import { log } from 'console'; import { MockProxy, mock } from 'jest-mock-extended'; import times from 'lodash.times'; @@ -178,6 +179,7 @@ describe('public_processor', () => { }); const [processed, failed] = await processor.process([tx]); + log(failed); expect(processed).toHaveLength(1); expect(processed).toEqual([await expectedTxByHash(tx)]); diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.ts index fba66b0b797..9ee881f8ab9 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.ts @@ -164,6 +164,8 @@ export class PublicProcessor { ); tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs); + this.log('calling makeProcessedTx with 3 args'); + this.log(`${(await makeProcessedTx(tx, publicKernelOutput, publicKernelProof)).data.end.newCommitments}`); return makeProcessedTx(tx, publicKernelOutput, publicKernelProof); } else { return makeProcessedTx(tx); @@ -209,6 +211,7 @@ export class PublicProcessor { const callData = await this.getPublicCallData(result, isExecutionRequest); [kernelOutput, kernelProof] = await this.runKernelCircuit(callData, kernelOutput, kernelProof); + this.log('kernel circuit run without error'); if (!enqueuedExecutionResult) { enqueuedExecutionResult = result; @@ -231,7 +234,9 @@ export class PublicProcessor { previousProof: Proof, ): Promise<[KernelCircuitPublicInputs, Proof]> { const output = await this.getKernelCircuitOutput(callData, previousOutput, previousProof); + this.log(`output: ${output}`); const proof = await this.publicProver.getPublicKernelCircuitProof(output); + this.log(`proof: ${proof}`); return [output, proof]; } diff --git a/yarn-project/sequencer-client/src/simulator/public_kernel.ts b/yarn-project/sequencer-client/src/simulator/public_kernel.ts index dbbbe9fc268..1fd566aa7ea 100644 --- a/yarn-project/sequencer-client/src/simulator/public_kernel.ts +++ b/yarn-project/sequencer-client/src/simulator/public_kernel.ts @@ -41,6 +41,8 @@ export class RealPublicKernelCircuitSimulator implements PublicKernelCircuitSimu if (input.previousKernel.publicInputs.isPrivate) { throw new Error(`Expected public kernel previous inputs`); } + this.log(`calling executePublicKernelPublicPrevious(input)`); + this.log(`${input}`); const [duration, result] = await elapsed(() => executePublicKernelPublicPrevious(input)); this.log(`Simulated public kernel circuit non-first iteration`, { eventName: 'circuit-simulation', From 357bfd7b523033b22feccb9a243c16a181a2d2ac Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Fri, 15 Dec 2023 07:10:09 +0000 Subject: [PATCH 44/71] need to update e2e test output, but test fails --- yarn-project/noir-protocol-circuits/src/index.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn-project/noir-protocol-circuits/src/index.test.ts b/yarn-project/noir-protocol-circuits/src/index.test.ts index d3dd434b5b3..4a6afeae19b 100644 --- a/yarn-project/noir-protocol-circuits/src/index.test.ts +++ b/yarn-project/noir-protocol-circuits/src/index.test.ts @@ -292,6 +292,7 @@ describe('Private kernel', () => { it('Executes private kernel inner for a nested call', async () => { logger('Initialized Noir instance with private kernel init circuit'); + // TODO: need to update the serialized file for test to pass, but e2e fails currently const filepath = resolve( dirname(fileURLToPath(import.meta.url)), './fixtures/nested-call-private-kernel-inner.hex', From 2a1996717848884680856b1084bcf2ff227f4ad4 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Mon, 18 Dec 2023 22:16:56 +0000 Subject: [PATCH 45/71] fix to_typescript, but now hash mismatch --- yarn-project/circuits.js/src/abis/abis.ts | 3 +++ .../src/crates/types/src/abis/public_circuit_public_inputs.nr | 2 ++ yarn-project/noir-protocol-circuits/src/index.ts | 3 --- yarn-project/noir-protocol-circuits/src/type_conversion.ts | 4 ++-- .../sequencer-client/src/sequencer/public_processor.test.ts | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index bf87c469100..86355b0309a 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -625,6 +625,9 @@ function computeNullifierHash(input: SideEffectLinkedToNoteHash) { * */ function computePublicInputsHash(input: PublicCircuitPublicInputs) { + console.log(`newcommitments hashes ${input.newCommitments.map(computeCommitmentsHash)}`); + console.log(`newnullifier hashes ${input.newNullifiers.map(computeNullifierHash)}`); + const toHash = [ computeCallContextHash(input.callContext), input.argsHash.toBuffer(), diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index 0e50dd43d68..b68f56421b2 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -67,9 +67,11 @@ impl PublicCircuitPublicInputs{ inputs.push_array(self.public_call_stack_hashes); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ + std::println(self.new_commitments[i].hash()); inputs.push(self.new_commitments[i].hash()); } for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ + std::println(self.new_nullifiers[i].hash()); inputs.push(self.new_nullifiers[i].hash()); } inputs.push_array(self.new_l2_to_l1_msgs); diff --git a/yarn-project/noir-protocol-circuits/src/index.ts b/yarn-project/noir-protocol-circuits/src/index.ts index 8037d73a918..97671183a7c 100644 --- a/yarn-project/noir-protocol-circuits/src/index.ts +++ b/yarn-project/noir-protocol-circuits/src/index.ts @@ -173,12 +173,9 @@ export async function executePublicKernelPublicPrevious( const params: PublicPrivatePreviousInputType = { input: mapPublicKernelInputs(publicKernelPrivateInputs), }; - console.log(`params: ${params}`); const returnType = await executePublicKernelPublicPreviousWithACVM(params); - console.log(`returnType: ${returnType}`); - return mapKernelCircuitPublicInputsFromNoir(returnType); } diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index 470610ba32a..87fc51152d3 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -1118,8 +1118,8 @@ export function mapPublicCircuitPublicInputsToNoir( ), contract_storage_reads: mapTuple(publicInputs.contractStorageReads, mapStorageReadToNoir), public_call_stack_hashes: mapTuple(publicInputs.publicCallStackHashes, mapFieldToNoir), - new_commitments: mapTuple(publicInputs.newCommitments, mapFieldToNoir), - new_nullifiers: mapTuple(publicInputs.newNullifiers, mapFieldToNoir), + new_commitments: mapTuple(publicInputs.newCommitments, mapSideEffectToNoir), + new_nullifiers: mapTuple(publicInputs.newNullifiers, mapSideEffectLinkedToNoir), new_l2_to_l1_msgs: mapTuple(publicInputs.newL2ToL1Msgs, mapFieldToNoir), unencrypted_logs_hash: mapTuple(publicInputs.unencryptedLogsHash, mapFieldToNoir), unencrypted_log_preimages_length: mapFieldToNoir(publicInputs.unencryptedLogPreimagesLength), diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 18c1d0ca34d..8804dcb7264 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -153,7 +153,7 @@ describe('public_processor', () => { proof, }); - it('runs a tx with enqueued public calls', async function () { + it.only('runs a tx with enqueued public calls', async function () { const callRequests: PublicCallRequest[] = [makePublicCallRequest(0x100), makePublicCallRequest(0x100)]; const callStackItems = callRequests.map(call => call.toCallRequest()); From 27a3b92f8a2ccfa8e644d7088c668732f168c3cb Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 21 Dec 2023 00:37:17 +0000 Subject: [PATCH 46/71] starting to pin down hash mismatch in PublicCircuitPublicInputs --- .../src/abis/__snapshots__/abis.test.ts.snap | 4 ++ .../circuits.js/src/abis/abis.test.ts | 37 +++++++++++++++++++ yarn-project/circuits.js/src/abis/abis.ts | 9 ++--- .../circuits.js/src/structs/call_request.ts | 2 +- .../crates/public-kernel-lib/src/common.nr | 9 +++++ .../crates/types/src/abis/call_stack_item.nr | 12 +++++- .../src/abis/public_circuit_public_inputs.nr | 2 - .../noir-protocol-circuits/src/index.ts | 1 + .../src/noir_test_gen.test.ts | 15 ++++++++ .../src/sequencer/public_processor.test.ts | 3 ++ .../src/sequencer/public_processor.ts | 7 ++++ .../src/simulator/public_kernel.ts | 1 + 12 files changed, 91 insertions(+), 11 deletions(-) diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index 31b9231fecc..b142158b303 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -1,5 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`abis Computes an empty nullifier hash 1`] = `"0x066e6cdc4a6ba5e4781deda650b0be6c12f975f064fc38df72c1060716759b17"`; + +exports[`abis Computes an empty sideeffect hash 1`] = `"0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed"`; + exports[`abis compute globals hash 1`] = ` Fr { "asBigInt": 19996198784166720428914107076917074510032365849254400404611644441094528984289n, diff --git a/yarn-project/circuits.js/src/abis/abis.test.ts b/yarn-project/circuits.js/src/abis/abis.test.ts index d49af99b41b..5d88cdfc0e2 100644 --- a/yarn-project/circuits.js/src/abis/abis.test.ts +++ b/yarn-project/circuits.js/src/abis/abis.test.ts @@ -8,6 +8,10 @@ import { FunctionSelector, GlobalVariables, NewContractData, + PublicCallStackItem, + PublicCircuitPublicInputs, + SideEffect, + SideEffectLinkedToNoteHash, } from '../index.js'; import { makeAztecAddress, @@ -21,6 +25,7 @@ import { import { computeBlockHashWithGlobals, computeCommitmentNonce, + computeCommitmentsHash, computeCompleteAddress, computeContractAddressFromPartial, computeContractLeaf, @@ -28,10 +33,12 @@ import { computeFunctionSelector, computeFunctionTreeRoot, computeGlobalsHash, + computeNullifierHash, computePrivateCallStackItemHash, computePublicCallStackItemHash, computePublicDataTreeLeafSlot, computePublicDataTreeValue, + computePublicInputsHash, computeSecretMessageHash, computeTxHash, computeUniqueCommitment, @@ -225,4 +232,34 @@ describe('abis', () => { const hash = computeSecretMessageHash(value); expect(hash).toMatchSnapshot(); }); + + it('Computes an empty nullifier hash ', () => { + const emptyNull = SideEffectLinkedToNoteHash.empty(); + + const emptyHash = Fr.fromBuffer(computeNullifierHash(emptyNull)).toString(); + expect(emptyHash).toMatchSnapshot(); + }); + + it('Computes an empty sideeffect hash ', () => { + const emptySideEffect = SideEffect.empty(); + const emptyHash = Fr.fromBuffer(computeCommitmentsHash(emptySideEffect)).toString(); + expect(emptyHash).toMatchSnapshot(); + }); + + it('Computes an empty call request hash ', () => { + const emptycallstack = PublicCallStackItem.empty(); + const emptyHash = emptycallstack.hash(); + // const emptySideEffect = PublicCircuitPublicInputs.empty(); + // const emptyHash = Fr.fromBuffer(computePublicInputsHash(emptySideEffect)).toString(); + expect(emptyHash.toString()).toEqual('0x23d61bd55cb4c93f3e1a2efe3fd17026e9b4e5ade0a32c69219e25621340745e'); + }); + + it('Computes an empty public inputs hash ', () => { + const publicInputs = PublicCircuitPublicInputs.empty(); + const emptyHash = computePublicInputsHash(publicInputs); + + expect(Fr.fromBuffer(emptyHash).toString()).toEqual( + '0xe6f5767edbd34ede7b3693186a3b0a49f1b266470003ee1385dd5d77b48d9e', + ); + }); }); diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index 86355b0309a..68142b7e8e2 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -607,14 +607,14 @@ function computeContractStorageReadsHash(input: ContractStorageRead) { /** * */ -function computeCommitmentsHash(input: SideEffect) { +export function computeCommitmentsHash(input: SideEffect) { return pedersenHash([input.value.toBuffer(), input.counter.toBuffer()], GeneratorIndex.SIDE_EFFECT); } /** * */ -function computeNullifierHash(input: SideEffectLinkedToNoteHash) { +export function computeNullifierHash(input: SideEffectLinkedToNoteHash) { return pedersenHash( [input.value.toBuffer(), input.noteHash.toBuffer(), input.counter.toBuffer()], GeneratorIndex.SIDE_EFFECT, @@ -624,10 +624,7 @@ function computeNullifierHash(input: SideEffectLinkedToNoteHash) { /** * */ -function computePublicInputsHash(input: PublicCircuitPublicInputs) { - console.log(`newcommitments hashes ${input.newCommitments.map(computeCommitmentsHash)}`); - console.log(`newnullifier hashes ${input.newNullifiers.map(computeNullifierHash)}`); - +export function computePublicInputsHash(input: PublicCircuitPublicInputs) { const toHash = [ computeCallContextHash(input.callContext), input.argsHash.toBuffer(), diff --git a/yarn-project/circuits.js/src/structs/call_request.ts b/yarn-project/circuits.js/src/structs/call_request.ts index 845318155af..185c48ef27a 100644 --- a/yarn-project/circuits.js/src/structs/call_request.ts +++ b/yarn-project/circuits.js/src/structs/call_request.ts @@ -134,7 +134,7 @@ export class CallRequest { * @returns A new instance of CallRequest with zero hash, caller contract address and caller context. */ public static empty() { - return new CallRequest(Fr.ZERO, AztecAddress.ZERO, CallerContext.empty(), new Fr(0), new Fr(0)); + return new CallRequest(Fr.ZERO, AztecAddress.ZERO, CallerContext.empty(), Fr.ZERO, Fr.ZERO); } equals(callRequest: CallRequest) { diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 881b6d66814..81a5070e81c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -286,6 +286,15 @@ pub fn accumulate_unencrypted_logs(public_call: PublicCallData, // TODO: this logic might need to change to accommodate the weird edge 3 initial txs (the 'main' tx, the 'fee' tx, // and the 'gas rebate' tx). let call_stack_item = public_call.call_stack_item; + + // let emptycallstackitem: PublicCallStackItem = dep::std::unsafe::zeroed(); + let publiccircuitinputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); + dep::std::println(publiccircuitinputs.hash()); + // dep::std::println(call_stack_item); + // let empty = CallRequest::empty(); + // dep::std::println(emptycallstackitem.hash()); + // dep::std::println(call_stack_item.hash()); + // dep::std::println(call_stack_item); assert(request.hash == call_stack_item.hash(), "calculated public_kernel_inputs_hash does not match provided public_kernel_inputs_hash at the top of the call stack"); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr index 201ae8b307d..31525596ebe 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr @@ -60,12 +60,20 @@ impl PublicCallStackItem { let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); request_public_inputs.call_context = public_inputs.call_context; request_public_inputs.args_hash = public_inputs.args_hash; + // request_public_inputs.new_commitments = public_inputs.new_commitments; + // request_public_inputs.new_nullifiers= public_inputs.new_nullifiers; + // dep::std::println(public_inputs.new_nullifiers[0].hash()); + // dep::std::println(request_public_inputs.new_commitments[0].hash()); + // dep::std::println(request_public_inputs.new_commitments[0].hash()); - PublicCallStackItem { + let call_stack_item = PublicCallStackItem { contract_address: self.contract_address, function_data: self.function_data, is_execution_request: true, public_inputs: request_public_inputs, - } + }; + // let emptyCallHash = call_stack_item.hash(); + // dep::std::println(emptyCallHash); + call_stack_item } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr index b68f56421b2..0e50dd43d68 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr @@ -67,11 +67,9 @@ impl PublicCircuitPublicInputs{ inputs.push_array(self.public_call_stack_hashes); for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{ - std::println(self.new_commitments[i].hash()); inputs.push(self.new_commitments[i].hash()); } for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ - std::println(self.new_nullifiers[i].hash()); inputs.push(self.new_nullifiers[i].hash()); } inputs.push_array(self.new_l2_to_l1_msgs); diff --git a/yarn-project/noir-protocol-circuits/src/index.ts b/yarn-project/noir-protocol-circuits/src/index.ts index 89954211e99..0ea0873fd38 100644 --- a/yarn-project/noir-protocol-circuits/src/index.ts +++ b/yarn-project/noir-protocol-circuits/src/index.ts @@ -318,6 +318,7 @@ async function executePublicKernelPrivatePreviousWithACVM( const initialWitnessMap = abiEncode(PublicKernelPrivatePreviousSimulatedJson.abi as Abi, input as any); const decodedBytecode = Buffer.from(PublicKernelPrivatePreviousSimulatedJson.bytecode, 'base64'); // Execute the circuit + console.log(JSON.stringify(input)); const _witnessMap = await executeCircuitWithBlackBoxSolver( await getSolver(), decodedBytecode, diff --git a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts index ecb37e3a8d2..0cb5fe09e51 100644 --- a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts +++ b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts @@ -21,6 +21,21 @@ import { MerkleTreeId } from '@aztec/types'; import { default as levelup } from 'levelup'; import memdown from 'memdown'; +// TODO: generate a public call, hash it, assert it is the same as in noir +// this creates the snapshot, take it to Noir. hard code it into a Noir test +// (can't read from snapshot in noir). build noir data structure here, +// can use type conversion methods to convert call stack items to build noir stack item. +// do snapshot. +// start with empty, see if hash is same for empty call request. easy because +// noir has unsafe::zerod to get empty version. + +// yarn test -u to update +// "yarn test" should generate if not present. + +// nargo test has a command to show the output of prints +// also has "--exact" with fully qualified path of test to only run that one +// nargo test will show all of those fully qualified paths. + describe('Data generation for noir tests', () => { const defaultContract = { address: AztecAddress.fromField(new Fr(12345)), diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 8804dcb7264..b80da885d25 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -157,6 +157,9 @@ describe('public_processor', () => { const callRequests: PublicCallRequest[] = [makePublicCallRequest(0x100), makePublicCallRequest(0x100)]; const callStackItems = callRequests.map(call => call.toCallRequest()); + // generate a call request, print hash of a call request + // do the test also also in noir. has to be the call request hash mismatching + // can also build a snapshot on TS side const kernelOutput = makePrivateKernelPublicInputsFinal(0x10); kernelOutput.end.publicCallStack = padArrayEnd( callStackItems, diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.ts index 9ee881f8ab9..b0086607d87 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.ts @@ -159,6 +159,7 @@ export class PublicProcessor { protected async processTx(tx: Tx): Promise { if (!isArrayEmpty(tx.data.end.publicCallStack, item => item.isEmpty())) { + this.log('calling processEnqueuedCalls'); const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs] = await this.processEnqueuedPublicCalls( tx, ); @@ -168,6 +169,7 @@ export class PublicProcessor { this.log(`${(await makeProcessedTx(tx, publicKernelOutput, publicKernelProof)).data.end.newCommitments}`); return makeProcessedTx(tx, publicKernelOutput, publicKernelProof); } else { + this.log('calling makeProcessedTx with 1 args'); return makeProcessedTx(tx); } } @@ -193,6 +195,7 @@ export class PublicProcessor { // TODO(dbanks12): why must these be reversed? const enqueuedCallsReversed = tx.enqueuedPublicFunctionCalls.slice().reverse(); for (const enqueuedCall of enqueuedCallsReversed) { + this.log(`reversed and found ${enqueuedCall.toCallRequest().hash.toString()}`); const executionStack: (PublicExecution | PublicExecutionResult)[] = [enqueuedCall]; // Keep track of which result is for the top/enqueued call @@ -210,6 +213,8 @@ export class PublicProcessor { executionStack.push(...result.nestedExecutions); const callData = await this.getPublicCallData(result, isExecutionRequest); + this.log(`${callData.publicCallStack[0].hash.toString()} callstack[0] hash}`); + this.log(`${callData.publicCallStack[3].hash.toString()} callstack[3] hash}`); [kernelOutput, kernelProof] = await this.runKernelCircuit(callData, kernelOutput, kernelProof); this.log('kernel circuit run without error'); @@ -249,6 +254,8 @@ export class PublicProcessor { // Run the public kernel circuit with previous private kernel const previousKernel = this.getPreviousKernelData(previousOutput, previousProof); const inputs = new PublicKernelInputs(previousKernel, callData); + this.log('in getKernelCircuitOutput'); + this.log(callData.publicCallStack[0].hash.toString()); return this.publicKernel.publicKernelCircuitPrivateInput(inputs); } else if (previousOutput && previousProof) { // Run the public kernel circuit with previous public kernel diff --git a/yarn-project/sequencer-client/src/simulator/public_kernel.ts b/yarn-project/sequencer-client/src/simulator/public_kernel.ts index 1fd566aa7ea..dad6c333138 100644 --- a/yarn-project/sequencer-client/src/simulator/public_kernel.ts +++ b/yarn-project/sequencer-client/src/simulator/public_kernel.ts @@ -21,6 +21,7 @@ export class RealPublicKernelCircuitSimulator implements PublicKernelCircuitSimu if (!input.previousKernel.publicInputs.isPrivate) { throw new Error(`Expected private kernel previous inputs`); } + this.log(`calling executePublicKernelPrivatePrevious`); const [duration, result] = await elapsed(() => executePublicKernelPrivatePrevious(input)); this.log(`Simulated public kernel circuit with private input`, { eventName: 'circuit-simulation', From 80efea3e2ad4a21e93ba7b02a6ce8c54f8511981 Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 21 Dec 2023 00:45:44 +0000 Subject: [PATCH 47/71] fix bad typesript hash on callrequest --- .../src/abis/__snapshots__/abis.test.ts.snap | 130 +++++++++--------- .../circuits.js/src/abis/abis.test.ts | 6 +- yarn-project/circuits.js/src/abis/abis.ts | 2 + 3 files changed, 71 insertions(+), 67 deletions(-) diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index b142158b303..2a02fa564a1 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -1,7 +1,11 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`abis Computes an empty call request hash 1`] = `"0x23d61bd55cb4c93f3e1a2efe3fd17026e9b4e5ade0a32c69219e25621340745e"`; + exports[`abis Computes an empty nullifier hash 1`] = `"0x066e6cdc4a6ba5e4781deda650b0be6c12f975f064fc38df72c1060716759b17"`; +exports[`abis Computes an empty public inputs hash 1`] = `"0x00e6f5767edbd34ede7b3693186a3b0a49f1b266470003ee1385dd5d77b48d9e"`; + exports[`abis Computes an empty sideeffect hash 1`] = `"0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed"`; exports[`abis compute globals hash 1`] = ` @@ -49,41 +53,41 @@ Fr { exports[`abis compute private call stack item hash 1`] = ` Fr { - "asBigInt": 13809192571322547240575515130918617158374968996681790502325202985787581532861n, + "asBigInt": 21258776147658849049551319694176270824260664326844106524017019530676633919336n, "asBuffer": { "data": [ - 30, - 135, - 185, - 220, - 55, - 60, - 119, - 134, - 22, - 123, - 87, - 99, - 43, - 234, - 86, - 169, - 206, - 146, - 188, - 13, - 134, - 227, - 190, - 25, - 44, - 67, - 75, - 122, - 160, - 244, + 47, + 0, 10, - 189, + 120, + 110, + 9, + 128, + 107, + 153, + 251, + 80, + 226, + 79, + 7, + 7, + 251, + 46, + 64, + 163, + 155, + 61, + 190, + 215, + 183, + 65, + 26, + 99, + 172, + 218, + 32, + 223, + 104, ], "type": "Buffer", }, @@ -92,41 +96,41 @@ Fr { exports[`abis compute public call stack item hash 1`] = ` Fr { - "asBigInt": 6223289183536253521779927953358130745841073382012179962378917401223198931043n, + "asBigInt": 16804043213184589080619269242419543621552532999831626309510240938477196171874n, "asBuffer": { "data": [ - 13, - 194, - 65, - 193, - 43, - 185, - 1, - 164, - 96, - 75, - 0, - 90, - 150, - 55, - 137, - 42, - 2, - 88, - 48, + 37, + 38, 192, 92, - 40, - 188, - 171, - 210, - 158, - 30, - 216, - 251, - 47, - 248, - 99, + 109, + 120, + 44, + 208, + 27, + 110, + 25, + 141, + 60, + 78, + 9, + 239, + 230, + 96, + 227, + 142, + 36, + 230, + 226, + 109, + 232, + 196, + 1, + 178, + 116, + 88, + 90, + 98, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/abis/abis.test.ts b/yarn-project/circuits.js/src/abis/abis.test.ts index 5d88cdfc0e2..72b95f5d828 100644 --- a/yarn-project/circuits.js/src/abis/abis.test.ts +++ b/yarn-project/circuits.js/src/abis/abis.test.ts @@ -251,15 +251,13 @@ describe('abis', () => { const emptyHash = emptycallstack.hash(); // const emptySideEffect = PublicCircuitPublicInputs.empty(); // const emptyHash = Fr.fromBuffer(computePublicInputsHash(emptySideEffect)).toString(); - expect(emptyHash.toString()).toEqual('0x23d61bd55cb4c93f3e1a2efe3fd17026e9b4e5ade0a32c69219e25621340745e'); + expect(emptyHash.toString()).toMatchSnapshot(); }); it('Computes an empty public inputs hash ', () => { const publicInputs = PublicCircuitPublicInputs.empty(); const emptyHash = computePublicInputsHash(publicInputs); - expect(Fr.fromBuffer(emptyHash).toString()).toEqual( - '0xe6f5767edbd34ede7b3693186a3b0a49f1b266470003ee1385dd5d77b48d9e', - ); + expect(Fr.fromBuffer(emptyHash).toString()).toMatchSnapshot(); }); }); diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index 68142b7e8e2..b010826d723 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -518,6 +518,7 @@ function computeCallContextHash(input: CallContext) { boolToBuffer(input.isDelegateCall, 32), boolToBuffer(input.isStaticCall, 32), boolToBuffer(input.isContractDeployment, 32), + input.startSideEffectCounter.toBuffer(), ], GeneratorIndex.CALL_CONTEXT, ); @@ -646,6 +647,7 @@ export function computePublicInputsHash(input: PublicCircuitPublicInputs) { input.blockHeader.globalVariablesHash.toBuffer(), input.proverAddress.toBuffer(), ]; + console.log(`toHash: ${toHash.map(x => Fr.fromBuffer(x).toString())}`); if (toHash.length != PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH) { throw new Error('Incorrect number of input fields when hashing PublicCircuitPublicInputs'); } From be6b215850d9eac93f3316655d1384a4051af74d Mon Sep 17 00:00:00 2001 From: dan-aztec Date: Thu, 21 Dec 2023 01:13:43 +0000 Subject: [PATCH 48/71] update snapshots --- .../src/artifacts/ecdsa_account_contract.json | 12 ++++++------ .../src/artifacts/schnorr_account_contract.json | 12 ++++++------ .../schnorr_single_key_account_contract.json | 8 ++++---- yarn-project/circuits.js/src/abis/abis.test.ts | 2 -- yarn-project/circuits.js/src/abis/abis.ts | 1 - .../src/__snapshots__/index.test.ts.snap | 4 +--- .../src/__snapshots__/index.test.ts.snap | 4 ++-- yarn-project/noir-protocol-circuits/src/index.ts | 1 - .../noir-protocol-circuits/src/noir_test_gen.test.ts | 3 ++- .../src/sequencer/public_processor.test.ts | 2 +- 10 files changed, 22 insertions(+), 27 deletions(-) diff --git a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json index cbd4332cd1e..b725f88291e 100644 --- a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json @@ -48,7 +48,7 @@ } } ], - "bytecode": "H4sIAAAAAAAA/+3dCZwVxZ0H8H7zhpnp15hsDpNsTnLfZmaQHBuzeSbZnJusMcnGHBtFAWNWRWG8Em+N932LouJ9oXjjhaiIiqKAeKIwICDIjRzCJrpUv/4xvylqnq8y/3J6Mv/+fObzuqur6/+t6u56fbzp7h9FUSGqDMVNf/XRlgPml7PP5u4NLQW5sppDOut6ibMo6DS2flHY9V8foF2ljf16gbGhFxgbe4GxKZLdf2BEXxpv+itt+ks2/fXf9Lc26Ui3+1uT1s+qp0lryMbrKK0xGy9mnyZPk3DbNJBNqMxBDfLrsDmmtuF2R9v0i7Zs8wZHmzc62ryJyngnzY+sdfKObJmthNeBidU/6jwUrOkyjW9F9XuHrKU5Ics7KM6/BKjzO6Pa64z4CS3HvncH8L3Lw/du8r3L4XtvAN97PHzvJcvWspZ0m4Fla4rz/gB1fl9Ue53fT5YPBKgzLB+gOB8MUOd/jWqvM+IntBz7PhzA9yEP34fJ9yGH76MBfB/x8H2UfFiO9+MBAXwf8/ANIN/HHL5PBPB93MP3CfJ93OH7VADfJz18nyLfJx2+zwTwfdrD9xnyfdrh+1wA32c9fJ8j32cdvi8E8H3ew/cF8n3e4ftSAN8XPXxfIt8XHb5tAvi+7OHbhnxfdviaA/i+4uFrJt9XHL7WAL4WD18r+Vocvm0D+AZ6+LYl30CH76uyvlbjG+Th+ypZviFr2dZYvuZh+QZZvi5rSc+7/022zHTX+Cb5UVfESWg+r/NvCtetQDFRLqbZp9a+bTWWQZYzpnyDcuBD2tcDWmLLYoZq/ZLLx+vyW7K+tA/fzsP3LbKURS0D0+uA/+5hKZPl26KWSh++vWyZaR/+HfKjroiT0Hxe598RrluBYqJcTLNPrWpVq1rVqla1qlWtalWrWtWqVrWqVa1qVata1apWtapVrWpVq1rVqla1yluNZTvLGVO+7XLgQ9q3A1piy2KGgjVdpnGXj9fl92R96W9qvuvh+x5ZfiBqaU1/U/MfHpYfkOX7opbKb2p+KFtm+puaH5EfdUWchObzOv+RcN0KFBPlYpp9alWrWtWqVrWqVa1qVata1apWtapVrWpVq1rV2lusxvJdyxlTvu/mwIe07we0xJbFDNWus7t8vC5/IutL70n82MP3E7L8TNaSPqvhPz0sPyPLT2Ut6T2J/5ItM70nsQP5UVfESWg+r/MdhOtWoJgoF9PsU2vfthrLjy1nTPl+nAMf0n4a0BJbFjNU65dcPl6XO8r60j785x6+HcnyK1FLS3pf+Rcell+R5Zeilkof/t+yZaZ9+K/Jj7oiTkLzeZ3/WrhuBYqJcjHNPrWqVa1qVata1apWtfZtq7H83HLGlO/nOfAh7ZcBLbFlMUO18xSXj9flb2R96TndTh6+35Dl96KWyjndbz0svyfL70QtlXO6/5EtMz2n+wP5UVfESWg+r/M/CNetQDFRLqbZp1a1qlWtalWrWtWq1r5tNZadLGdM+XbKgQ9pvwtoiS2LGaqdp7h8vC53kfWl53Q7e/h2IctuASyDPSy7kWVXWUt6TjdEtsz0nG4o+VFXxEloPq/zocJ1K1BMlItp9vUWq7HsbDljyrdzDnxI2zWgJbYsZqi2/7h8vC53l/Wl+/cwD9/uZPlTAMsfPSx/Issespa0r/lf2TLTvmZP8qOuiJPQfF7newrXrUAxUS6m2ddbrMYyzHLGlG9YDnxI2yOgJbYsZqi2/7h8vC73DuDby8O3N/n2cvj2CeAb7uHbh3zDHb4RAXz7evhGkG9fh68tgG+kh6+NfCMdvv0D+Pbz8O1Pvv0cvgMD+A7w8B1IvgMcvj8H8B3k4fsz+Q5y+A4O4PuLh+9g8v3F4Ts0gO8QD9+h5DvE4Ts8gO8wD9/h5DvM4TsygO8ID9+R5DvC4Ts6gO8oD9/R5DvK4TsmgO+vHr5jyIfl+B3uxwXwHevhO458WI7fF35CAN/xHr4TyHe8w3dSAN+JHr6TyHeiw3dKAN/JHr5TyIfleP84LYDvVA/faeQ71eE7I4DvdA/fGeQ73eE7K4DvTA/fWeQ70+E7J4DvbA/fOeQ72+E7L4DvXA/feeQ71+EbFcB3vodvFPnOd/guDOC7wMN3IfkucPguCuAb7eG7iHyjHb5LAvgu9vBdQr6LHb5LA/jGePguJd8Yh+/yAL7LPHyXk+8yh+/KAL4rPHxXku8Kh+/qAL6rPHxXk+8qh+/aAL5rPHzXku8ah+/6AL7rPHzXk+86h+8GWV96fX+sh+8Gstwka0n/h/xGD8tNZBkna0nvNdwsW2Z6r+EW8qOuiJPQfF7ntwjXrUAxUS6m2afWvm01lrGWM6Z8Y3PgQ9q4gJbYspihWr/k8vG6vE3Wl/bht3r4biPLeFFL5dnkt3tYxpPlDlFLpQ+/U7bMtA+/i/yoK+IkNJ/X+V3CdStQTJSLafapVa1qVata1apWtapVrWpVq1rVqla1qlWtalVrb7Eay62WM6Z8t+bAh7Q7Alpiy2KGatfZXT5el/fI+tJ7End7+O4hy32ilso9iXs9LPeRZYKopXJPYqJsmek9ifvJj7oiTkLzeZ3fL1y3AsVEuZhmn1rVqla1qlWtalWrWtWqVrWqVa1qVata1apWtfYWq7HcbTljynd3DnxImxDQElsWMxSs6TKNu3y8Lh+U9aX3JB7w8D1Ilsmilsp7GSZ5WCaT5SFRS+WexMOyZab3JB4hP+qKOAnN53X+iHDdChQT5WKafWpVq1rVqla1qlWtau3bVmN5wHLGlO+BHPiQ9lBAS2xZzFDtPMXl43U5RdaXntM96uGbQpapopbKOd1jHpapZHlc1FI5p3tCtsz0nO5J8qOuiJPQfF7nTwrXrUAxUS6m2adWtapVrWpVq1rVqta+bTWWRy1nTPkezYEPaY8HtMSWxQzVzlNcPl6X02V96TndNA/fdLLMFLVUzulmeFhmkuUpUUvlnO5p2TLTc7pnyI+6Ik5C83mdPyNctwLFRLmYZp9a1apWtapVrWpVq1r7ttVYplnOmPJNy4EPaU8FtMSWxQzVzlNcPl6Xz8n60nO6Zz18z5Fllqwlfc/A8x6WWWR5QdaSntO9KFtmek73EvlRV8RJaD6v85eE61agmCgX0+xTa9+2GsuzljOmfM/mwIe0FwJaYstihmr9ksvH63KOrC/tw2d7+OaQZZ6sJe3D2z0s88gyV9aS9uEvy5aZ9uHzyd+efSJOQvN5nc8XrluBYqJcTLNPrX3baiyzLWdM+WbnwIe0uQEtsWUxQ7V+yeXjdbkwGy9nn83dG9I+fEHUeajmW0iWxQEsr3hYFpNlkawl7cNflS0z7cOXkB91RZyE5vM6XyJctwLFRLmYZl9vsRrLAssZU74FOfAhbVFAS2xZzFBt/3H5eF0uC+Bb6uFbRr6lDt+KAL7lHr4V5Fvu8K0K4Fvp4VtFvpUO32sBfKs9fK+Rb7XDtzaAb42Hby351jh86wP41nn41pNvncO3IYDvdQ/fBvK97vD9n7DPlLExK6s++4soTpHmNzZUPrfKLBuFLYWsXG4XTG+kNuipuH+TjZseu22MOg/Vto2/keVNWcsgY/m7h+VNsrwha0mPIxFcqMz0OLJAFfq7VcmE5vP+VpB1pNsaN2yZptmnVrX2FquxbLScMeXbmAMf0t4gX2PUuf3Md982DR3W1yNR6yBD2EBtcRgZEKtIecYlHa7WzFWi+RupLuujLdt6naw/bWvEQbmYRqwS1WU9WaSP+wpR5+OqchdxhdugldsaQ7XvyXVkkT13qDyTf62H5TWyrBG1VL6zV8uW2RzgfDA9DuDzQbQf7Hzet4raa6VwexWizud9ZZpmn1rVqla1qlWtalWrWtWqVrWqVa1qVata1apWtfYWq7Gst5z8G5j1OfAhbU04S6vv735WkkX2N2aV+wgrPCzLyLJc1FK5j7BUtsxmU8YS8qOuiMO/y+T9I8TvHpdabYrprn5Dqla1qlWtalWrWtWqVrWqVa1qVata1apWtapVrXm2Gstqy8n/17w6Bz6kLQ9nSa9D8/+ab7AcJXK8Sg7RZyq0VH5XL/sciso9BPyfPso2aQutNBN7gWjsyv/Y+jwDYyH58OyQpeSbJ+trNpa5VH6ZYvCzQdqF24XjFrI/xEB6kcb3auzIi3zmf4/eoHZ6lcrDs6nqsjztjjwv0ziXg2XtcaxHtE9C87ms+W/ha4jEn92Vtuc8spZpeg55dmnsMAg/G6eV27Q+Kxfb0PxwdW/mbQLbsL1eTPrsAG2OuNiG7WckFWn8KPxDXdT5OWvYrmAuUXshn+kPXPtliDrNozqVaXo2pXeVh/cXVx3nUR3nOvJVa5eE5s+tMQ4vw9tgiHbjupdpGrHMPrEP7X/CfXlqWGAZFljtEeI7xGybTVYcU9fjqK6yz/5oGWbqyv+/WCYDYhUpz8FJh+ukzFWi+fhtBz9ThH/vIf1slULU+dklZZpGrBLVZU1AiyljFVk2OByIz8frov//mB37yf6WpfPvR1C2SVtmpQX4bYf384eWkQ/H3bzehZ/Pln5v8vOryhSDf0fzinC7cFx8byIG0os0fi0d+yEfjq3s80iTB9+POPZ7xZGHjwO5HCxrj2M9on0Sms9lLXkLX0Mk/sy/tD0Xk7VM0wvJM5r6Y+Hzx1ZuUxz7YRtaEq7uzbxNYBu210uI8zqOi23YfmZdkcYn0rEff0dju4K5RO2FfKY/cO2XIeq0mOpUpukFlN5VHt5fXHVcTHVc5MhXrV0Smr+oxji8DG+DIdqN616macQy+8RY2v+En2/Z7OoDVljtJb/fV47D7O+QJdZ6CNXnYf/uF1W2RTgQq0h5Hsnafqtsmq/JYLvha12vWvnkz5db0+Md4edKp8dyfAyO48eXqU0w/8nGjnzTs3G+XrWOyml3zMdQ7ZiGz7naZevazOdc2PbaHXFDnuvZ5/1IL9L4nC7O+9G+7dmnzzkxlnGdE4e+1oFy2y2f2U5m0jbVTv2ddJ/L9eV24evmmM/PuF1v5efrKny+J71fVrs+x8/7RtqCcJZWUwY/d3yD5SiRYz61E8b5PKrdSgtxbdPE4XVthmp9Tjv5sG3y9Q/p97EYC79Dpkwx2ild+t0yHBf9EGIgvUjjb9J5FPLhPAXtxOdIeFcHzqNecOR5ica5HH7/Do9jPfJ7SjCfy5r9Fr4GWq6cfTZ3b6j6rpDnybOa+jXhfraV2xTnUe3Z9OxwdW/mbQLbsL1eTLrwe6NaOC62YcRAepHGt8ZFPspnBmxXMJeovZCP37/SHrhOL1KdyjT9HKV3lYf3F1cdX6Q6znLkq9YuCc2fVWMcXoa3wRDtxnUv0zRimX2irqnDINyXV72O/2IULG56nTK24pi6fpDq+nZcQ4fBdQ39h3QN/aOZi6+h47cSfA2dfz/xT3wNfaApQ6+h6zX0cpTPa+jbNXXk1Wvo7vas5Rr6V6g/1mvo3Rq8r6HvSMd+eg29b15D/zbtf3oNvXuBfa+h/zZre72G3jF/cFNHvt2y8a6uoY9wzMeg19CrX0Pfl/r+f/Zr6MNomxpB/V1erqGvtvLzNXQ+38vLNXS+ns2/85pvpTVE8u+O5d8Do1xMzyWf/T5L+b6ytvdohorb1e8S54dr+21NGe0Ud4Oj3RG/nRztb2O7c9wQ73NujzoP1b5n+HsgRN/X1TbA1xSF37nt/U5rvtY9S7gN+PpzLRa+pyR9r8NYXvCwPE+WZwNYnvOw8Pvinw5gecbD8jRZngpgmelheYosM4Qt1fqwGYHjdtVvhI6b1/qaY5z2bBzHNTHNbyff9AC+GZYP09PJhzQ+LkM//IrDPDtH5gWUhv6a3+ONfrOO0tB/FSkN/Ug91U14e2k2cdBHzAjchl3tD9MDx+1qfwgdN8/1nSYcN6byMVT7rplGlidlLek2DcuTFGdqgDo/EdVeZ8RPaDn2PRbA97iH7zGyTBG2JGSZQnEeDVDnUlYWyjb95zS6DiJ7ntjazNeecQ0MBsQqUp7P0H3wmcFcLcNMGfxbhHmWqUQm5ItpfCEty7/1eMVRzktWvpjGX6J8OA+YTmk4Hsc+EeBYOH0HMI61MdR6LDxT1tIS4nvclDGN/KgrH/NhPp+LSX8PVDtWYl+t1jm9yPpsL7LO6kXW+T1sDbG/BjjuGdQ/qvwPM9rySatNuT7CxxrpdTIc32Co9VjjcVlLS4Djl7R/fZT8qCviJFHn4w3UTfr4pkAxUS6m2VerdVoPWwPEbcV+MNWKNcNqBxN7snBssx88EnUequ0Hk8nysKwl3Q8eki0z3Q8mkR91RZyE5tdR3SYJ161AMVEuptlXq3VKD1sDrKttTZkPypa5ed9CWz5otSnXZ6JwbLNvPRB1HqrtWxPJcr+sJd237pMtM923JpAfdUWchOYXqW4ThOtWoJgoF9Psq9U6qYetAdbVQFPmvbJlbt630Jb3Wm2K+phz5nuy8fbs0+wbd1lpxnhngPZGHJSL6TvJd3c2fhelYZyfSTXeSjPmOwKYx1tmTN9BPvjHUxrG+X9msMwLlHZ7Nv4cpd2WjT9Ddbs1QN3Q1igX07cGjnunFffOtymu1lfrq/XV+mp9tb5aX60vx71FOG5M5WOods55C1lulrWk97VhuZnijAtQ55ui2uuM+Aktx74bAvhu9PDdQJaxwpaELGMpzvUB6pzdNt5ctrnOPDzuiPmIaMzKfW2+TlsmA2IVKU893dceGcxVua+Na6VmuMcylciEfDGN87Vxvi53l6OcyVa+mMYnUz5cB7uV0nAej30iwHWI9L42rm1hqLYv3EeWibKWlgDXRNJrYreQH3VFnITmP0h1k/4eKFBMlItp9tVqfbgXWR/oRdaHepF1fA9bQ+yvAY57Nt/XRlvebLUp10f4WCO954DjGwy1HmvcKGtpCXD8kvav15MfdUWchObfRnWTPr4pUEyUi2n21Wq9pYetAeJuvj8wzop1r9UOJvY1wrHNfnBd1Hmoth9cQ5ZrZS3pfnC1bJnpfnAV+VFXxElo/h1Ut6uE61agmCgX0+yr1Tq2h60B1lV6X/tK2TI371toyyutNuX6XCYc2+xbV0Sdh2r71mVkuVzWku5bl8qWme5bY8iPuiJOQvNvp7qNEa5bgWKiXEyzr1brVT1sDbCu0vval8iWuXnfQlteYrXpGGpbDHVUx4sDtG1ktS2Gix2WJEeWUo4sU3Jkqc+RZUyOLONzZJmQI0ucI0sxR5amHFkm5cjSmCNLvxxZGnJkKfSwJY62PG6Paf54SquzljXr9PmkY/7oLL2OlrkwGy86yh5NaRdl4xc6luU2Gm3Vpbl7Q9pGHKdM04hVIsOFObA05MjSL0eWxhxZJuXI0pQjSzFHljhHlgk5sozPkWVMjiz1ObJMyZGllCNLkiNL3dtkwbETyr3Ispi4F8jGTa+PjqK4OKa7gOqP+KPIcb5w/U0Z5zkc55MD8c8jx7myjlZTxjkOx7nkQPxzyHGWrGNgbDnMUO084CyynC1rSa/LnylbZrrdnUF+1BVxEprP2/8ZwnUrUEyUi2n21Wod1Yus5/WwNcB2NcyUebpsmQNxDwFtebrVptzep2Wf9ZSO47Aizd8x+7LdKur63sNpAdYJD2WHu6t7Dz1tKeXIMiVHllE5stTnyDImR5YJObLEObKMzpGlmCNLU44sk3JkacyRpV+OLA05shR62NLVfRDM53sVp2bjoyitzlEe+gbkN+v+ZbpfckqWzvdLTs7Gi454pzhcJzuW5bbEMuXss7l7Q9qWHKdM04jF90tOzoGlIUeWfjmyNObIMilHlqYcWYo5sozOkSXOkWVCjixjcmSpz5FlVI4sU3JkKeXIkuTIUuewnChraeVjwIhMPJRp/ESynCTcLuZaJR9rnma1CV9fPEE4doHqg3IxfQLFPV42bnov4TiKi7oiTonicz6Mm/5ttOUs0vxpdK3W+I8VbjdTxjEO/7Hkh4XzHUP+UVadijT/Gct/tKw/vVfFLjNU2/4R31j+KmtJ71UdJVtmun0dGW3Z7oiT0Hy+7nikcN0KFBPlYpp9tVpP7UXW03rYGmK7MmUeIVvm5ntVaMsjrDbl+hwqG3tb0w8cHnUeqvUDh5LlMFlL2g8cIltm2g8cTP7Ds0/ESWg+3yM6WLhuBYqJcjHNvlqtk3qRdUIvsh7Zw9aY0g6nNMw/jNLqrHrwdU/kb4zCPFPH1AXPxcGx/CPUnmjDbj6jvMVOMLEmU/nbR1s+u6dIeUoZZqtsGulmuCf7xPIlKmMytelkq3yTD88N4ef34Hky/KypB7LPOirnQZp/P40/ZC3Dz+9CPlPnidl4Ofts9hucbcrP+eE2Rawi5Xmf1ab8PGU8E4nbdKKVL6bxiZTv3mz8JkrDcxm4TfE8jzoqh5+hMo7G77WW4WeOjaM4N1hxTDuIPo+hpfJdNJbsiHk92VzPBrtW0pH1Q9dFHUM56thnEYufH4a89vPD5oq6Kn3Kwqws9ClzaR0h7pzuxXVu/y9R+dtHW77nqkh5vmRt/0g3w7zscyG551j5YhqfQ/nwjh1+1xXevcTvZcN7g+qonOdpPr+3apa1DL/rjt8lOzMbL2efzX6Ds035nVjcpohVpDxft9oU6WbA+8O4TWda+WIan0n58A6PJyhtWjbObYp339RROfy+oak0PsNaht/PN5XiPGbFMe0g+u6SrE+ZQnbEfJRsrvfoSb87xKxvfo9JOerYZ/mZekhDXn7Xnpm3LktfTcussdKM/7UA/jVRZz+mEcv41mbja95mS2xZTNxV3Yvr3GdXUvnbkwOxipTnF7TPFihPg9V+/D6uFd0zO9sKnn6WY4XDvJPVzyyPOgZ818BdouWWUx2WitahNb2msES0zMr1yVezssw+hu12CbUJ5u9Mz+EcTL+RQJ3XUTn7OOZjqHbdYCm13yLZuqbb7StUfplicNyFsnFbOG4h+0MMpBdpfDj96GZhx+jm9oXZbHeLHfl4fLm1TELzFweu8yJylGkascx2MoS2KWwzxrNM2MP15XaJqV0wn/s26f3NtMurUed2gWEJWVY7nNhG+fttcQDfUsuH6cXkQ9oy8qEe3J980PGdvZ6WWWOl9cXv7CbLkofv7GNr/M5eROk9/Z19UpXvbPStfe07+0zqX89+i+/sywW+s+fL1jXdbl+m8ssUg+POk43bwnHxnY0YSC/S+GX0nT2vY3Rz+8LM39mcj8eXW8skNH9x4DrPJ0eZphHLbCfn0TZ1eQ98ZzdRu/TUdzYM/J293nLydzZ/v+XpOxv14P7kuOxHp6VNfxuy9I20zHorzdRpXYA6IQ7KxTRiGd/rUef25flmwG95G2kZuxzjXyPrHxTi2MGUgWO/eqo74hRp/j20j06gfh113kDlTHXMx1Ct3+fjpJWydU37/RVUfplicNzlsnFbOC76fcTgYw6MP079Pn9non1hNtvdKkc+Hl9nLZPQ/FWB67ySHOVoy2Mjs53cT9vUVOr31wp7uL7cLo3ULpgf8rzBlLGaHIj/Gjk2WkY+p+H+sZvH81vYqp3TrCIf0taSD/XgvmSbhg5rP1nrQL7fjKFav8L/f1Uv3G7m++4jWVm7D23bYb9d99xjt58MPWj7vYfsMHhE2x6D99x+yJARQ0eOLBAU+KIDX0cN22Dl48aup7Q6qiDSsEwjfTZQnrJMA6Q/aIUlctSHY7ExwIaRroz+WVmbVsYvhu42YmjbppXBbQ9rnfVpj/M/eTYKOwtUd5RrH1iYuE2ycdObNjHFRVsgToni8z//loTrb8pIHI4SffKFNHgSq41MWn8ax2edY1msz/5Uhr2dim6IURagLgtuKtkv6tigmhwNgDtVSQYtUTkYHs5q/55s+kd7Dxl64IDh+7UNGD5swK7D99t7yEjO/psmr+xx1mYfz6YHt7UN3WuftgFtwweM3G/XthGDd2sbcMAebX8cMHz/oSOG7Tn8AF546+4s/MXuLPy17iy8Y7bwh7dcePCQIV0v9+vEq2mP+QfDnPjWYf4fNCQkpG4NAgA=", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -84,7 +84,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -167,7 +167,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -184,7 +184,7 @@ } ], "returnTypes": [], - "bytecode": "H4sIAAAAAAAA/+2dB5zcxPXHdbtXfHfuNrZxPVfcvbp+rutGM5jiBsYY++w722Bsium9hxZKaKH3Fnro5B9IQgshhAAhhNBC773Xv2bvPd/PY935zvtG1nyk/XzmM9JIO/N7b96MvtJqpV3zHecsL6lPjpcSXsr1UonTWKY+acpT2X3cPK+OPJ96y1KV5eV1VaV1bpm7OFVaU1tdkSqvqK2sdqvdiuqKpaXVZWV11eXVVTW1NVWpGre8rM6tr6gpq6eK8+Q0pkzYrVycb8Du/JDbXeDVUWDA7gJhu50m4j1bnT0EdeaQL0uovu5e+tlLPSKaj/TS5tRnyi8dyS+bh0BXTy8lvdTGafqTpjyV3cc1V3dZmcG6yw3WXWGw7kqDdVcZrLvaYN01BVSPGosltNzLS7291MdLfb3Uj7b199IALw300iAvDfbSEC9t4aWhXhrmpeFeGuE0jKVRXhrtpTFKp5dUwJd6SQWnCiLV2apTlPOUkTVeGqtpGeel8V6a4KWJXppEtk/20hQvTfXSNC9N99KWXtrKS1t7aRsvbeulGV7azkvbe2mml3bw0o5e2slLO3tplpdme2mOl+Z6aZ6XdvHSrl6aTxp2o3wB5btTvpDyPbz0Bjmy0Fl/7iik5DiNxym1XkTLCSgrpuUklLWl5Vwoa0fLeVDWnpbzoawDLRdo29QnTXkqy48fH6Wy/BSCX9qAPegXztkvRVDGfimGMra9LZSxX9pBGbfXHsq4Pfanqr8XbOcP9iX7BPuNt+f72FTgY1MbH5sKfWwqAs35sJ6mPJXlJx98JFUnxjt/crT1NCy3A9+1ldWS4fz2snVmfNbRgM/aOy33WUfwWQcDPuskW2fGZ10M+KyT03KfdQGfdTbgs66ydWZ81s2Az7o6LfdZN/DZZgZ81l22zpSBOjM6exjQ2Uu2zmrVt5s7Le/bXtC3PQ34rLdsnRmf9RGuU9XRF3zC/mPtxbC9D/irr7C/cqBNrpfX+0K7JaLtlmbmA7RffZqLmRLQ0k9US0PM9JetM9O/A0A/28rtFMP2IrBtgLBtOdAm18vrqC/WGmuNtcZaY62x1lhrrDXWGmuNtcZaY62x1lhrrDXWGmuNtcZabdFqoN3SQq1d9cnR1tPO+r4qhu+xz1RdAzX/Kc2DDPhqoKaP1weBPi7rB/vi9/x+n/DT39+A/qZ+nzDnt4bfJ1rT14NAy0BRLQ2/TwyWrTPz+8QQ0M+2cjvFsB3H8hBh23KgTa6X11FfrDXWGmuNtcZaY62x1lhrrDXWGmuNtcZaY62x1lhrrDXWGmuNtdqi1UC7md8nsF31ae6a9RDwy2DNZ6quLTT/Kc1DDfhqC00frw8FfVyGv0ng9/x+n/DTL3wdvdnfJwy2m9pY+7cI0H7UF2uNtbZUa59NrFV+nnOrCrV21ae5uXmoQR+oOofJ1pmZj4aDfraV2ymG7RiLw4Vty4E2uV5eR32x1lhrrDXWGmuNtcZaY62x1lhrrDXWGmuNtdqiFZ91lgAtwuf2bnPXKYb5aCkMkZb8EGlJhkhLQYi05IZIS5sQackLkZacTayl0Fn/emkhbE9AGc+P+GzPEbSMz84cSct5UDYK7OSy0bSMz9McQ8v4PM0ULHPOD2UugrJSWsZnifIDlvFZovxgZHxuKD/QuAOU8YOIO0EZP0C4M5Txg3+7QlkNLW8GZWNpuTuUjaPlHlA2npY3h7IJtNwTyibScm8om0TLW0AZ9yH2OffhcCjjPhwBZdyHI6GM+3AUlHEfjoYy7sMxUMZ9iH3KfehCGfdhKZRxH5ZBGT9rtBzKuF8roIz7tRLK+JmbVVDGfV0NZdzXNVDGz54cC2Xc/+OgjPt/PJTxMxgnQBnHxEQo45jgPlV9cXSicTt/H8cot4NjdJJPexN9dPEyzkn8nTTlqew+mTkJ20nDOrdVBBrGh0BLXoi0tAmRltwQaSkIkZZkiLTkh0hLYYi0JHy0jJPVkjnE8fFBfXgeHgc6WNNY0FEt7BNVR6WPjmrQwcfASihjTXh8rNTKlN4KYb05mt40rFeAvhpNcz7oktRSo2mpMe+DDPbgy0Em+djPzFMGZawJeahMK1N6Sw34qUzzE6+Xgr5KTXM+6JLU0lT8oA/KZNstQ1vVZ5JmK/ZZKehwZXVkmkj56MBzJm4/BTrGyOrIhOpoHx1jQAe3Pxp0jJLVken6kT46RoEObn8k6BghqyMzNIf76BgBOrj94aDDxDXQpuY00+02NS6xXRPXQbh+xfJqnY+73FYS9tmb4ECdW+J1DzzXS9MynhNOpmU8Xk6hZTzvnErLOEdPo2U8353O9kPZlrSM59lb0TKeozPf4Pk9c2kaypjhJ0MZn+9MgTLmyKlQxsw9Dcr4/GQ6lDH3bQllfM7P2guoDeHnsGfu3eb7HvnT3HUxbr8YvofXcPg5LngvZYms5ky89tP08XoJ6OMyfKeD9DPclZa2mhZe72e43fZau+0Darej1m7HgNrtrLXbOaB2e2jt9tDaber3MBNaHE2L04yWriHS0iFEWjqGSEtRiLQUhEhLboi09AyRlt4h0tI9RFp6hEhLlxBpaRciLe1DpKUwRFryQ6QlGSItvUKkZfMQaekTIi2bhUiL6fO81mjpFCItnUOkpThEWtqGSEubEGnJC5GWnE2span7v3g73ltSQst4z1V/zSZVNoCW8Z4rfr4Avr+Zn+2L92Hxvb94H9YQWu4IZXx/E96bxf/txXuz+PpuFyjja6J4vxZfg8d7s/h6Kt6bxf5A/zFTlEAZn9/hcx847gZAGbPRQCjj89RBUMbjZzCUMeMNgTLuG7z/i/tmKJRx3+A9Ydw3eM2Y+wbvCeO+wfv8noT3qvP3MXbwOjuXjfRpb4SPLl7GsWLyvnC+b2CYpg/vSxoWAi15IdLSJkRa2oZIS3GItHQOkZZOIdLSLURaNguRlj4h0rJ5iLT0CpGWZIi05IdIS2GItLQPkZZ2IdLSJURaeoRIS/cQaekdIi09Q6QlN0RaCkKkpShEWjqGSEuHEGnpGiItiYC08HUFrneEpkW1K/wMzvWeJcnXO4aC/dw+PiNviLCOHE1HCbQ7BNqVfoanqmOQj/2DwX5uH9/zZeJdbd1ARxrW8Robn2Nw/6g5ft9ko65hBnRh/B3lrH+eg/elHpVs1HVAstGHfM9iH7ClRCtT9fc3oJ/b4Xp5ndtS+vR7F1EfvrePv4PXVhM+301qbfC9o8L9k8L+YQ16/+A8x/eC6mM6CfscD31YWdD4PWHt69xrnnD8z5+Fx3vm1mUeOw7Ujz7E5wz7zYeDtP2UzgGyOl1dB7c/AMpKfHQOBJ39tf0M/H6T0sdXjrP+GNGX2RZ8horwPdXNHk/7QrvC/+PI3Mvd11n3o/92lYZlfOZASlZLhdIyuhVaDP7PxjXwH6KUgf+IZVyA/xFj/7H2Ymf9/4wZ+J9WJn5dZ91+4nXUF2uNtdqiVWnpq+kshP36hkAfl+HzQHpq/lNcdI855q7wY279uhIy95UFjboeAOYervlV2TLUWd/XJt6LgIyVdtY/5heBLfi8cxPvmBimaQlTu9J8i33Mn+aO+chgsudeDe/RHtgKLf1BizRPm2BfA/yY4Q9kNv3d7MWwHdlxtLC/cpym/9+H+mKtsdZYa6w11hprjbXGWmOtsdZYa6w11hprjbXGWmOtsdZYa6zVFq1Ky1BNZyHsNzQE+rhsgDktpYWaFvVp7tr9aNAi+zt/w+8IY1qhxQUtwvdUuEHcc8C24rsieDuODxO/kZZqPuX1pn5vjrXGWmOtsdZYa6w11hprjbXGWmOtsdZYa6w11hprjbXGWmOtsdYwa8Vr6vi/D96vXwj0+b0LS1hLpupy0DJc01EEOvAdZaLvRnMb7quXfVddw28I+vv5VFm1VqbarhFtO+Wqdvh9S/xp7vcLfK8vv88J/7s1XlZf5j+8E6D+NLRRDeUThf2C7eZQ4ja4PAnL3+Y27sv7qaKfwU/lUN8kWk7QPhN99hkHy1gPf1df5n5k/xQ7678zMwfqaUpfPnwvTXkqu0/Gn+NBaxrWJ4GeD3IbNYyV1VCKPs2lejmGxpqzPYUxwTGs90s+tCfpc26XY5jr5vIkLLfnB6I66455jivWXOSs3zdqPvAblyZsaur9tGkob2ofHC9pHxvHg40TfPbz+w7XWQzbJ7SwHfwOxmBa+24qu4+Lcw7Xq8e5GhM/wPgTnsszGpp6byK+R1j6GKJis5fWjjKzS15jm7LvUHXrla143E6DBm4rCfusgv/JdiddKgb5P5D47OkBWpn8/yMb+orb4Xp5ndtS+vg+lAEGtag68LkVw310cPv432HR53a4Jv5T2cB++v1Fqiyllcnfu9LAfq25dwXfo8nMh/0u/B7ilN8YKte0qPJKYb9gu3zc1Pkcx25FXuO+vB+zFfupL9THxwBmv0qffcpgGetBVsdl7kf2TzFsx7pKN6Av3zHzDnA8d0vDehXoGQrzsfB9TKXoU2Y/jqFSc7anMCY4hvV+UeXS76zHdjmGuQ0uT8LyDGC/6sbFtXHFmvE8G88F/calCZvw/CgN69VQ3tQ+OF78bCwHGyt89mvOL8XO+ufrG2oHv4MxaMJvaHsa1rktNSaqYfzJXuNoGAf6HDBa85f8uPfnML/rRCbmPB7f/M5s1sFtJWGfWeT7drSO7/nWr08WwfdwbpG9NlSaMnAOnkEYPAdnfhwLPuHt8/Ma91tAy3itbDDUs5fPdv40xzQ14L8Jsrb6nvdP8GnXxLUW/byf2/A7798T5n48R2T/smYVd37n0bhcqX0Hr0GNN2yzfs49QdOn4mQPiKm9YL6TnnPRXvQL/sbA2/Fa+lBtfxXPPB7wfE96XOK1Ma6X18eCPi6rNqcl4yK8TjBc01EEOmrAT7yM51ETtDIT14rx2hd/mptzJoA+v+uAk2X1ZeahKVB/GtrAa+tThf2C7fI8xG1weRKWT4HzKN6Pz1PYT3iONI2W+Txqqs8+aVjGevi7+jL3I/unGLanoa5JG9CX7/O9VHafjD8ng9Y0rE8DPUfAvCY8z5aiT/k8Sp9nDdiewpjgGNbbUOXTDfic2+UY5ja4PAnLl8OxdHrj4tq4Ys1F4C/eT80HfuPShE2TwaY0rE+H8qb2wfHiZ+NksHGKz37N+aUYtk9pYTv4HYxBE35D29Owzm2pMXE6jD/huXwdtuN6J2r+MHEMUbHZW2tH2XoN2CrLAQ3nbvrvY6zB73xhLFxDv8HnGjrfK4HX0PH+if6i+kN1DT2DmPE19PgaetoJ5zX0x+Jr6Bv0Z0uuod8fX0PfZNfQX46voUf+GvoT8TX0TXYN/a34Gvpan/D2D+F658cbuIb+U3wNfa2PW3sN/ccIXUP/DGLqpxBeQ++n7Y/X0PF8LyzX0PF6Nt7nVaOVbap78vB+Txxz0vei50A7XG9Q7VZr7Vb7tCvs+8yhE8fbcB+/c/t4PVB4jm3W79iu8O8mpfj7DH+aO87gccDE3NdUDOA1xbQBH+DcvyEfpEHLFGEf4PXnlmjB35Skf+tQWqa2Qss00LKlAS3TW6FlS9CytQEtW7VCy9agZVsDWrZphZZtQcsMYS3NzWEzDLfb1Lxhut2w2qsYh+d15ppC2I7HlO0M6Juh6eP17UAflyGX8Txc6aN5Uog0V0MZz9c1UMbz5hAo4/lrEJTxPJKAMh7PJZQXQbv4ftzttTLll5mgX8ov3A7Xy+szQR/7aHvQsr0BLU2NN9PtNjXeomyvcKxVY/1qPPD7fmdCmzsJt6nq3FnYf6qOWVSXOj/nscHtJGH7nPzG/ebRshrbO9D2GVBPvc92/jR3zN8J/DdH1tbMtaG5UH8a2sB258m262K7fG2I2+DyJCzX5Tf6Y17j4lr/smY1l8322Q+Xd9C+UwzbZxu2eQ7oSMM6t6XiZD7EFMeMynYU1oP2ol+2B7/w9irwi8nxhu3vDG0Kx31m3phrwA7sR+4vjGfevg/08X4wL+yk9YXafozPdv40N2/MAf/tKmtrZt6YD/WnoQ1sdzfZdl1sl+cNboPLk7B8NMwbuzUurvUva1bzxi4+++HyTtp3imH7LoZt3hV0pGGd21JxcgDE1DEwb8wW1mMgnjLXcHZx1v00F9vYB/w9PE/i/jfdL/M1fby+G+jjMmRB/B7H1Syf76BP8BjG++IcuYusfZk5cr6wz9A3Kk5na/5IwvazIZ7PgTlwruY3tf0qn+38aS6OMD52l7U1M0cuhPrT0Aa2u4dsuy62y3Mkt8HlSVi+EubIPRoX1/qXNas5coHPfrg8V/tOMWxfYNjm3UFHGta5LRUn50NMXQVzpDBfuAbiKTNHLnDW/TQX29gH/D28LsP9b7pfFmr6eH0P0MdleN6K3+O4mufzHfQJHq95X5wjF8jal5kjFwr7DH2j4nSO5o8kbL8T4vlumAPna35T2x/x2c6f5uII42OxrK2ZObIW6k9DG9juEtl2XWyX50hug8uTsPwwzJFLGhfX+pc1qzlykc9+uDxf+04xbF9k2ObFoCMN69yWipP7IKYegTlSmC9ctBf9guzE2/H3dTze8L44xhfJ6qw2EPcZ22vB5+xbbgdj7ynoj6dhDC/U/Ka2v+qznT/NjfFF4L+lsrZmxngd1J+GNrDdetl2XWyXxzi3weVJWH4Fxnh94+Ja/7JmNcaX+OyHywu17xTD9iWGbV4KOtKwzm2pOHkWYupVGOPCx0cX7UW/4LGftw+B/WphmffFMS48N1YbiPuM7XXgc/Ytt4Ox9y70x/swhhdrflPbv/PZzp/mxjjG3TJZWzNjfDnUn4Y2sN0Vsu262C6PcW6Dy5Ow/C2M8RWNi2v9y5rVGK/32Q+XF2vfKYbt9YZtXgY60rDObak4+Qhi6jsY44uE9aC96Jda8AtvHwT71cEy74tjXHhurDYQ9xnbl4PPF9Eyt4Oxl4D/1uXSshrDSzW/ZZ6r57OdP82NcYy7PWVtzYzxvaD+NLSB7a6UbdfFdnmMcxtcnoTlzgWN/ljZuLjWv6xZjfEVPvvh8lLtO8WwfYVhm/cEHWlY57ZUnBRATHHMmDh3QHvRL3XgF96egP2WwzLvi2NceG6sNhD3Gdv3Ap+zb7kdjL3e0B99YQwv0/ymto/y2c6f5sY4xt3esrZmxvgqqD8NbWC7q2XbdbFdHuPcBpcnYXkkjPHVjYtr/cua1Rhf6bMfLi/TvlMM21catnlv0JGGdW5LxUl/iKlRMMalzx3QXvTLcvALby+Bsj7a/iqeeTzgvU3S4xKPC1wvr+N8zWV4/lMJfhwmrEvVMRx08X0ww8A/XDYcNO2bbFjG/zLg/+2rtTKl3cT/xZq6dwj/e8m/ZVUHrKW3pkW1m+X/rl29QP+v3mTH/z+rvM90iiX1nzm//9n6/Q9C+D/q6/xXPE/T4fes5G1Bs/rguzz0Z5Dj/1Dxv8LS74FWdUq/z1nVwf9bVGOM4zYFPuHtO8E8OwuOzWwz/l+w1mc7f5o7duO7q2Wf4dAQt4Oh/jS0ge0OlG3XxXb52M1tcHkSlhfDsXtg4+Ja/7JmFXejffbDZf0dM8WwfbRhm0eBjjSsc1sqTuZCTNXCMUf4uQIu2ot+6Q1+8fufs/R4U34Zo/mFNaRASz9NpxpHHKN4fBN+731Gn6vp4/XRoI/LSkEf24HzyTXwjBz2K/7/sEwrM9H3+B9vrrdM06/08XGgLGAtvTQtAscO32M2PvNhMujgtpKwzyHaMRvnx7Tj/7/2Mdlp9vUV68nTdIzx0XykdszG8a4/y6MIvofz4GBRGxqO2dJzq6pjANWlxhjH7UDwCW8/AebXk+CYrM91avt5Ptv509wxG4+pos9ySjXErf7Okr4+7Y6TbXed/ybwMVv/n3USls+FYzb+P5v9y5pV3PX32Q+XR2vfwf9z9zdsMz6/Kw3ryHanQEydB8dsYV5z0V70Sy/wC2/Huc0Eywxw1vULaxgIWoZqOtU40t+tku+YeQbcYE0fr/cHfVyGzy9jO3A+6QLHbD7/7gvfGaqVyc+bDTZxO1wvr3NbSt8wzb/6ck/K+0EZ8vFI7Tv4LL+BYJ9wn1WYGi8ce7ngG24nCdtvhTF8O8z7bDNed3nIZzt/mjsu4FwlzNEpPyZJ+bRrgt9csD0H2kCO4uUH4biA77lk/7JmFXdjfPbD5YHad/C9mGMM25wCHWlYx+fU3Qkx9RAcFwYI60F70S89wS+8HRnB5HjD9vFcu6+mUY0hjk+cP02wMx4707A+BvRx2QDQx3bgXHJPslFrRwNaO2haeb2jY7bdPK3dvIDaLdDaLQio3UKt3cKA2i3W2i0OqN3g48qtUnV2Ea5T9VMnZ91Pc8feLmBfZ1EtKbeNV0cbqmtZ3ZqZq9fU7Z8Dmlhnd8qLQBf+9p2E7+Q669uW71PWxqesyFn/0xaW28FyR/hee02n8nFXWu4EZZvRcmcoYzu6Qhnbw/sXOOv3kejBhz8Jre6yVGV5eV1VaZ1b5i5OldbUVlekyitqK6vdareiumJpaXVZWV11eXVVTW1NVarGLS+rc+srasrqqfKEoM4FcnUhg6x1rJTOhYL+Q53J9XW6qSw+vXSbs6itt6DNQ/LM9LOP/1LZWN3H8dG5kbX1FfTfFsH6L7WxVvdzmtC5EbWVCPpvaPD+S22M1f2dZnS2srYBgv4btmn8l2qt1QOdDehsRW2DBP03fNP5L9Uaqwc7LdDZwtqGCPpvxKb1X6qlVm/htFBnC2obKui/kZvef6mWWD3MaYXODdQ2XNB/o8Lhv9SGrB7htFJnM7WNFPTf6PD4L9Wc1aOcjdDZRG2jBf03Jlz+SzVl9RhnI3X61Sbov1T4/Kc+61ntOlno1GorFfSfG07/ZaThSpmTpU6orVzQf6Xh9V8Kra5wBHRSbZWC/isLt/9SbHWVI6TTbXgipJT/ysPvP/VxawTrwmtO2fqvwhL/CV4ncocK+q/SEv8JXudwhwv6r8oS/wmep7sjBf1XbYn/BM8z3dGC/quxxH+C50luStB/Yy3xnyDnu6WC/htnif8EOdUtF/TfeEv8J8hZbqWg/yZY4j9BTnCrBf030ZbzD0H/jRX03yRL/Cc4T7vjBf2XtsR/gvOMO1HQf5Mt8Z/gOHHTgv6bEpD/stW5SLAvBGPGnRJc/GV1/9U4R+7+q/GS/WrJ/VcTHLn7ryYK+m+xJfdfTXLk7r9KC/qv1pL7ryY7cvdfTRH03xJL7r+a6sjdfzVN0H9LLbn/arrTAp0trG1LQf/VWXL/1VZOC3W2oLatBf1Xb8n9V9s4rdC5gdq2FfTfMkvuv5rhtFJnM7VtJ+i/5Zbcf7W9sxE6m6htpqD/Vlhy/9UOzkbq9KltR0H/7WnJ/Vc7OVno1GrbWdB/e1ly/9UsJ0udUNtsQf+ttOT+qzmOgE6qba6g//a25P6reY6QTq+2XQT9t8qS66e7Cta1SPD66WpL/Cd4ncitFfTfPpb4T/A6h7tU0H/7WuI/wfN0t17Qf/tZ4j/B80x3uaD/9rfEf4LnSe6egv5bY4n/BDnfXSnovwMs8Z8gp7qrBP13oCX+E+Qsdx9B/x1kif8EOcHdT9B/B1viP8HjnLtG0H+HWOI/wXnaPVDQf4da4j/BecY9WNB/h1niP8Fx4h4q6L/DLbn/arFgXwjGjCvpP37AIT9McZGXfnYaHpat8sWUz6d8N8rVp9ZZ95Mj7P8lgv5nOxNU3xKyoxbsWUoxtN6D4Bz5Z5jt7sj2IX/qnMYH9CWgnMdGvgFbHK0d3X/tHcMP1zPROXUG6q135AaHKbvr5ftonUk6odWdrR/2EKxrmSM/4WzMxLqc+tZvwloO+63w2S9B21dQriYDfPumiT6QjOu9QtIHK5vpg5Ww397N9MHe0AerfPbbnbavolxNnvy2RBNzz56O/EH6QmGYk7Z7L/KptN0XWQKx+wj6UrCvXUn/BQVt3eXqSuFTmLnOfb20n5f299IaLx3gpQO9dJCXDvbSIV461EuHeelwLx3hpSO9dJSXjvbSMV461kvHeel4L53gpRO9dJKXfuWlk710ipdO9dJpXjrdS7/20hleOtNLZ3npbC/9xkvneOlcL53npfO9dIGXfuulC710kZcu9tIlXrrUS5d56XIvXeGlK710lZeu9tI1XrrWS9d56Xov3eClG730Oy/d5KWbvXSLl2710m3Ouk9yRnhVH3zCdFqoDwzAcAq1c66OPwVgm6Ntb0/25YlqKU/hk67509yTyPPA17miWhqeRM5P8V5Wt2byAWuWz1uxZlXd/us8j1yf/XJ8vFXoNEZDEsrYw7lQlgCLuIy/UwC5sdOTpLN+KKNhUu3s65g5HIn6w214Xjl/bqf8Dqcx9HLAX6ojf/HxWQ4sJ2ifRDP75DRRT1ND0VgwsHHK8K/BWOUA/Wn54j+GONkzRV29+qTc2x05PrnDMRO4CWH/Sdr8+3Xq8vZdXFpeWVeRqqyrrqmuq6mqr6hKLVlcX7+0KlW+pDZVW1temSpzy+prq0pTtaU1XrM1dRVLMvfYuUGxz+/l6lrngtWdTnzBSqRz7jRQ711OuC9YKbvvku8jX60SE91dBuq925EdmGoQqjoZlYKgl/0cMwcB0bjQ6OUeyu91IkYvynCkF+UA0/SCAZItvdzjyA2+ex076EXS5vsc++jlPkd2kuTP/U5MLyKdc7+Beh9wwk0vyu4H5PvICL3cS1ql6/2DIzsw1SBUdQZJL/s7Zg4ConGh0cv/Uf5HJ2L0ogxHelEOME0vGCDZ0sv/OXKD74+OHfQiafODjn308qAjO0ny5yEnpheRznnIQL1/csJNL8ruP8n3kRF6+SNpla73z47swFSDUNUZJL2sccwcBETjQqOXv1D+sBMxelGGI70oB5imFwyQbOnlL47c4HvYsYNeJG1+xLGPXh5xZCdJ/jzqxPQi0jmPGqj3MSfc9KLsfky+j4zQy8OkVbrexx3ZgakGoaozSHo5wDFzEBCNC41e/kr5E07E6EUZjvSiHGCaXjBAsqWXvzpyg+8Jxw56kbT5b4599PI3R3aS5M+TTkwvIp3zpIF6/+6Em16U3X+X7yMj9PIEaZWu9ylHdmCqQajqDJJeDnTMHARE40Kjl39Q/rQTMXpRhiO9KAeYphcMkGzp5R+O3OB72rGDXiRt/qdjH73805GdJPnzjBPTi0jnPGOg3medcNOLsvtZ+T4yQi9Pk1bpep9zZAemGoSqziDp5SDHzEFANC40evkX5c87EaMXZTjSi3KAaXrBAMmWXv7lyA2+5x076EXS5n879tHLvx3ZSZI/LzgxvYh0zgsG6v2PE256UXb/R76PjNDL86RVut4XHdmBqQahqjNIejnYMXMQEI0LjV7+S/lLTsToRRmO9KIcYJpeMECypZf/OnKD7yXHDnqRtPllxz56edmRnST584oT04tI57xioN5XnXDTi7L7Vfk+MkIvL5FW6Xpfc2QHphqEqs4g6eUQx8xBQDQuNHr5H+WvOxGjF2U40otygGl6wQDJll7+58gNvtcdO+hF0uY3HPvo5Q1HdpLkz5tOTC8infOmgXrfcsJNL8rut+T7yAi9vE5apet925EdmGoQqjqDpJdDHTMHAdG40OjlHcrfdSJGL8pwpBflANP0ggGSLb2848gNvncdO+hF0ub3HPvo5T1HdpLkz/tOTC8infO+gXo/cMJNL8ruD+T7yAi9vEtapev90JEdmGoQqjqDpJfDHDMHAdG40OjlI8o/diJGL8pwpBflANP0ggGSLb185MgNvo8dO+hF0uZPHPvo5RNHdpLkz6dOTC8infOpgXo/c8JNL8ruz+T7yAi9fExapev93JEdmGoQqjqDpJfDHTMHAdG40OjlC8q/dCJGL8pwpBflANP0ggGSLb184cgNvi8dO+hF0uavHPvo5StHdpLkjxoHMb1kWedXTuOEIlnvN0646UXZ/Y18Hxmhly9Jq3S93zqyA1MNQlVnkPRyhGPmICAaFxq9fEf5907E6EUZjvSiHGCaXjBAsqWX7xy5wfe9Ywe9SNr8g2MfvfzgyE6S/PnRielFpHN+NFDvT0646UXZ/ZN8Hxmhl+9Jq3S9PzuyA1MNQlVnkPRypGPmICAaFxq9/ALOiBS9KDFIL2rBNL1ggGRLL784gpNajh30ImlzTo599JKTIztJru2nnJheRDpHOVK63mROuOlF2Z3MEe8jI/TikFbpenOFB6YahKrOIOnlKMfMQUA0LjR6ySMn5EeNXpThSC/5AdALBki29JInOKnlW0IvkjYXWEgvBYbopU1MLzKd08YAvRSGnF6U3YWW0Es+aZWut8gAvRQFTC9HO2YOAqJxodFLMTmhbdTopVijl7YB0MvRjhy9FAtOam0toRdJm9tZSC/tDNFL+5heZDqnvQF66RByelF2d7CEXtqSVul6Oxqgl44B08sxjpmDgGhcaPTSiZzQOWr00kmjl84B0AsGSLb00klwUutsCb1I2tzFQnrpYoheusb0ItM5XQ3Qy2Yhpxdl92aW0Etn0ipdbzcD9NItYHo51jFzEBCNC41eupMTekSNXrpr9NIjAHrBAMmWXroLTmo9LKEXSZs3t5BeNjdELz1jepHpnJ4G6KVXyOlF2d3LEnrpQVql6+1tgF56B0wvxzlmDgKicaHRSx9yQt+o0UsfjV76BkAvGCDZ0ksfwUmtryX0ImlzPwvppZ8heimJ6UWmc0oM0Ev/kNOLsru/JfTSl7RK1zvAAL0MCJhejnfMHARE40Kjl4HkhEFRo5eBGr0MCoBeMECypZeBgpPaIEvoRdLmwRbSy2BD9DIkpheZzhligF62CDm9KLu3sIReBpFW6XqHGqCXoQHTywmOmYOAaFxo9DKMnDA8avQyTKOX4QHQCwZItvQyTHBSG24JvUjaPMJCehlhiF5GxvQi0zkjDdDLqJDTi7J7lCX0Mpy0Stc72gC9jA6YXk50zBwERONCo5cx5IRU1OhljEYvqQDoBQMkW3oZIzippSyhF0mbXQvpxTVEL6Uxvch0TqkBeikLOb0ou8ssoZcUaZWut9wAvZQHTC8nOWYOAqJxodFLBTmhMmr0UqHRS2UA9IIBki29VAhOapWW0IukzVUW0kuVIXqpjulFpnOqDdBLTcjpRdldYwm9VJJW6XrHGqCXsQHTy68cMwcB0bjQ6GUcOWF81OhlnEYv4wOgFwyQbOllnOCkNt4SepG0eYKF9DLBEL1MjOlFpnMmGqCXSSGnF2X3JEvoZTxpla43bYBe0gHTy8mOmYOAaFxo9DKZnDAlavQyWaOXKQHQCwZItvQyWXBSm2IJvUjaPNVCeplqiF6mxfQi0znTDNDL9JDTi7J7uiX0MoW0Ste7pQF62TJgejnFMXMQEI0LjV62IidsHTV62Uqjl60DoBcMkGzpZSvBSW1rS+hF0uZtLKSXbQzRy7Yxvch0zrYG6GVGyOlF2T3DEnrZmrRK17udAXrZLmB6OdUxcxAQjQuNXrYnJ8yMGr1sr9HLzADoBQMkW3rZXnBSm2kJvUjavIOF9LKDIXrZMaYXmc7Z0QC97BRyelF272QJvcwkrdL17myAXnYOmF5Oc8wcBETjQqOXWeSE2VGjl1kavcwOgF4wQLKll1mCk9psS+hF0uY5FtLLHEP0MjemF5nOmWuAXuaFnF6U3fMsoZfZpFW63l0M0MsuAdPL6Y6Zg4BoXGj0sis5YX7U6GVXjV7mB0AvGCDZ0suugpPafEvoRdLm3Sykl90M0cuCmF5kOmeBAXrZPeT0ouze3RJ6mU9apetdaIBeFgZML792zBwERONCo5c9yAmLokYve2j0sigAesEAyZZe9hCc1BZZQi+SNi+2kF4WG6KX2pheZDqn1gC9LAk5vSi7l1hCL4tIq3S9Sw3Qy9KA6eUMx8xBQDQuNHqpIyfUR41e6jR6qQ+AXjBAsqWXOsFJrd4SepG0eZmF9LLMEL0sj+lFpnOWG6CXFSGnF2X3CkvopZ60Ste7pwF62TNgejnTMXMQEI0LjV72IiesjBq97KXRy8oA6AUDJFt62UtwUltpCb1I2ry3hfSytyF6WRXTi0znrDJAL6tDTi/K7tWW0MtK0ipd7z4G6GWfgOnlLMfMQUA0LjR62ZecsF/U6GVfjV72C4BeMECypZd9BSe1/SyhF0mb97eQXvY3RC9rYnqR6Zw1BujlgJDTi7L7AEvoZT/SKl3vgQbo5cCA6eVsx8xBQDQuNHo5iJxwcNTo5SCNXg4OgF4wQLKll4MEJ7WDLaEXSZsPsZBeDjFEL4fG9CLTOYcaoJfDQk4vyu7DLKGXg0mrdL2HG6CXwwOml984Zg4ConGh0csR5IQjo0YvR2j0cmQA9IIBki29HCE4qR1pCb1I2nyUhfRylCF6OTqmF5nOOdoAvRwTcnpRdh9jCb0cSVql6z3WAL0cGzC9nOOYOQiIxoVGL8eRE46PGr0cp9HL8QHQCwZItvRynOCkdrwl9CJp8wkW0ssJhujlxJheZDrnRAP0clLI6UXZfZIl9HI8aZWu91cG6OVXAdPLuY6Zg4BoXGj0cjI54ZSo0cvJGr2cEgC9YIBkSy8nC05qp1hCL5I2n2ohvZxqiF5Oi+lFpnNOM0Avp4ecXpTdp1tCL6eQVul6f22AXn4dML2c55g5CIjGhUYvZ5ATzowavZyh0cuZAdALBki29HKG4KR2piX0ImnzWRbSy1mG6OXsmF5kOudsA/Tym5DTi7L7N5bQy5mkVbrecwzQyzkB08v5jpmDgGhcaPRyLjnhvKjRy7kavZwXAL1ggGRLL+cKTmrnWUIvkjafbyG9nG+IXi6I6UWmcy4wQC+/DTm9KLt/awm9nEdapeu90AC9XBgwvVzgmDkIiMaFRi8XkRMujhq9XKTRy8UB0AsGSLb0cpHgpHaxJfQiafMlFtLLJYbo5dKYXmQ651ID9HJZyOlF2X2ZJfRyMWmVrvdyA/RyecD08lvHzEFANC40ermCnHBl1OjlCo1ergyAXjBAsqWXKwQntSstoRdJm6+ykF6uMkQvV8f0ItM5Vxugl2tCTi/K7mssoZcrSat0vdcaoJdrA6aXCx0zBwHRuNDo5TpywvVRo5frNHq5PgB6wQDJll6uE5zUrreEXiRtvsFCernBEL3cGNOLTOfcaIBefhdyelF2/84SermetErXe5MBerkpYHq5yDFzEBCNC41ebiYn3BI1erlZo5dbAqAXDJBs6eVmwUntFkvoRdLmWy2kl1sN0cttMb3IdM5tBujl9pDTi7L7dkvo5RbSKl3vHQbo5Y6A6eVix8xBQDQuNHr5PTnhzqjRy+81erkzAHrBAMmWXn4vOKndaQm9SNp8l4X0cpcherk7pheZzrnbAL3cE3J6UXbfYwm93Elapeu91wC93BswvVzimDkIiMaFRi/3kRPujxq93KfRy/0B0AsGSLb0cp/gpHa/JfQiafMDFtLLA4bo5Q8xvch0zh8M0Mv/hZxelN3/Zwm93E9apev9owF6+WPA9HKpY+YgIBoXGr08SE54KGr08qBGLw8FQC8YINnSy4OCk9pDltCLpM1/spBe/mSIXv4c04tM5/zZAL38JeT0ouz+iyX08hBpla73YQP08nDA9HKZY+YgIBoXGr08Qk54NGr08ohGL48GQC8YINnSyyOCk9qjltCLpM2PWUgvjxmil8djepHpnMcN0MtfQ04vyu6/WkIvj5JW6XqfMEAvTwRML5c7Zg4ConGh0cvfyAlPRo1e/qbRy5MB0Mvljhy9/E1wUnvSEnqRtPnvFtLL3w3Ry1Mxvch0zlMG6OUfIacXZfc/LKGXJ0mrdL1PG6CXpwOmlyscMwcB0bjQ6OWf5IRnokYv/9To5ZkA6AUDJFt6+afgpPaMJfQiafOzFtLLs4bo5bmYXmQ65zkD9PKvkNOLsvtfltDLM6RVut7nDdDL8wHTy5WOmYOAaFxo9PJvcsILUaOXf2v08kIA9IIBki29/FtwUnvBEnqRtPk/FtLLfwzRy4sxvch0zosG6OW/IacXZfd/LaGXF0irdL0vGaCXlwKml6scMwcB0bjQ6OVlcsIrUaOXlzV6eSUAesEAyZZeXhac1F6xhF4kbX7VQnp51RC9vBbTi0znvGaAXv4XcnpRdv/PEnp5hbRK1/u6AXp5PWB6udoxcxAQjQuNXt4gJ7wZNXp5Q6OXNwOgFwyQbOnlDcFJ7U1L6EXS5rcspJe3DNHL2zG9yHTO2wbo5Z2Q04uy+x1L6OVN0ipd77sG6OXdgOnlGsfMQUA0LjR6eY+c8H7U6OU9jV7eD4BeMECypZf3BCe19y2hF0mbP7CQXj4wRC8fxvQi0zkfGqCXj0JOL8rujyyhl/dJq3S9Hxugl48DppdrHTMHAdG40OjlE3LCp1Gjl080evk0AHrBAMmWXj4RnNQ+tYReJG3+zEJ6+cwQvXwe04tM53xugF6+CDm9KLu/sIRePiWt0vV+aYBevgyYXq5zzBwERONCo5evyAlfR41evtLo5esA6AUDJFt6+UpwUvvaEnqRtPkbC+nlG0P08m1MLzKd860Bevku5PSi7P7OEnr5mrRK1/u9AXr5PmB6ud4xcxAQjQuNXn4gJ/wYNXr5QaOXHwOgFwyQbOnlB8FJ7UdL6EXS5p8spJefDNHLzzG9yHTOzwbo5ZeQ04uy+xdL6OVH0ipdrxo1UnavPfomgqWXGxwzBwHRuNDoJYdWEomI0YsyHOlFOcA0vWCAZEsvOQm5wZdImAlcaXqRtDmZsI9eksKTJH9yEzG9iHSOcqR0vXmCQW/K7ryEeB8ZoZcEaZWuN98AveQHTC83OmYOAqJxodFLAa20iRq9FGj00iYAesEAyZZeCgQntTaW0IukzYUW0kuhIXopiulFpnOKDNBLccjpRdldbAm9tCGt0vW2NUAvbQOml985Zg4ConGh0Us7WmkfNXppp9FL+wDoBQMkW3ppJziptbeEXiRt7mAhvXQwRC8dY3qR6ZyOBuilU8jpRdndyRJ6aU9apevtbIBeOgdMLzc5Zg4ConGh0UsXWukaNXrpotFL1wDoBQMkW3rpIjipdbWEXiRt3sxCetnMEL10i+lFpnO6GaCX7iGnF2V3d0vopStpla63hwF66REwvdzsmDkIiMaFRi+b00rPqNHL5hq99AyAXjBAsqWXzQUntZ6W0Iukzb0spJdehuild0wvMp3T2wC99Ak5vSi7+1hCLz1Jq3S9fQ3QS9+A6eUWx8xBQDQuNHrpRyslUaOXfhq9lARALxgg2dJLP8FJrcQSepG0ub+F9NLfEL0MiOlFpnMGGKCXgSGnF2X3QEvopYS0Stc7yAC9DAqYXm51zBwERONCo5fBtDIkavQyWKOXIQHQCwZItvQyWHBSG2IJvUjavIWF9LKFIXoZGtOLTOcMNUAvw0JOL8ruYZbQyxDSKl3vcAP0MjxgernNMXMQEI0LjV5G0MrIqNHLCI1eRgZALxgg2dLLCMFJbaQl9CJp8ygL6WWUIXoZHdOLTOeMNkAvY0JOL8ruMZbQy0jSKl1vygC9pIheEs66A0H8virBPiuhelxPdKmXyrxU7qUKL1V6qcpL1V6q8dJYL43z0ngvTfDSRC9NUn700mQvTfHSVC9N89J0L23ppa28tLWXtvHStl6a4aXtvLS9l2Z6aQcv7UgOYz+6dGDn9VJtvUxbL9fWK7T1Sm29Sluv1tZrtPWx2vo4bX28tj5BW5+orU/S1tPa+mRtfYq2PlVbn6atT9fWt9TWt9LWt9bWt9HWt9XWZ2jr22nr22vrM7X1HbT1HRPmQQ7HTLZzhys4v1+aZwbkdP9lC6+lCZm6lPvKBP13Wej9l6naLc/e5lKy2a0Q9N/lYfZf+VqdbmV2NqfAZrdK0H9XhNV/pevodKs33uaUZrNbI+i/K0Pov8r69XS6YzfO5mofm91xgv67Kmz+q/bV6Y5vvc1VTdjsThD039Vh8l9Vkzrdia2zubQZm91Jgv67Jiz+q2pWp5tuuc1LNmCzO1nQf9eGwX9VG9TpTmmZzakW2OxOFfTfdZvaf6kW6XSnbdjmihba7E4X9N/1m9J/5S3W6W7ZrM3l9a2w2d1K0H83bCr/VbVKp7t10zZXt9JmdxtB/924CfxXU99qne62/janNsJmd4ag/34XtP9SG6XT3W59m92NtNndXtB/NwXpv6UbrdOdua7NZVnY7O4g6L+bA/JfaX1WOt0dE3LXEvGaXbb+uyUg/6Wy+7iC19ncywX9d6sl/hO8TuReKei/2yzxn+B1DvdqQf/dbon/BM/T3WsF/XeHJf4TPM90rxf03+8t8Z/geZJ7o6D/7rTEf4Kc794k6L+7LPGfIKe6twj6725L/CfIWe5tgv67xxL/CXKCe4eg/+61xH+Cxzn3TkH/3WeJ/wTnafduQf/db4n/BOcZ915B/z1gif8Ex4krGDOupP9yyG8lVB/f18b3u/F9cHx/HN83x/fT8X12fP8d35fH9+vxfXx8fx/f98f3A/J9gnz/YJpyvt+Q70Pk+xP5vkW+n5Hvc+T7H/m+SL5fku+j5Psr+b5Lvh+T79Pk+zfZDzt56zt7aZaXZntpjpfmemmel3bx0q5emu+l3by0wEu7e2mhl/bw0iIvLfZSrZeWeGmpl+q8VO+lZV5a7qUVXtrTS3t5aaWX9vbSKi+t9tI+iYb7DAtBTy+nQV9vyvtQ3pfyfk6jfpX3p3wA5QMpH0T5YMqHUL4F5UMpH0b5cMpHUD6S8lGUj6Z8DOUpyl3KSykvo7yc8grKKymvorya8hrKxzrr9ss4Wh9P+QTKJ1I+ifI05ZMpn0L5VMqnUT6d8i0p34ryrSnfhvJtKZ9B+XaUb0/5TMp3oHxHyneifGfKZ1E+m/I5lM+lfB7lu1C+K+XzwS71uYPW76X8j5Q/TPkTlD9N+fOUv0T565S/S/nHlH9J+feUq0BUeT7lbSnvTHkPyvtSPojy4ZSnKK+kfDzlUyjfmvKZlM+mfD7liyivp3wl5ftRfjDlR1J+POWnUH4m5edRfjHlV1J+PeW3UH4n5fdT/hDlj1L+JOXPUP4C5a9Q/ibl71P+KeVfU84v/OZXZ/JLqPh1DvxgZH7EYAnl/Lf3kT7zVCa+KJ9F+WzK51A+l/J5lO9C+a6Uz6d8N8oXUL475Qsp34PyRZQvpryW8iWUL6W8jvJ6ypdRvpzyFZTvSflelK+kfG/KV1G+mvJ9KN834azzkf7fgqqf68r69Zk8ppr4SGk2V3dZmcG6yw3WXWGw7kqDdVcZrLvaYN01BVSPGo8ltLyfN5b299IaLx3gpQO9dJCXDvbSIV461EuHeelwLx3hpSO9dJSXjvbSMV461kvHeel4L53gpRO9dJKXfuWlk710ipdO9dJpXjrdS7/20hleOtNLZyXW1XK2t/4bL53jpXO9dJ6XzvfSBV76rZcu9NJFXrrYS5d46VIvXealy710hZeu9NJVXrraS9d46VovXeel6710g5du9NLvvHSTl2720i1eutVLt3npdpqz7qD895TfSfldlN/t5W+QIxUL6nNHodP4z2b8p3MRLSegrJiWk1DWlpZzoawdLedBWXtazoeyDrRcoG1TnzTlqSw/Bv4QmuL/ujngT/73Pi9zzn4pgjL2SzGUse1toYz90g7KuL32UMbtsT9V/b1gO3+wL9kn2G+8Pd/HpgIfm9r42FToY1MRaM6H9TTlqSw/+eAjqTox3vmj/8k3DcvtwHdtZbW4+U5jfwvVmfFZRwM+a++03GcdwWcdDPisk2ydGZ91MeCzTk7LfdYFfNbZgM+6ytaZ8Vk3Az7r6rTcZ93AZ5sZ8Fl32TpTBurM6OxhQGcv2TqrVd9u7rS8b3tB3/Y04LPesnVmfNZHuE5VR1/wCfuPtRfD9j7gr77C/sqBNrleXu8L7ZaItluamQ/QfvVpLmZKQEs/US0NMdNfts5M/w4A/Wwrt1MM24vAtgHCtuVAm1wvr6O+WGusNdYaa421xlpjrbHWWGusNdYaa421xlpjrbHWWGusNdYaa7VFq4F2Swu1dtUnR1tPO+v7qhi+xz5TdQ3U/Kc0DzLgq4GaPl4fBPq4rB/si9/z+33CT39/A/qb+n3CnN8afp9oTV8PAi0DRbU0/D4xWLbOzO8TQ0A/28rtFMN2HMtDhG3LgTa5Xl5HfbHWWGusNdYaa421xlpjrbHWWGusNdYaa421xlpjrbHWWGusNdZqi1YD7WZ+n8B21ae5a9ZDwC+DNZ+purbQ/Kc0DzXgqy00fbw+FPRxGf4mgd/z+33CT7/wdfRmf58w2G5qY+3fIkD7UV+sNdbaUq19NrFW+XnOrSrU2lWf5ubmoQZ9oOocJltnZj4aDvrZVm6nGLZjLA4Xti0H2uR6eR31xVpjrbHWWGusNdYaa421xlpjrbHWWGusNdZqi1Z81lkCtAif27vNXacY5qOlMERa8kOkJRkiLQUh0pIbIi1tQqQlL0RacjaxlkJn/eulhbA9AWU8P+KzPUfQMj47cyQt50HZKLCTy0bTMj5Pcwwt4/M0U7DMOT+UuQjKSmkZnyXKD1jGZ4nyg5HxuaH8QOMOUMYPIu4EZfwA4c5Qxg/+7QplNbS8GZSNpeXuUDaOlntA2Xha3hzKJtByTyibSMu9oWwSLW8BZdyH2Ofch8OhjPtwBJRxH46EMu7DUVDGfTgayrgPx0AZ9yH2KfehC2Xch6VQxn1YBmX8rNFyKON+rYAy7tdKKONnblZBGfd1NZRxX9dAGT97ciyUcf+PgzLu//FQxs9gnABlHBMToYxjgvtU9cXRicbt/H0co9wOjtFJPu1N9NHFyzgn8XfSlKey+2TmJGwnDevcVhFoGB8CLXkh0tImRFpyQ6SlIERakiHSkh8iLYUh0pLw0TJOVkvmEMfHB/XheXgc6GBNY0FHtbBPVB2VPjqqQQcfAyuhjDXh8bFSK1N6K4T15mh607BeAfpqNM35oEtSS42mpca8DzLYgy8HmeRjPzNPGZSxJuShMq1M6S014KcyzU+8Xgr6KjXN+aBLUktT8YM+KJNttwxtVZ9Jmq3YZ6Wgw5XVkWki5aMDz5m4/RToGCOrIxOqo310jAEd3P5o0DFKVkem60f66BgFOrj9kaBjhKyOzNAc7qNjBOjg9oeDDhPXQJua00y329S4xHZNXAfh+hXLq3U+7nJbSdhnb4IDdW6J1z3wXC9Ny3hOOJmW8Xg5hZbxvHMqLeMcPY2W8Xx3OtsPZVvSMp5nb0XLeI7OfIPn9/r7PPGcfzKU8fnOFChjjpwKZczc06CMz0+mQxlz35ZQxuf8rL2A2hB+Dnvm3m2+75E/zV0X4/aL4Xt4DYef44L3UpbIas7Eaz9NH6+XgD4uw3c6SD/DXWlpq2nh9X6G222vtds+oHY7au12DKjdzlq7nQNqt4fWbg+t3aZ+DzOhxdG0OM1o6RoiLR1CpKVjiLQUhUhLQYi05IZIS88QaekdIi3dQ6SlR4i0dAmRlnYh0tI+RFoKQ6QlP0RakiHS0itEWjYPkZY+IdKyWYi0mD7Pa42WTiHS0jlEWopDpKVtiLS0CZGWvBBpydnEWpq6/4u3470lJbSM91z112xSZQNoGe+54ucL4Pub+dm+eB8W3/uL92ENoeWOUMb3N+G9WfzfXrw3i6/vdoEyviaK92vxNXi8N4uvp+K9WewP9B8zRQmU8fkdPveB424AlDEbDYQyPk8dBGU8fgZDGTPeECjjvsH7v7hvhkIZ9w3eE8Z9g9eMuW/wnjDuG7zP70l4rzp/H2MHr7Nz2Uif9kb46OJlHCsm7wvn+waGafrwvqRhIdCSFyItbUKkpW2ItBSHSEvnEGnpFCIt3UKkZbMQaekTIi2bh0hLrxBpSYZIS36ItBSGSEv7EGlpFyItXUKkpUeItHQPkZbeIdLSM0RackOkpSBEWopCpKVjiLR0CJGWriHSkghIC19X4HpHaFpUu8LP4FzvWZJ8vWMo2M/t4zPyhgjryNF0lEC7Q6Bd6Wd4qjoG+dg/GOzn9vE9Xybe1dYNdKRhHa+x8TkG94+a4/dNNuoaZkAXxt9RzvrnOXhf6lHJRl0HJBt9yPcs9gFbSrQyVX9/A/q5Ha6X17ktpU+/dxH14Xv7+Dt4bTXh892k1gbfOyrcPynsH9ag9w/Oc3wvqD6mk7DP8dCHlQWN3xPWvs695gnH//xZeLxnbl3mseNA/ehDfM6w33w4SNtP6Rwgq9PVdXD7A6CsxEfnQNDZX9vPwO83KX185TjrjxF9mW3BZ6gI31Pd7PG0L7Qr/D+OzL3cfZ11P/pvV2lYxmcOpGS1VCgto1uhxeD/bFwD/yFKGfiPWMYF+B8x9h9rL3bW/8+Ygf9pZeLXddbtJ15HfbHWWKstWpWWvprOQtivbwj0cRk+D6Sn5j/FRfeYY+4KP+bWryshc19Z0KjrAWDu4ZpflS1DnfV9beK9CMhYaWf9Y34R2ILPOzfxjolhmpYwtSvNt9jH/GnumI8MJnvu1fAe7YGt0NIftEjztAn2NcCPGf5AZtPfzV4M25EdRwv7K8dp+v99qC/WGmuNtcZaY62x1lhrrDXWGmuNtcZaY62x1lhrrDXWGmuNtcZabdGqtAzVdBbCfkNDoI/LBpjTUlqoaVGf5q7djwYtsr/zN/yOMKYVWlzQInxPhRvEPQdsK74rgrfj+DDxG2mp5lNeb+r35lhrrDXWGmuNtcZaY62x1lhrrDXWGmuNtcZaY62x1lhrrDXWGmsNs1a8po7/++D9+oVAn9+7sIS1ZKouBy3DNR1FoAPfUSb6bjS34b562XfVNfyGoL+fT5VVa2Wq7RrRtlOuaofft8Sf5n6/wPf68vuc8L9b42X1Zf7DOwHqT0Mb1VA+Udgv2G4OJW6Dy5Ow/G1u4768nyr6GfxUDvVNouUE7TPRZ59xsIz18Hf1Ze5H9k+xs/47M3Ognqb05cP30pSnsvtk/DketKZhfRLo+SC3UcNYWQ2l6NNcqpdjaKw521MYExzDer/kQ3uSPud2OYa5bi5PwnJ7fiCqs+6Y57hizUXO+n2j5gO/cWnCpqbeT5uG8qb2wfGS9rFxPNg4wWc/v+9wncWwfUIL28HvYAymte+msvu4OOdwvXqcqzHxA4w/4bk8o6Gp9ybie4SljyEqNntp7Sgzu+Q1tin7DlW3XtmKx+00aOC2krDPKvifbHfSpWKQ/wOJz54eoJXJ/z+yoa+4Ha6X17ktpY/vQxlgUIuqA59bMdxHB7eP/x0WfW6Ha+I/lQ3sp99fpMpSWpn8vSsN7Neae1fwPZrMfNjvwu8hTvmNoXJNiyqvFPYLtsvHTZ3PcexW5DXuy/sxW7Gf+kJ9fAxg9qv02acMlrEeZHVc5n5k/xTDdqyrdAP68h0z7wDHc7c0rFeBnqEwHwvfx1SKPmX24xgqNWd7CmOCY1jvF1Uu/c56bJdjmNvg8iQszwD2q25cXBtXrBnPs/Fc0G9cmrAJz4/SsF4N5U3tg+PFz8ZysLHCZ7/m/FLsrH++vqF28DsYgyb8hranYZ3bUmOiGsaf7DWOhnGgzwGjNX/Jj3t/DvO7TmRizuPxze/MZh3cVhL2mUW+b0fr+J5v/fpkEXwP5xbZa0OlKQPn4BmEwXNw5sex4BPePj+vcb8FtIzXygZDPXv5bOdPc0xTA/6bIGur73n/BJ92TVxr0c/7uQ2/8/49Ye7Hc0T2L2tWced3Ho3Lldp38BrUeMM26+fcEzR9Kk72gJjaC+Y76TkX7UW/4G8MvB2vpQ/V9lfxzOMBz/ekxyVeG+N6eX0s6OOyanNaMi7C6wTDNR1FoKMG/MTLeB41QSszca0Yr33xp7k5ZwLo87sOOFlWX2YemgL1p6ENvLY+Vdgv2C7PQ9wGlydh+RQ4j+L9+DyF/YTnSNNomc+jpvrsk4ZlrIe/qy9zP7J/imF7GuqatAF9+T7fS2X3yfhzMmhNw/o00HMEzGvC82wp+pTPo/R51oDtKYwJjmG9DVU+3YDPuV2OYW6Dy5OwfDkcS6c3Lq6NK9ZcBP7i/dR84DcuTdg0GWxKw/p0KG9qHxwvfjZOBhun+OzXnF+KYfuUFraD38EYNOE3tD0N69yWGhOnw/gTnsvXYTuud6LmDxPHEBWbvbV2lK3XgK2yHNBw7qb/PsYa/M4XxsI19Bt8rqHzvRJ4DR3vn+gvqj9U19AziBlfQ4+voaedcF5Dfyy+hr5Bf7bkGvr98TX0TXYN/eX4Gnrkr6E/EV9D32TX0N+Kr6Gv9Qlv/xCud368gWvoP8XX0Nf6uLXX0H+M0DX0zyCmfgrhNfR+2v54DR3P98JyDR2vZ+N9XjVa2aa6Jw/v98QxJ30veg60w/UG1W611m61T7vCvs8cOnG8DffxO7eP1wOF59hm/Y7tCv9uUoq/z/CnueMMHgdMzH1NxQBeU0wb8AHO/RvyQRq0TBH2AV5/bokW/E1J+rcOpWVqK7RMAy1bGtAyvRVatgQtWxvQslUrtGwNWrY1oGWbVmjZFrTMENbS3Bw2w3C7Tc0bptsNq72KcXheZ64phO14TNnOgL4Zmj5e3w70cRlyGc/DlT6aJ4VIczWU8XxdA2U8bw6BMp6/BkEZzyMJKOPxXEJ5EbSL78fdXitTfpkJ+qX8wu1wvbw+E/Sxj7YHLdsb0NLUeDPdblPjLcr2CsdaNdavxgO/73cmtLmTcJuqzp2F/afqmEV1qfNzHhvcThK2z8lv3G8eLauxvQNtnwH11Pts509zx/ydwH9zZG3NXBuaC/WnoQ1sd55suy62y9eGuA0uT8JyXX6jP+Y1Lq71L2tWc9lsn/1weQftO8WwfbZhm+eAjjSsc1sqTuZDTHHMqGxHYT1oL/ple/ALb68Cv5gcb9j+ztCmcNxn5o25BuzAfuT+wnjm7ftAH+8H88JOWl+o7cf4bOdPc/PGHPDfrrK2ZuaN+VB/GtrAdneTbdfFdnne4Da4PAnLR8O8sVvj4lr/smY1b+zisx8u76R9pxi272LY5l1BRxrWuS0VJwdATB0D88ZsYT0G4ilzDWcXZ91Pc7GNfcDfw/Mk7n/T/TJf08fru4E+LkMWxO9xXM3y+Q76BI9hvC/OkbvI2peZI+cL+wx9o+J0tuaPJGw/G+L5HJgD52p+U9uv8tnOn+biCONjd1lbM3PkQqg/DW1gu3vItutiuzxHchtcnoTlK2GO3KNxca1/WbOaIxf47IfLc7XvFMP2BYZt3h10pGGd21Jxcj7E1FUwRwrzhWsgnjJz5AJn3U9zsY19wN/D6zLc/6b7ZaGmj9f3AH1chuet+D2Oq3k+30Gf4PGa98U5coGsfZk5cqGwz9A3Kk7naP5IwvY7IZ7vhjlwvuY3tf0Rn+38aS6OMD4Wy9qamSNrof40tIHtLpFt18V2eY7kNrg8CcsPwxy5pHFxrX9Zs5ojF/nsh8vzte8Uw/ZFhm1eDDrSsM5tqTi5D2LqEZgjhfnCRXvRL8hOvB1/X8fjDe+LY3yRrM5qA3Gfsb0WfM6+5XYw9p6C/ngaxvBCzW9q+6s+2/nT3BhfBP5bKmtrZozXQf1paAPbrZdt18V2eYxzG1yehOVXYIzXNy6u9S9rVmN8ic9+uLxQ+04xbF9i2OaloCMN69yWipNnIaZehTEufHx00V70Cx77efsQ2K8WlnlfHOPCc2O1gbjP2F4HPmffcjsYe+9Cf7wPY3ix5je1/Tuf7fxpboxj3C2TtTUzxpdD/WloA9tdIduui+3yGOc2uDwJy9/CGF/RuLjWv6xZjfF6n/1webH2nWLYXm/Y5mWgIw3r3JaKk48gpr6DMb5IWA/ai36pBb/w9kGwXx0s8744xoXnxmoDcZ+xfTn4fBEtczsYewn4b10uLasxvFTzW+a5ej7b+dPcGMe421PW1swY3wvqT0Mb2O5K2XZdbJfHOLfB5UlY7lzQ6I+VjYtr/cua1Rhf4bMfLi/VvlMM21cYtnlP0JGGdW5LxUkBxBTHjIlzB7QX/VIHfuHtCdhvOSzzvjjGhefGagNxn7F9L/A5+5bbwdjrDf3RF8bwMs1vavson+38aW6MY9ztLWtrZoyvgvrT0Aa2u1q2XRfb5THObXB5EpZHwhhf3bi41r+sWY3xlT774fIy7TvFsH2lYZv3Bh1pWOe2VJz0h5gaBWNc+twB7UW/LAe/8PYSKOuj7a/imccD3tskPS7xuMD18jrO11yG5z+V4MdhwrpUHcNBF98HMwz8w2XDQdO+yYZl/C8D/t++WitT2k38X6ype4fwv5f8W1Z1wFp6a1pUu1n+79rVC/T/6k12/P+zyvtMp1hS/5nz+5+t3/8ghP+jvs5/xfM0HX7PSt4WNKsPvstDfwY5/g8V/yss/R5oVaf0+5xVHfy/RTXGOG5T4BPevhPMs7Pg2Mw24/8Fa32286e5Yze+u1r2GQ4NcTsY6k9DG9juQNl2XWyXj93cBpcnYXkxHLsHNi6u9S9rVnE32mc/XNbfMVMM20cbtnkU6EjDOrel4mQuxFQtHHOEnyvgor3ol97gF7//OUuPN+WXMZpfWEMKtPTTdKpxxDGKxzfh995n9LmaPl4fDfq4rBT0sR04n1wDz8hhv+L/D8u0MhN9j//x5nrLNP1KHx8HygLW0kvTInDs8D1m4zMfJoMObisJ+xyiHbNxfkw7/v9rH5OdZl9fsZ48TccYH81HasdsHO/6szyK4Hs4Dw4WtaHhmC09t6o6BlBdaoxx3A4En/D2E2B+PQmOyfpcp7af57OdP80ds/GYKvosp1RD3OrvLOnr0+442XbX+W8CH7P1/1knYflcOGbj/7PZv6xZxV1/n/1webT2Hfw/d3/DNuPzu9Kwjmx3CsTUeXDMFuY1F+1Fv/QCv/B2nNtMsMwAZ12/sIaBoGWoplONI/3dKvmOmWfADdb08Xp/0Mdl+PwytgPnky5wzObz777wnaFamfy82WATt8P18jq3pfQN0/yrL/ekvB+UIR+P1L6Dz/IbCPYJ91mFqfHCsZcLvuF2krD9VhjDt8O8zzbjdZeHfLbzp7njAs5Vwhyd8mOSlE+7JvjNBdtzoA3kKF5+EI4L+J5L9i9rVnE3xmc/XB6ofQffiznGsM0p0JGGdXxO3Z0QUw/BcWGAsB60F/3SE/zC25ERTI43bB/PtftqGtUY4vjE+dMEO+OxMw3rY0Aflw0AfWwHziX3JBu1djSgtYOmldc7OmbbzdPazQuo3QKt3YKA2i3U2i0MqN1ird3igNoNPq7cKlVnF+E6VT91ctb9NHfs7QL2dRbVknLbeHW0obqW1a2ZuXpN3f45oIl1dqe8CHThb99J+E6us75t+T5lbXzKipz1P21huR0sd4Tvtdd0Kh93peVOULYZLXeGMrajK5SxPbx/gbN+H4kefPiT0OouS1WWl9dVlda5Ze7iVGlNbXVFqryitrLarXYrqiuWllaXldVVl1dX1dTWVKVq3PKyOre+oqasnipPCOr8fUIO+tDmHGF/3pWQ8x/qTK6v001l8dlP92cWte0vaPOLeWb6Oenfzxtt9Rq/eNzI2g4Q9N9/g/VfamOtPrCp8bwRtR0k6L+XgvdfamOsPri5+bCVtR0i6L+XN43/Uq21+tANHU9aUdthgv57ZdP5L9Uaqw9vyfG4hbUdIei/Vzet/1IttfrIlvJMC2o7StB/r216/6VaYvXRreHBDdR2jKD//hcO/6U2ZPWxreXpZmo7TtB/r4fHf6nmrD5+Y85HmqjtBEH/vREu/6WasvrEjT2f86ntJEH/vRk+/6X8rP5VIgudWm0nC/rvrXD6L6VbfUoiS51Q26mC/ns7vP5LodWnJQR0Um2nC/rvnXD7L8VW/zohpNOr7QxB/70bfv+pj3tmQq4uvOaUrf/es8R/gteJ3JcE/fe+Jf4TvM7hviLovw8s8Z/gebr7mqD/PrTEf4Lnme7rgv77yBL/CZ4nuW8K+u9jS/wnyPnu24L++8QS/wlyqvuuoP8+tcR/gpzlvi/ov88s8Z8gJ7gfCvrvc0v8J3iccz8W9N8XlvhPcJ52PxX035eW+E9wnnE/F/TfV5b4T3CcuF8K+u/rgPyXrc57BK+/CMaM+3Vw8ZfV/VdnJ+Tuv/qN4PW/rvmBjt+NtvqchNz9V+cK+m+z/MDnv42y+ryE3P1X5wv6r1vw/kttjNUXJOTuv/qtoP+6bxr/pVpr9YUbOn60oraLBP3XY9P5L9Uaqy9uyfG3hbVdIui/zTet/1IttfrSlvJLC2q7TNB/PTe9/1Itsfry1vDfBmq7QtB/vcLhv9SGrL6ytfzcTG1XCfqvd3j8l2rO6qs35vyjidquEfRfn3D5L9WU1dcmNlKnT23XCfqvb/j8l/Kz+vpEFjq12m4Q9F+/cPovpVt9YyJLnVDb7wT9VxJe/6XQ6psSAjqptpsF/dc/3P5LsdW3JIR0erXdKui/AeH3n/q4tyXk6sJrTtn6b6Al/hO8TuR2E/TfIEv8J3idw+0h6L/BlvhP8Dzd7SnovyGW+E/wPNPtLei/LSzxn+B5kttX0H9DLfGfIOe7JYL+G2aJ/wQ51R0g6L/hlvhPkLPcQYL+G2GJ/wQ5wR0i6L+RlvhP8DjnDhX03yhL/Cc4T7vDBf032hL/Cc4z7khB/42xxH+C48QdLei/VED+y1bnvYLXXwRjxpX0Hz/gkB+mqO45+9nLz6L8Xspvp/wOytXnvkTDs73U9xNUtsRp2H4f7Hd/oqFv1nvAmiP/bLA7E7K+4c8DicYH3yWc9WMu34AtjtaO7r/2juGH1pnonAcS8vX+QfDisCm7/5AQ76N1Jr+EVne2frhb0Kf/JziRZjNh/bGZCeuPsN+DPvslaL8Hab/Mk5NxJjDQB5Jx/aeQ9MGfm+mDP8N+f2mmD/4CffCwz3530vaHKVeT5yO00cTc85DPnJZtf80UhiRpu1U8PWLA7h0sgcNHBceTYF+7kv4LCtq6y9WVwqcbc52PeX31uJf+6qUnvPQ3Lz3ppb976Skv/cNLT3vpn156xkvPeuk5L/3LS8976d9eesFL//HSi176r5de8tLLXnrFS6966TUv/c9Lr3vpDS+96aW3vPS2l97x0rtees9L73vpAy996KWPvPSxlz7x0qde+sxLn3vpCy996aWvvPS1l77x0rde+s5L33vpBy/96KWf1PzmpV8SDQGe46WEl5JeyvVSnpfyk+s+ITmh9SU+uVmqDwzAcAq1c66OPwVgm6Ntb0/25YlqKU/hE6QdiDfHx5cOtK+05IpqaXjCNz8de1ndmskHrFk+b8WaVXX7r/Ocb332y/HxVqHTGA1JKGMP50JZAiziMv5OAeTGTk+SzvqhjIZJtfNYwszhSNQfbsNzwPlTQD3RJtkYejngL9WRv/j4LAeWE7RPopl9cpqop6mhaCwY2Dhl+NdgrHKA/hR66Ytsjwkwel29+qRcpT/buphP2iSDOc9MZfcRtblwnbq8fReXllfWVaQq66prqutqquorqlJLFtfXL61KlS+pTdXWllemytyy+tqq0lRtaY3XbE1dxZLMvWtuUOxTKNhPqLcoGV+wEukc5UjpeosFg96U3cVJ8T7y1Sox0RUn5ettKzww1SBUdTIqBUEvj1tIL+0o7tpHjV7aafTSPgB6eVyQXtoJTmrtLaEXSZs7WEgvHQzRS8eYXmQ6p6MBeukUcnpRdneyhF7ak1bpejsboJfOAdPLXy2kly4Ud12jRi9dNHrpGgC9/FWQXroITmpdLaEXSZs3s5BeNjNEL91iepHpnG4G6KV7yOlF2d3dEnrpSlql6+1hgF56BEwvT1hIL5tT3PWMGr1srtFLzwDo5QlBetlccFLraQm9SNrcy0J66WWIXnrH9CLTOb0N0EufkNOLsruPJfTSk7RK19vXAL30DZhe/mYhvfSjuCuJGr300+ilJAB6+ZsgvfQTnNRKLKEXSZv7W0gv/Q3Ry4CYXmQ6Z4ABehkYcnpRdg+0hF5KSKt0vYMM0MuggOnlSQvpZTDF3ZCo0ctgjV6GBEAvTwrSy2DBSW2IJfQiafMWFtLLFoboZWhMLzKdM9QAvQwLOb0ou4dZQi9DSKt0vcMN0MvwgOnl7xbSywiKu5FRo5cRGr2MDIBe/i5ILyMEJ7WRltCLpM2jLKSXUYboZXRMLzKdM9oAvYwJOb0ou8dYQi8jSat0vSkD9JIKmF6espBeXIq70qjRi6vRS2kA9PKUIL24gpNaqSX0ImlzmYX0UmaIXspjepHpnHID9FIRcnpRdldYQi+lpFW63koD9FIZML38w0J6qaK4q44avVRp9FIdAL38Q5BeqgQntWpL6EXS5hoL6aXGEL2MjelFpnPGGqCXcSGnF2X3OEvopZq0Stc73gC9jA+YXp62kF4mUNxNjBq9TNDoZWIA9PK0IL1MEJzUJlpCL5I2T7KQXiYZopd0TC9CnWOAXiaHnF6U3ZMtoZeJpFW63ikG6GVKwPTyTwvpZSrF3bSo0ctUjV6mBUAv/xSkl6mCk9o0S+hF0ubpFtLLdEP0smVMLzKds6UBetkq5PSi7N7KEnqZRlql693aAL1sHTC9PGMhvWxDcbdt1OhlG41etg2AXp4RpJdtBCe1bS2hF0mbZ1hILzMM0ct2Mb3IdM52Buhl+5DTi7J7e0voZVvSKl3vTAP0MjNgennWQnrZgeJux6jRyw4avewYAL08K0gvOwhOajtaQi+SNu9kIb3sZIhedo7pRaZzdjZAL7NCTi/K7lmW0MuOpFW63tkG6GV2wPTynIX0Mofibm7U6GWORi9zA6CX5wTpZY7gpDbXEnqRtHmehfQyzxC97BLTi0zn7GKAXnYNOb0ou3e1hF7mklbpeucboJf5AdPLvyykl90o7hZEjV520+hlQQD08i9BetlNcFJbYAm9SNq8u4X0srshelkY04tM5yw0QC97hJxelN17WEIvC0irdL2LDNDLooDp5XkL6WUxxV1t1OhlsUYvtQHQy/OC9LJYcFKrtYReJG1eYiG9LDFEL0tjepHpnKUG6KUu5PSi7K6zhF5qSat0vfUG6KU+YHr5t4X0sozibnnU6GWZRi/LA6CXfwvSyzLBSW25JfQiafMKC+llhSF62TOmF5nO2dMAvewVcnpRdu9lCb0sJ63S9a40QC8rA6aXFyykl70p7lZFjV721uhlVQD08oIgvewtOKmtsoReJG1ebSG9rDZEL/vE9CLTOfsYoJd9Q04vyu59LaGXVaRVut79DNDLfgHTy38spJf9Ke7WRI1e9tfoZU0A9PIfQXrZX3BSW2MJvUjafICF9HKAIXo5MKYXmc450AC9HBRyelF2H2QJvawhrdL1HmyAXg4OmF5etJBeDqG4OzRq9HKIRi+HBkAvLwrSyyGCk9qhltCLpM2HWUgvhxmil8NjepHpnMMN0MsRIacXZfcRltDLoaRVut4jDdDLkQHTy38tpJejKO6Ojhq9HKXRy9EB0Mt/BenlKMFJ7WhL6EXS5mMspJdjDNHLsTG9yHTOsQbo5biQ04uy+zhL6OVo0ipd7/EG6OX4gOnlJQvp5QSKuxOjRi8naPRyYgD08pIgvZwgOKmdaAm9SNp8koX0cpIhevlVTC8ynfMrA/RycsjpRdl9siX0ciJpla73FAP0ckrA9PKyhfRyKsXdaVGjl1M1ejktAHp5WZBeThWc1E6zhF4kbT7dQno53RC9/DqmF5nO+bUBejkj5PSi7D7DEno5jbRK13umAXo5M2B6ecVCejmL4u7sqNHLWRq9nB0AvbwiSC9nCU5qZ1tCL5I2/8ZCevmNIXo5J6YXmc45xwC9nBtyelF2n2sJvZxNWqXrPc8AvZwXML28aiG9nE9xd0HU6OV8jV4uCIBeXhWkl/MFJ7ULLKEXSZt/ayG9/NYQvVwY04tM51xogF4uCjm9KLsvsoReLiCt0vVebIBeLg6YXl6zkF4uobi7NGr0colGL5cGQC+vCdLLJYKT2qWW0IukzZdZSC+XGaKXy2N6kemcyw3QyxUhpxdl9xWW0MulpFW63isN0MuVAdPL/yykl6so7q6OGr1cpdHL1QHQy/8E6eUqwUntakvoRdLmayykl2sM0cu1Mb3IdM61BujlupDTi7L7Okvo5WrSKl3v9Qbo5fqA6eV1C+nlBoq7G6NGLzdo9HJjAPTyuiC93CA4qd1oCb1I2vw7C+nld4bo5aaYXmQ65yYD9HJzyOlF2X2zJfRyI2mVrvcWA/RyS8D08oaF9HIrxd1tUaOXWzV6uS0AenlDkF5uFZzUbrOEXiRtvt1CerndEL3cEdOLTOfcYYBefh9yelF2/94SermNtErXe6cBerkzYHp500J6uYvi7u6o0ctdGr3cHQC9vClIL3cJTmp3W0IvkjbfYyG93GOIXu6N6UWmc+41QC/3hZxelN33WUIvd5NW6XrvN0Av9wdML29ZSC8PUNz9IWr08oBGL38IgF7eEqSXBwQntT9YQi+SNv+fhfTyf4bo5Y8xvch0zh8N0MuDIacXZfeDltDLH0irdL0PGaCXhwKml7ctpJc/Udz9OWr08ieNXv4cAL28LUgvfxKc1P5sCb1I2vwXC+nlL4bo5eGYXmQ652ED9PJIyOlF2f2IJfTyZ9IqXe+jBujl0YDp5R0L6eUxirvHo0Yvj2n08ngA9PKOIL08JjipPW4JvUja/FcL6eWvhujliZheZDrnCQP08reQ04uy+2+W0MvjpFW63icN0MuTAdPLuxbSy98p7p6KGr38XaOXpwKgl3cF6eXvgpPaU5bQi6TN/7CQXv5hiF6ejulFpnOeNkAv/ww5vSi7/2kJvTxFWqXrfcYAvTwTML28ZyG9PEtx91zU6OVZjV6eC4Be3hOkl2cFJ7XnLKEXSZv/ZSG9/MsQvTwf04tM5zxvgF7+HXJ6UXb/2xJ6eY60Stf7ggF6eSFgennfQnr5D8Xdi1Gjl/9o9PJiAPTyviC9/EdwUnvREnqRtPm/FtLLfw3Ry0sxvch0zksG6OXlkNOLsvtlS+jlRdIqXe8rBujllYDp5QML6eVVirvXokYvr2r08loA9PKBIL28KjipvWYJvUja/D8L6eV/hujl9ZheZDrndQP08kbI6UXZ/YYl9PIaaZWu900D9PJmwPTyoYX08hbF3dtRo5e3NHp5OwB6+VCQXt4SnNTetoReJG1+x0J6eccQvbwb04tM57xrgF7eCzm9KLvfs4Re3iat0vW+b4Be3g+YXj6ykF4+oLj7MGr08oFGLx8GQC8fCdLLB4KT2oeW0IukzR9ZSC8fGaKXj2N6kemcjw3Qyychpxdl9yeW0MuHpFW63k8N0MunAdPLxxbSy2cUd59HjV4+0+jl8wDo5WNBevlMcFL73BJ6kbT5Cwvp5QtD9PJlTC8ynfOlAXr5KuT0ouz+yhJ6+Zy0Stf7tQF6+TpgevnEQnr5huLu26jRyzcavXwbAL18Ikgv3whOat9aQi+SNn9nIb18Z4hevo/pRaZzvjdALz+EnF6U3T9YQi/fklbpen80QC8/Bkwvn1pILz9R3P0cNXr5SaOXnwOgl08F6eUnwUntZ0voRdLmXyykl18M0Ysa5TG9ZFmn6hzlRel6c3LDTS/K7pxc8T4yQi8/k1bpehO58vSi6gySXj6zkF6SFHe5uRGjF2U40otygGl6+UyQXpKCk1purpnAlaYXSZvzcu2jlzzhSZI/+TG9yHROvgF6KQg5vSi7Cyyhl1zSKl1vGwP00iZgevncQnoppLgrihq9FGr0UhQAvXwuSC+FgpNakSX0ImlzsYX0UmyIXtrG9CLTOW0N0Eu7kNOLsrudJfRSRFql621vgF7aB0wvX1hILx0o7jpGjV46aPTSMQB6+UKQXjoITmodLaEXSZs7WUgvnQzRS+eYXmQ6p7MBeukScnpRdnexhF46klbpersaoJeuAdPLlxbSy2YUd92iRi+bafTSLQB6+VKQXjYTnNS6WUIvkjZ3t5Beuhuilx4xvch0Tg8D9LJ5yOlF2b25JfTSjbRK19vTAL30DJhevrKQXnpR3PWOGr300uildwD08pUgvfQSnNR6W0Ivkjb3sZBe+hiil74xvch0Tl8D9NIv5PSi7O5nCb30Jq3S9ZYYoJeSgOnlawvppT/F3YCo0Ut/jV4GBEAvXwvSS3/BSW2AJfQiafNAC+lloCF6GRTTi0znDDJAL4NDTi/K7sGW0MsA0ipd7xAD9DIkYHr5xkJ62YLibmjU6GULjV6GBkAv3wjSyxaCk9pQS+hF0uZhFtLLMEP0MjymF5nOGW6AXkaEnF6U3SMsoZehpFW63pEG6GVkwPTyrYX0MoribnTU6GWURi+jA6CXbwXpZZTgpDbaEnqRtHmMhfQyxhC9pGJ6kemclAF6cUNOL8pu1xJ6GU1apestNUAvpQHTy3cW0ksZxV151OilTKOX8gDo5TtBeikTnNTKLaEXSZsrLKSXCkP0UhnTi0znVBqgl6qQ04uyu8oSeiknrdL1Vhugl+qA6eV7C+mlhuJubNTopUajl7EB0Mv3gvRSIzipjbWEXiRtHmchvYwzRC/jY3qR6ZzxBuhlQsjpRdk9wRJ6GUtapeudaIBeJgZMLz9YSC+TKO7SUaOXSRq9pAOglx8E6WWS4KSWtoReJG2ebCG9TDZEL1NiepHpnCkG6GVqyOlF2T3VEnpJk1bpeqcZoJdpAdPLjxbSy3SKuy2jRi/TNXrZMgB6+VGQXqYLTmpbWkIvkjZvZSG9bGWIXraO6UWmc7Y2QC/bhJxelN3bWEIvW5JW6Xq3NUAv2wZMLz9ZSC8zKO62ixq9zNDoZbsA6OUnQXqZITipbWcJvUjavL2F9LK9IXqZGdOLTOfMNEAvO4ScXpTdO1hCL9uRVul6dzRALzsGTC8/W0gvO1Hc7Rw1etlJo5edA6CXnwXpZSfBSW1nS+hF0uZZFtLLLEP0MjumF5nOmW2AXuaEnF6U3XMsoZedSat0vXMN0MvcgOnlFwvpZR7F3S5Ro5d5Gr3sEgC9/CJIL/MEJ7VdLKEXSZt3tZBedjVEL/NjepHpnPkG6GW3kNOLsns3S+hlF9IqXe8CA/SyIGB6UQ1J2eAj1wi97E5xtzBq9LK7Ri8LA6AXDJBs6WV3wUltoSX0ImnzHhbSyx6G6GVRTC8ynbPIAL0sDjm9KLsXW0IvC0mrdL21BuilNmB6ybGQXpZQ3C2NGr0s0ehlaQD0kiNIL0sEJ7WlltCLpM11FtJLnSF6qY/pRaZz6g3Qy7KQ04uye5kl9LKUtErXu9wAvSwPmF4SFtLLCoq7PaNGLys0etkzAHpJCNLLCsFJbU9L6EXS5r0spJe9DNHLypheZDpnpQF62Tvk9KLs3tsSetmTtErXu8oAvawKmF6SFtLLaoq7faJGL6s1etknAHpJCtLLasFJbR9L6EXS5n0tpJd9DdHLfjG9yHTOfgboZf+Q04uye39L6GUf0ipd7xoD9LImYHrJtZBeDqC4OzBq9HKARi8HBkAvuYL0coDgpHagJfQiafNBFtLLQYbo5eCYXmQ652AD9HJIyOlF2X2IJfRyIGmVrvdQA/RyaMD0kmchvRxGcXd41OjlMI1eDg+AXvIE6eUwwUntcEvoRdLmIyyklyMM0cuRMb3IdM6RBujlqJDTi7L7KEvo5XDSKl3v0Qbo5eiA6SXfQno5huLu2KjRyzEavRwbAL3kC9LLMYKT2rGW0IukzcdZSC/HGaKX42N6kemc4w3Qywkhpxdl9wmW0MuxpFW63hMN0MuJRC9qXeUlVP9+iYYD1f6Ur6H8AMoPpPwgyg+m/BDKD6X8MMoPp/wIyo+k/CjKj6b8GMqPpfw4yo+n/ATKT6T8JMp/RfnJlJ9C+amUn0b56ZT/mvIzKD+T8rMoZz+cTeu/ofwcys+l/DzKz6f8Asp/S/mFlF9E+cWUX0L5pZRfRvnllF9B+ZWUX0X51ZRfQ/m1lF9H+fWU30D5jZT/jvKbKL+Z8lsov5Xy2yi/nfI0+aFNsmG9PeVdKe9JeQnlQygfSXkp5dWUT6R8GuXbUr4j5XMpX0B5LeXLKV9F+RrKD6X8aMpPpPw0ys+m/ALKL6X8aspvpPw2yu+m/A+U/5nyxyl/ivLnKH+R8tcof5vyDyn/nPJvKf+Z8lwCwSLKO1LejfLelA+gfCjloynn133zizP5FVT8Mgd+LDI/YJAf1cN/eue/j/GN2HxLE/84yJfZGFhLKA52orjYmfJZlM+mfA7lcymfR/kulO9K+XzKd6N8AeW7U76Q8j0oX0T5YsprKV9C+VLK6yivp3wZ5cspX0H5npTvRflKyvemfBXlqynfh+cbOAapj/Rx7iTh43BTOrOt+1cCx6K66srFteX19Sb8uIeKCQN275xvlj1S2X3cZSpWDdg9S9hu/iSFdZ4sx0iuYF+7s0IeN3d789v9Cfm4mRtyu//Ps/lRA3bPs2S8nCI4XgT72jXlv4Rw/OQI9sWpllwgSwjafJolNicFbT7dEptzBW3+tSU25wnafIYlNucL2nymJTYXCNp8liU29xS0+WxLbP6V4Pn0byyxuYdgP58TQZvPjaDN51li88mC4/l8S2w+RdDmCyIY27+NoM0XRtDmiyJo88URtPmSCNp8aQRtviyCNl8eQZuviKDNV0bQ5qsiaPPVEbT5mgjafG0Ebb4ugjZfH0Gbb4igzTdG0ObfRdDmmyJo880RtPmWCNp8awRtvi2CNt8eQZvviKDNv4+gzXdG0Oa7Imjz3RG0+Z4I2nxvBG2+L4I23x9Bmx+IoM1/iKDN/xdBm/8YQZsfjKDND0XQ5j9F0OY/R9Dmv0TQ5ocjaPMjEbT50Qja/FgEbX48gjb/NYI2PxFBm/8WQZufjKDNf4+gzU9F0OZ/RNDmpyNo8z8jaPMzEbT52Qja/FwEbf5XBG1+PoI2/zuCNr8QQZv/E0GbX4ygzf+NoM0vRdDmlyNo8ysRtPnVCNr8WgRt/l8EbX49gja/EUGb34ygzW9F0Oa3I2jzOxG0+d0I2vxeBG1+P4I2fxBBmz+MoM0fRdDmjyNo8ycRtPnTCNr8WQRt/jyCNn8RQZu/jKDNX0XQ5q8jaPM3EbT52wja/F0Ebf4+gjb/EEGbf4ygzT9F0OafI2jzLxG02cmLns05EbQ5EUGbkxG0OTeCNudF0Ob8CNpcEEGb20TQ5sII2lwUQZuLI2hz2wja3C6CNrePoM0dImhzxwja3CmCNneOoM1dImhz1wjavFkEbe5mic1tBG3ubonNhYI297DE5iJBmze3xOZiQZt7WmJzW0Gbe1licztBm3tbYnN7QZv7WGJzB0Gb+1pic0dBm/tZYnMnQZtLLLG5s6DN/S2xuYugzQMssbmroM0DLbF5M0GbB1liczdBmwcL2tyd6skhm5NeyvWS14ST76UCL6lzQnWOpM4ZFEMrplSMpZhDHYPVMUnN0WrOUmNYxbTqY2Vzd/DpRZSf6jVwmpdO99KvvXSGl8700lleOttLv/HSOV4610vneel8L13gpd966UIvXeSli710iZcu9dJlXrrcS+o99+q97+o96Oq94Oo92eq90eo9yuq9wuo9u+q9s+o9rOq9pOo9neq9leo9juq9huo9f+q9d+o9cOq9aOo9Yeq9Weo9Uuq9Suo9Q+q9O+o9NOq9LOo9Jeq9Heo9Fuq9Duo9B+q5/+o5+Oq58Oo56eq54eo52uq50uo5y+q5w+o5vOq5tOo5req5peo5nuq5luo5j+q5h+o5gOq5eOo5ceq5aeo5Yuq5Wuo5U+q5S+o5ROq5POo5Neq5Leo5Juq5Huo5F+q5D+o5COq5AOp/8up/4+p/1Op/xep/tup/p+p/mOp/iep/eup/a+p/XOp/Tep/Pup/L+p/IOp/Eep/Auq+eXUfubqvWt1nrO67Vfehqvsy1X2K6r69Xyhg1H1O6r4fdR+Mui9E3Seh7htQv6Or35XV76zqd0f1O5z6XUr9TqN+t1DX8dV1bXWdV133VNcB1XUxdZ1IXTdR1xHUebU6z1TnXeo8RHG54lTFbYpj1HFdHefUvK/mQTUvqHHSFuK7gJZ3zmvIu9D6NquW1h1csvqANSWr60tqVx+waun+uPubrdt9Gi30pvXFa9bU7b3PmpI1q0sWL11actCKNctLVh9Yt1/9ytUH4fe2KWhVMwdvZDNHtKyZ3slW+Yp3f7N1u7fWV/y9bVpnxMEb2UwLfPX/vYLhcJqNCAA=", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -533,7 +533,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -889,7 +889,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ], diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json index d55514def01..8da24a9fdd6 100644 --- a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json @@ -48,7 +48,7 @@ } } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -72,7 +72,7 @@ } ], "returnTypes": [], - "bytecode": "H4sIAAAAAAAA/+2d93cUVRTHZ3ezJSEJIEovoSgdtia7FA0gNhBjFysJ2WAUEgyLGiti79gVLIi9YO8V+cM83i/O6GWyHH7Yu5h3vr5zvmeyM5M37/PmzZ03M+/de9TzvMPe3ykiiooaRG1qHVKnv0zXljJxySNeJd9cuj2fL3dky5lcpjudLfUUC+l8oae9mClmCsVCb7aYy5WL+WJHqafUkS5l8rlypq9QyvX5GcftypiuB3dC8kjUgTsxyrmTkkeyDtxJY27vBO291nJOMSxnxK/LNj+/SaI/RZP95RSy5RLRVP+coV7G+fUydRSUa5p3fLJuV9M9u2s0qL+gjNN9DtiWGap+Y/72cLuL+kukmWr/aCi/mWq/WX5+Me/EqdOQL3aS85GuLWUmefb2yLqMkx0oY9Q7NXY9XVvKzPJs7XqQ2kQT/L8bq7RbrGsIMeE6jRvzNfr5IkXVcTzb4+Sq9YnSNaZGVeZYlbpsqFKXcbUuHuLF7xa13QvVS6u/b8L4HERU+YJ8G0JlS4nG+38PDFb6+4bXDZW7K+XeTYOVsm5YiVCFaABtIPV2XSnJUD66kpNqqY/5T6ktakPnaX01t9nllY5VqwRvdFvKiCpj0ABmi+aI5nr/tjB90oNUB6uQrrdVCJZo4EnF5oW2B1e2sXXNVbPs4TbTqf7WFqnBtiwZWJAZfl7bypWu3T3b+7duKA+vGejt6h6q9HdvX9PbO1TetataI4lVKXxUVWjY6mhLos1w+BajK+iUWJdwHxetH33VOf5yrr8cK5oXKkM0VJZa+/aGV3Zmnmdr2eLeyORKH9C6zdSzDmbXqQ6syznHs70L/f+cxvecpm8sgS09U3SWaL7/W/fLPbUuEeLTNxh9I0r5f+sbUXDH133qJuN6cvGZSXf7Y6pugnVBfemeU/A/KW/kuWmscm6a1LHGh/bzvJE9sJTxeYmosgT5JkMMWAbvFMs7+ivrB7YODe+UZ6uNg9t0RySlWMLlR9I2TT/PBftHvJEdJfweY8uc1W3eU8f2QvUQpDGqLPW4Lppt8zxm61pU+QPWZsUTbE8pthZjtog6ZpBv8Lulfsc9xt96Ev7WKuVoPYX8rapszaFyNqrtTWpdNMSh7VKw/3/26qHWzv58m3L25bP54zp6UeM6iBgyL/DsOzj1YI4aMi90hDlmyLzIEeYGQ+bFjjDHDZmXOMKcMGRe6ghz0pB5mSPM0wyZlzvCPMWQOU3InCFkzhIy5wiZ84TMBULmdkLmDkLmIiFziZB5BSHzSkLmVYTMqwmZzyZkPoeQuZOQeQ0h81pC5nWEzOcSMq8nZD6PkPl8QuYLCJkvJGS+iJB5AyHzRkLmiwmZNxEyX0LI3EXIfCkh82WEzJcTMl9ByHwlIfNVhMxXEzJfQ8i8mZD5WkLm6wiZrydkvoGQ+UZC5psImbcQMncTMvcQMm8lZO4lZC4TMvcRMm8jZL6ZkLmfkPkWQuZbCZm3EzLvIGQeIGQeJGTeSch8GyHzECHzLkeYZxkyVwjP825C5tsJme8gZL6TkHmYkPkuQua7CZnvIWS+l5D5PkLm+wmZ9xAyP0DIvJeQ+UFHmGcYMj9EeJ4fJmR+hJD5UULmxwiZHydkfoKQ+UlC5qcImZ8mZH6GkPlZQuZ9hMzPETI/T8j8giPM8w2ZXyQ8zy8RMr9MyPwKIfOrhMyvETLvJ2Q+QMj8OiHzG4TMbxIyv0XIfJCQ+W1C5kOEzO8QMr9LyPweIfP7hMwfEDJ/SMj8ESHzx4TMnxAyf0rIfJiQ+TNC5s8Jmb8gZP6SkPkrQuavHWFOGTJ/4whzoyHzt44wNxkyf+cI8xhD5u8dYW42ZP7BEeYWQ+YfHWFuNWT+yRHmsYbMPzvCPM6Q+RdHmMcbMv/qCPNphsy/OcI8wZD5d0eYTzdkPuII8xmGzH84wjzRkPmoIfNEP5+IzxwTNYjiooQoKcIzIZ6R8MyAPjT6lOhjoc+BezDuSbDRsFm4htGmcY4nqnqcJJosOuD/XiBaKFokWixaIloqWiZaDi5RRpRFfYnyooKoXdQhKopKohWilaJVotUixLoPYr8jNvhaEWJHI5YyYgsj1i5izyIWK2KTIlYnYlciliNiGyLWH2LfdYkQGw2xwhA7C7GkEFsJsYYQewexaDaLEKsEsTsQywKxHRDrAL7/t4jgG75HBN/h8KUN39LwtQzfw/DFC9+08NUK36Xw5QnflvD1CN+HO0XwjQdfcfCdBl9i8K0FX1PwvQRfRMMi+KqB7xb4MoFvD/i6gO+HPSL4BtgrwtxxzKXG3GLMtcXcU8zFxNxEzNXD3DXM5cLcJsz1wdyXfSLMjcBcAYydx1hyjK3GWGOMvcVYVIzN3O+fU4xlw9gujHXC2J+DIowNOSTC2AF8S8e3ZXxrxbdHfIvDtyl8q8G3C7zLx7ttvOvFu0+8C8S7MbwrwrsTvEvAszWeNfHshWcR9M3RV0XfDX0Z3Ntxr4PtPyKCbcC1EqS/AGAyv3h1tAAA", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -155,7 +155,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -172,7 +172,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -521,7 +521,7 @@ ] } ], - "bytecode": "H4sIAAAAAAAA/+3dB3wVx50H8PckIVg9JHpH8EQzHUn0LsCYaqopxjQBooMwiOZeMcbghu3Ejlt6d3rPpV5ySS652JeeXOolueSSXIpzyaXfzL75Wz+W8Ysm/o81z/rv5/Pn7c7uznxnZnff7r5d9GQqlUqnckOxim6piweaX2c+q1/YUJPmy6vap7OoQJzFBeIsKRBnuwJxlhaIs32BODsUiDMqEGdZgTgzBeLsWCDO8gJxVhSIs1OBODsXiLNLgTi7FoizG6OzDzi7m88e5rOn+exlPnubT1qnr/nsZ+pYYqb7q6hUMUDFQDOPGiSrokrFIBWDVQxRMVTFMBWXqBiuYoSKkSpGqRitYoyKsSrGmXxqVNSqGK9igoqJKiapmKxiioqpKqapmK5ihoqZKmapmG3abY6KuSrmqbhUxXwVl6lYoGKhikUqFqtYomKpistVLFOx3NQla+qyQsVKFatUrFZxhYo1KtaqWKdivYorVWxQcZWKjSo2qdisYouKrSrqVWxTsV3FDhUNKnaq2KVit4o9Kvaq2Kdiv4oDKg6qaEy0+SEVV6s4rOKImdfZzGtScVTFMRXHVZxQcVLFNSquVXGdiutV3KDiRhU3qbhZxS0qbk3kdZuK21WcUnGHitMq7lRxRsVdKs6qOKfibhX3qLhXxX0q7ldx3uRVZPJ6QMWDibSHVLzMjL/cfD5sPh8xn68wn4+az8fM5+Pm8wnz+aSKX1fkxvU5XPJaW6fRNp+GNNr+iyCN9oViSKP9ogTSaB9pB2m0v5RCGu077SGtnxnvAGn9YZw+K814GaQNMOMZSBtoxjtCWtaMl0NalRmvgLRBZrwTpA02450hbYgZ7wJpQ814V/NJ9dZDnfmsfoGDzpP5uFqt7dTn3aA+1OfdIY36vAekUZ/3hDSqey9Ioz7vDWnU530gjfq8L6RRn/eDNOpz3Faozyshjfp8AKRRnw+ENOrzLKRRn1dBGvX5IEijPh8MadSWQyCN2pK2Fd1282A+DbgP4n0zSqP5uA8WQ56URvNxH6T5uA/SfNwHcT590nzcB2k+7m80H/ct6i/cj2idrpBG/YXbHeWD2xj1F25PlDduO9RfuO1QebjtUH/htkMG3HZo28dth1xZSKNtH7cdstK2o+tVCrY681n9woYaPNbSkE5M18E4lV8K9WeyjMfjeUsslWAZwNwuGWiXAVBOlrkc/B5qSZ2zYKlitug8B/HmGZ/WDgY/1ZXKycD87lC3wcx1S0OZlC9NDwZL/4QTv+v7B+CjtCz4Blt8Q3h9tenUhf1YB9NDwEdpVWBh3qZqo4RFD/n2mUFgGcZqqanGc7yWWIaBZSirJbf/XsKbZ3weOZw5T53HCGgTaj+yZ2D+cGivEcztlYYyKV+aRp9YxSpWsYpVrGIVq1jbthWvc/CeHS03OAAfpQ0FC/e1Ad7jorz1fcSnoEzeexQ11XidTPdjyEBlFcMyny5vdr3TpJWlLr62jlLN19TYfwNZ/bn+o3IoX5oeCD6qSzZRV25LVcLy0i23djv/fcKaan1fWt/rpu1pQKIetnu/lKa3yY9BfUO5t4v3PovAx3y/t+Yfvd+L9+mKwce9r2rfAAffQPDRevi7Cvf9WjxmtcRXBT5arx34uO9p4r3Tlvhs9zlL4ZP7fpnrvbuh4KP12oOP+fs19g1z8OG5Eq3XAXzc5yLaN9zBh+cntF4EvlEefCMdfKPAR+uVgW+MB99oB98Y8I2GcfKN8+Ab6+AbByZaryP4ajz4qlMt99WAj9YrB994D75aB9948NF6FeCb6ME3wcE3EXy0XifwTfbgm+Tgmww+Wq8z+KZ68E1x8E0FH63XBXzTPfimOfimg4/Ww2eUZnrwzXDwzQQfrdcNfLM9+GY5+GaDj9brCb45vL74d9A6B98csFzKa5mgLXMdLJeCZR6vJf4ddD5vnvHvoJcx56nzWABtQu1H9gzMvwzaawFze6WhTMqXptEn1rZtxfeSyBmlLt7XWtNHafM8WqKERQ/5jnU2H/blIl5f/L2w0MG3CCxLWS3j43vEix0sS8GyhNWS+164nDfP+Bi+DPxUVyonA/Oxz5cx1y0NZVK+NI0+sYpVrGIVq1jFKlaxilWsYhWrWMUqVrGKVaxiFatYxSpWsYpVrGIVq1jFym/VloUJZwTLLQzAR2lLPFqihEUP+Z4TsfmwL1fw+uJnapY7+FaAZTWrpTZ+pmalg2U1WFaxWnLP1FzBm2f8TM0a8FNdqZwMzMc+X8NctzSUSfnSNPrEKlaxilWsYhWrWMUqVrGKVaxiFatYxSpWsYq1UKzasjzhjGC55QH4KG2VR0uUsOgh3312mw/7ch2vL/5NYq2Dbx1YNvBa4v//Yb2DZQNYruS1xL9JXMWbZ/ybxEbwU12pnAzMxz7fyFy3NJRJ+dI0+sTatq3asjbhjGC5tQH4KO1Kj5YoYdFDvuOSzYd9uZnXFx/DNzn4NoOlntWS+1smWxws9WDZymrJHcO38eYZH8O3g5/qSuVkYD72+XbmuqWhTMqXptEnVrGKVaxiFatYxSrWtm3Vlk0JZwTLbQrAR2lbPVqihEUP+a5TbD7sywZeX3xNt8PB1wCW3ayW3DXdTgfLbrDsYrXkrun28OYZX9PtBT/VlcrJwHzs873MdUtDmZQvTaNPrGIVq1jFKlaxilWsbduqLTsSzgiW2xGAj9J2ebRECYse8l2n2HzYl/t5ffE13T4H336wNHqwHHCwNILlIK8lvqY7xJtnfE13NfiprlROBuZjn1/NXLc0lEn50jT6CsWqLfsSzgiW2xeAj9IOerRECYse8u0/Nh/25RFeX7x/H3bwHQHLMQ+WJgfLMbAc5bXEx5rjvHnGx5oT4Ke6UjkZmI99foK5bmkok/KlafQVilVbDiecESx3OAAfpR31aIkSFj3k239sPuzLazz4Tjr4rgHfSYvvOg++ax1814GP1ovAd4MH3/UOvhvAR+uVge8mD74bHXw3ge9GGCffLR58Nzv4bgETrYd/Y/Q2D75bHXy3gY/WKwffKQ++2x18p8BH61WA77QH3x0OvtPgo/Xwb4ye8eC708F3Bny0Hh7/znrw3eXgOwu+uyy+uz34zjn47gbfOYvvXg++exx894LvHovvfg+++xx894PlPK+lOgOW81DOgx7q/ECq5XV+ECwPeagzWR6Ccl7uoc4vS7W8zlR+BtZD3yMefA87+B4B38MW36MefK9w8D0KPloP9+PHPfgec/A9Dr7HLL4nPfiecPA9Cb4nLL5XefC90sH3KvC90uJ7jQffqx18rwHfqy2+13nwvdbB9zrwvdbie4MH3+sdfG8A3+stvjd58L3Rwfcm8L3R4nuLB9+bHXxvAd+bLb6nPPje6uB7Cnxvtfje7sH3Ngff28H3NovvnR5873DwvRN877D43u3B9y4H37vB9y6L770efO9x8L0XfO+x+N7vwfc+B9/7wfc+i++DHnwfcPB9EHwfsPg+zOuLf4f4kIPvw2D5KK8lftf9nxwsHwXLR3gt8W8iH+PNM/5N5OPgp7pSORmYj33+cea6paFMypem0SfWtm3Vlg8lnBEs96EAfJT2EY+WKGHRQ77jks2HfflJXl98DP+Eg++TYPk0qyX3f6j/s4Pl02D5FKsldwz/F94842P4Z8BPdaVyMjAf+/wzzHVLQ5mUL02jT6xiFatYxSpWsYpVrGIVq1jFKlaxilWsYhWrWAvFqi2fSDgjWO4TAfgo7VMeLVHCood899ltPuzLz/H64t8kPuvg+xxYvsBqyf0m8a8Oli+A5fOsltxvEv/Gm2f8m8QXwU91pXIyMB/7/IvMdUtDmZQvTaNPrGIVq1jFKlaxilWsYhWrWMUqVrGKVaxiFatYC8WqLZ9NOCNY7rMB+Cjt8x4tUcKih3z32W0+7MtneH3xbxJPO/ieAcuXWS25vx/x7w6WL4PlS6yW3G8SX+HNM/5N4qvgp7pSORmYj33+Vea6paFMypem0SdWsYpVrGIVq1jFKta2bdWWpxPOCJZ7OgAfpX3JoyVKWPSQ7zrF5sO+/DqvL76m+5qD7+tg+RarJXdN9w0Hy7fA8k1WS+6a7j9484yv6b4NfqorlZOB+djn32auWxrKpHxpGn1iFatYxSpWsYpVrGJt21Zt+VrCGcFyXwvAR2nf9GiJEhY95LtOsfmwL7/L64uv6b7j4PsuWH7Aasld033PwfIDsHyf1ZK7pvtP3jzja7ofgv975pPKycB87PMfMtctDWVSvjSNPrGKVaxiFatYxSpWsbZtq7Z8J+GMYLnvBOCjtO97tEQJix7yXafYfNiXP+b1xdd0P3Lw/RgsP+W1xH9n4L8cLD8Fy094LfE13X/z5hlf0/0M/FRXKicD87HPf8ZctzSUSfnSNPrE2rat2vKjhDOC5X4UgI/SfuLREiUsesh3XLL5sC9/weuLj+E/d/D9Aiy/4rXEx/D/cbD8Ciy/5LXEx/Bf8+YZH8N/A36qK5WTgfnY579hrlsayqR8aRp9Ym3bVm35ecIZwXI/D8BHab/0aIkSFj3kOy7ZfNiXv+X1xcfwZx18vwXL7z1Y/tfB8nuw/I7XEh/D/483z/gY/gfwU12pnAzMxz7/A3Pd0lAm5UvT6CsUq7Y8m3BGsNyzAfgo7XceLVHCood8+4/Nh335Jw++Pzr4/gS+P1p8f/Hg+7OD7y/g+7PF9zcPvr86+P4Gvr9afOk0vy8Jyuej8jOwIPqKPfiKHHzF4Cuy+Np58JU4+NqBr8Tia+/BV+rgaw++Uosv8uDr4OCLwNfB4st48JU5+DLgK7P4yj34Ojr4ysHX0eLr5MFX4eDrBD5a7zz4unjwdXbwdQEfrfcQ+Lp58HV18HUDX1eLr4cHX3cHXw/wdbf4ennw9XTw9QJfT8v+0ceDr7eDrw/4elt8/Tz4+jr4+oGvr8VX6cHX38FXCb7+Ft9AD74BDr6B4Btg8VV58GUdfFXgy1p8gz34Bjn4BoNvkMU31INviINvKPiGWHyXePANc/BdAr5hFt8ID77hDr4R4Btu8Y3y4Bvp4BsFvpEW3xgPvtEOvjHgG23xjfPgG+vgGwe+sRZfjQdftYOvBnzVFt94D75aB9948NVafBM9+CY4+CaCb4LFN5nXF9+fnuTgo/K1ZRqvJf69c4qDZRpYpjL3m85zOm+e8b3yGVAhqut06PMZlj6fwVy3NJRJ+dI0+sTatq3aQscGckaw3KR06/sobapHS5Sw6CHfccnmw76c5eEYPtPBNwvaag6rJfd3qGY7WOaApc7DMXyuh2P4PKgQ1XUu9Pk8S5/P87B/zE3sHzSNPrGKVaxiFatYxSpWsYpVrGIVq1jFKlaxilWsYi0Uq7bQvW5yRrAczWtN33P3nD1aooRFD4nJC+6z23zYl/N5ffFvEpc6+OZDWy1kteR+k7jMwbIQLAuY+03nuYg3z/g3icVQIarrIujzxZY+X+xh/1iU2D9oGn1iFatYxSpWsYpVrGIVq1jFKlaxilWsYhWrWMVaKFZtoXvd5IxgOZrXmj5KW+DREiUsekhMXnCf3ebDvlzK64t/k1ji4FsKbbWc1ZL7mzuXO1iWg2UZc7/pPFfw5hn/JrESKkR1XQF9vtLS5ys97B8rEvsHTaNPrGIVq1jFKlaxilWsbduqLXStQM4IlqN5remjtGUeLVHCoofE5AXXKTYf9uVqXl98TbfKwbca2motqyV3TXeFg2UtWNYw95vOcx1vnvE13XqoENV1HfT5ekufr/ewf6xL7B80jT6xilWsYhWrWMUqVrG2bau20LUCOSNYjua1po/S1ni0RAmLHhKTF1yn2HzYlxt4ffE13ZUOvg3QVptYLblruqscLJvAspG533Sem3nzjK/ptkCFqK6boc+3WPp8i4f9Y3Ni/6Bp9IlVrGIVq1jFKlaxirVtW7WFrhXIGcFyNK81fZS20aMlSlj0kJi84DrF5sO+rOf1xdd0Wx189dBWO3gt8d8Z2OZg2QGW7cz9pvNs4M0zvqbbCRWiujZAn++09PlOD/tHQ2L/oGn0ibVtW7WFjg3b4BhOy21Nt76P0rZ7tEQJix7yHZdsPuzL3R6O4bscfLuhrfZ5OIbvcbDsA8teD8fw/R6O4QegQlTX/dDnByx9fsDD/rE/sX/QNPrE2rat2kLHhj1wDKfldqVb30dpez1aooRFD/mOSzYf9mWjh2P4QQdfI7TVYQ+WQw6Ww2C52sMx/IiHY3gTVIjqegT6vMnS500e9o8jif2DptFXKFZtoW34EBxraLmD6db3UdrVHi1RwqKHfPuPzYd9ecyD76iD7xj4jlp8Jzz4jjv4ToDvuMV3jQffSQffNeA7afFd58F3rYPvOvBda/Hd4MF3vYPvBvBdb/Hd5MF3o4PvJvDdaPHd4sF3s4PvFvDdbPHd7uH84VYH3+1wLL7Nw/nDKd48q3WedzC3mc7jNDQStd8p6Duafwe012kP36OnEt+jNI2+llq7p1rX6qHc2o4qjw5Qb8r/fOrCdtDDnWa8BNJp39OTZ0xaOzNNyz9klimGZZ6Jcp/lpo1pKII2PuOhjXGog/Ez0N809AzI0iMgy/yALJ0CsnQMyBIFZCkNyFIckOVUOhxLeUDtUhaQpX1AlpKALL0CsvQJyNI7IEtdQJbuAVkqArJkArJ0CMjSLiBLupUtUeriew4RzD8FyxUl1tXt+OOK5vlnTXoR5HPOpBVb8j4Led9lxs+lL14X2+ishzbCcupgmsoqA8O5dOtb2gVk6RCQJROQpSIgS/eALHUBWXoHZOkTkKVXQJaSgCztA7KUBWQpD8hyKh2OpTigdikNyBIFZOkYkKVTQJb5AVl6BGTpGZCl6EWy0LUZ5XtXwtKa5d7NW278zNs9UC5dq94N7U7l3wOOe5kd6YQjDeVSWcWwzAlzQqDPl46WNbsuTfG69LGbzg8pb13mtR7KbJgyqX7bhJ07W1LmXN565v7+b+rCIZ2YroNxKl9b5vFa4mcz5vDmGT+bMZu5zXQes6BNqP3InoH5s6G9ZjG3VxrKpHxpGn0ttXZvZauv/p/Jm+dzz3tQW85MtCnWZzpzfXQeM0xeJVDWdChzKnOZuu+mmbzouRQyUFnFsMz95niV77mUabzGvPeAqazney6ltS09ArLMD8jSNSBLp4AsHQOyRAFZSgOyFAdkmRWQpVtAls4BWcoDspQFZGkfkKUkIEuvgCx9ArL0DshSF5ClS0CWioAsmYAsHQKytAvIkm5ly/M9O0TzZ0FaUWLd5LNDk016EawzyYwXW/KeDGlTzPgky7rYRpMTdal+YUPcRlhOHUxTWfjs0KQALO0CsnQIyJIJyFIRkKVLQJa6gCy9A7L0CcjSKyBLSUCW9gFZygKylAdk6RyQpVtAllkBWYoDspQGZIkCsnQMyNIpIEvXgCzzA7L0CMjSMyBL0YtkoetnyndKwtKa5U7kLTd+TmAClEv3EyZCu1P5E8AxntmRTjjSUC6VVQzLLDEXqPqcdmGm2eXj+S66tsFnrZZ5KBOf7/p7Zc7lreeEl/rzXTqP2eC3Pd9E8/G3AeZnwvI+3zTbX7lx/V+Kz6KJteXWDJRHzih18b7Wmj5KmwcW5mNBjS6HzvfmQDkzeMuJj6m4begh3zF1BliYn0Ws8fWM4TTwJ58xzMB837+3Tk9d2KY0jb6WWmeL9SVp5X/mdXx8fojl6iHfPj7VYxvoPKfw5hnv45PBT3WlcjIwH/u3Na6PxCpWsYpVrGIVq1jFKlaxilWsYhWrWMUqVrGKVaxiFatYxSpWsYpVrGIVqx+rLncSa7m11VGiXD3ke+bC5/PiL8Yz2VRXKicD87F/JzDXLQ1lUr40jT6xilWsYhWrWMUqVrGKVaxiFatYxSpWsYpVrGItFKuH/98ifhcYy9VDvnvW4z22gc6zljfP+J51DfiprlROBuZj/9Yw1y0NZVK+NI0+sbZtqy63mrXcmvh3KSxXD/n28WqPbaDzHMebZ8wdC36qK5WTgfnYv2OZ65aGMilfmkafWMUqVrGKVaxiFatY27ZVlzuGtdzcOT+Wq4d85/xjPLaBznM0b57xOf8o8FNdqZwMzMf+HcVctzSUSfnSNPrEKlaxilWsYhWrWMXatq263JG85dZGiXL1kO+cf6THNtB5juDNMz7nHw5+qiuVk4H52L/DmeuWhjIpX5pGX6FYdbmX8JYbb4tYrh7ybYuXeGwDnecw3jzjbXEo+KmuVE4G5mP/DmWuWxrKpHxpGn2FYo0grQjSaD7+jdEhZrwE0gab8XaQdhnUidIWmPH2kLbQjHeAtEVmvCekLTbj+HdTl5jxmZC21IxPh7TLzTj+bdZlZnwKpC0345MhbYUZnwhpK834BEhbZcZrIW21Ga+BtCvM+DhIW2PGx0LaWjM+GtLWmfFRkLbejI+AtCvN+HBI22DGZ0PaVTBOnxvNeBmkbTLjGUjbbMY7QtoWM14OaVvNeAWk1ZvxTpC2zeKjbXEYpNG2iNsubYtDII22xcGQRtviZZBG2+ICSKNtcSGkURstgjRqo8WQRm20BNKojZZCGrXR5ZBGbbQM0qiNlkMa/S2+FZBGf4t0JaTR39RaBWn0t/NWQ1p3M34FpPUw42sgjfbHtZDWy4yvg7TeZnw9pNHf4bwS0vqa8Q2Q1s+M47bZ34xvhLRKM74J0gaY8c2QNtCMb4G0rBnfCmlVZrwe0gaZcdo29bZSCsvWmc/qFzbUYFk05PvepvJLoS5MluoMWLJQzgDWcmrjv/FEfVNkyqJtbgCUW8lTbg2N6HL7Q/5V4KCyimGZZ8yOWm6W78/aDjkPldvOtAN5+oOHlvmK8ehj3omK5npkeV21uE/QkG+bzKaaLUx9RpRq3I9bYqkEC+92mzuv5d4GdJ79mPPUefSFNkluUxmY3w/aqy9ze+H+RvnSNPrEKlaxilWsYhWrWMUqVrGKVaxiFatYxSpWsYq1UKzaUpVw4m9ZVQH4KA1/b+G+t42//VHe+reLnfDbxUDWMnO/LWWhTlkwUFnFsMyTFc2uvWa8DOZTX+FvjNh/vL935PqPyqF8aZrKKoO6YP9x/96Bv9NRvi/dcmu38+8DtdX693/9TEHW5Jfc76hP8bdXSsPf+XSf03aHzzUMTKS1Vn/gPjMQ0mh8EPh427jGx29o8WM7faEfsmacyimG+bfCMeT2iua+SR4v9PwHLPNpyPe7Jv5uzfycWDU+J1Zq8h1qKZf5mcULnk9Lm6AyKL0Yxs/TQzKwnB6ofcmst7shluVwfEBinQzMH+K5zvhsYB1MU1l6OzkN29QD8H3J/X2D9cV26QHtQvMHQrtw72+6XfD8LguGfmAZnHDieRUeA4d48D3fedUQ8FFaJfioHng8eQqsPs+Bks/XYB8yfU9c8HwNPn9RBQ4qC59neZ3ZrvVjLcnzniys2wfyfDGeCUp+N+MzQW8G84v1TBB5bM8EvQ2OEz/4O+evlYk0D/4a9FO+lQk/nhdU+rM4t+X7E33LfW2GzzjSkO87vy+0DffxzMd5hM5jGPiprvgdS/O7Q92Y3xXI+x2LvqEWK57PViaW4z8fqK328f6FzmOEyUsfF2hfo3KKYf5n4PjxOTg3pTpnIZ9vWObT0NJ3TUbx1rUa3/2ic9dRlnJ5/7+HC985o3NXKoPSi2H863DuOqZ59Ln2JbPe7kZalsPxoYl1MjB/pOc6jwJHHUxTWXo7+QJsU9+Ac1fu/Rzri+3SB9qF5uN1dvJ6Ad+dwu/G1ng3LJO6+H0h/G7nP1/MubLgyqYuvmeG9/Ky4MJ7ecXMrtJU83sbXHniOyM05Dt2lcJnO2aLvi9E74wcaWo8XL+rYVVD/Y40sEoSxCKg4Ti+pkWvteBrWvRaC76mRevjK1mUTweYl2wetvp3g8oVmcJLDLLUFN4h1fy+jW4rfT9Nn5/pzU6/H6Pfh9Hvv+j3XbqB8Zz51OcZ+tpHv7+i31fR76fo7VifW+nvfH0eqI8N+ntfb+vZVO4YoO9X6etJfd6ljxN6X9TfJ3o/1funPq7oY58+vutjn35/S7/XpU+C9IFJvwum/+9e/Z6Yfn9M/+05/W6Zfudsair3Ptp0FTNSuXfY9Ltts03bzlExV8U8FZeqmJ/Kvbek31PS7yUtSuXeO1qSyr1XpN8j0u8N6feE9HtB+j0g/d6Pfs9Hv9ej3+PR7+3o93T0ezn6PZwNqdx7NhtTufdo9HszW1K592LqU7n3Xrar2KGiQcVOFbtU7FaxR8VeFftU7FdxQMVBFY0qDqm4WsVhFUdUNKk4quKYiuMqTqg4qeIaFdequE7F9SpuUHGjiptU3KziFhW3qrhNxe0qTqm4Q8VpFXeqOKPiLhVnU7m+vlvFPSruVXGfivtVnFfxgIoHVTyk4mUqXq7iYRWPqHiFikdVPKbicRVPqHgy1bzP44b/tHkJbIaZXp3bX7NH9jc2ZauzB9W/9fv3Nx5v2DE2i/OOZA8cPdKUPdJUf7gpu/Nw44FszVjM974yP/k+bd4Voe+z+qamhgOHmrJNjWrF/U17Du0/mT2+p2l3tvFYw+GdqgBc+bUVL2DlN5mV+1+8cv2OHc+/3vvMerQXLzq4o+FEtvFoU7ZxZ3Zb49GDO478P1KEvWoJlAIA", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -877,7 +877,7 @@ ] } ], - "bytecode": "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", + "bytecode": "H4sIAAAAAAAA/+3dCZwU1Z0H8G6Gq2mO8UBuae5DxZkB72u88T7wPkEOQYFBGMALT1RUQEQQBEGQS7wVVFRUFE+Md7LRTTbJmo3ZZJNssjGbbK7d/6t+f/lRlLPz4nuhOvOrz+dvV/2r6r3vq1dVXV1VI59kMplspjiUSbTNbD/o/Gr7WfHNhsqsv7IqQjoblYizrEScjUvE2aREnE1LxNmsRJzNS8SZKxFnixJx5kvE2bJEnK1KxNm6RJxtSsRZXiLOnUrEuXOJOHcpEeeuJeJs69HZEZy72c929rO9/exgP3XZTvazs/3sYj93t21tbKe7ShQkukl0t/N0w/SQ6CnRS6K3RB+JvhL9JPpL7CGxp8ReEgMk9rbrVkpUSQyUGCSxj8S+EvtJ7C9xgMSBEgdJHCxxiMShEofZbXa4xBESR0ocJXG0xDESx0oMljhO4niJEyROlDhJ4mSJUyROlThN4nTbloJtyxCJMyTOlDhL4myJcyTOlThP4nyJCyQulLhI4mKJoRLDJC6RGC4xQmKkxCiJSyVGS4yRuEzicomxEuMkxkvUSEyQuEJiYmybT5KolZgsMSXmnCpxpcRVEldLXCNxrcQ0ieskrpe4QeJGiZskbpaYLnGLxK0St0nMkLhd4g6JOyVmSsySmC1xl8Qcibsl5krcIzFPYr7EvZlt+3+BxEKJ+yQWSSyWuF9iicRSiQcklkksl3hQYoXESolVEqsl1kg8JLFW4mGJRyQelXhM4nGJJySelHhK4mmJdRLrJZ6ReFbiOYkNEs9LvCDxosRGiZckXpZ4RWKTxKsSr0lslnhd4g2JN21bGtm2vCXxdiz3jsQWO/6u/fyW/XzPfr5vPz+wnx/az4/s58f28xOJX5UXx821ffwejMnpsZuFnB7HjSCnx3QZ5PT4bgw5PdabQE6P+6aQ03NAM8jp+aA55HaHcf3sasdbQK5gx/OQ62bHW0Kuux1vBbkedrw15Hra8TaQ62XHyyHX247vBLk+dnxnyPW147tArp8d39V+6vYxQ7X9rPiGgynT8/dIhbHrvtEW2qP7xm6Q032jHeR032gPOW17B8jpvtERcrpvdIKc7hudIaf7RhfI6b6B+5TuG10hp/tGAXK6b3SDnO4b3SGn+0YPyOm+0RNyum/0gpzuG70hp/tGH8jpNu8LOd3muk+ZbTwY5uuAxzTen9WczsdjugzK1JzOx2Na5+MxrfPxmMb5+qnz8ZjW+XhM63w8fnU+Hqvar3hc6jp4DGq/4n6s5eA+q/2K+6eWjfui9ivui1of7ovar7gvqgH3Re3XAuTUhfuiHku4L6oVz29NwVttPyu+2VCJ530dsrHpahjH74Mufi0D8bulPhbsE+2L3cDX1a+vKg/bqivU081zPfidWJ/t0A0s3f1aovvJPfyWGV0O9gR/wX5qPXmY3xba1tNz27JQp5ar0+irr3X3HWw1ls4xJ14jdU6BT3N4/uuZ4Ovl11eVzWzbj9Uw3Qt8musOFs/7f1UuZjFDXcd3D7D08WqprMBr4/pY+oClt1dL8VzT12+Z0TV0P89lmjL6wzbR7af2PMzvB9urv+ftlYU6tVydRh+ttNJKK6200korrQ3bir9z8B6mLtczBT7N9QaL798GeD9Oyzb3RjdAnX7vp1RW4O9kU34BDFpXGSyzqc1W10aba5HZ/rc1PjPpGSvfn7/Yf1qPlqvTBfBpW/DelOf7ZJGle8zyj1tv1XD/9zQrK8y99uaZrftT11g7CvYT71NrzuyTW6C9abk3jfdpG4HP8/3qyr/1fjXepysDn+f71ZV4X7w+vq7g0/XwWZHv4+hvvc+dh/WagM/zfbpKfOZcHx/eE8b7h/rp+Z5mpet9xKT7nM3A5/feYtHX28HXB3y6XnPweb6PV4nXPPXx9QMfPr9V3x4BfP0dfHuAT9drAb69Avj2dPDtBb49YVx9ewfwDXDw7Q0mXa8l+CoD+Coy9fdVgk/XawW+gQF8VQ6+geDT9VqDb58AvkEOvn3Ap+u1Ad9+AXz7Ovj2A5+uVw6+AwL49nfwHQA+XW8n8B0UwHegg+8g8Ol6O4PvkAC+gx18h4BP19sFfIcF8B3q4DsMfLoevt92eABftYPvcLAc4ddSgX/vcwTUc1SANh+ZqX+btf48rNcefMf49UXPpo928B0DluP8WgYZy7EOluPAMtivJXo2fbzfMqOv8BPAr23VevIwH/fJEzy3LQt1ark6jT5aG7bVWI6OOXOw3NEp8GlucEBLLmYxQ13npSQf9uVJfn3ROfxEB99JYDnVq2VgdI/9ZAfLqWA5xauleA4/zW+Z0Tn8dPBrW7WePMzHPj/dc9uyUKeWq9Poo5VWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZa/VuN5cSYMwfLnZgCn+ZOCWjJxSxmqOs9kSQf9uUZfn3ROzVDHHxngOVsr5aq6J2aMx0sZ4PlLK+W4js15/gtM3qn5lzwa1u1njzMxz4/13PbslCnlqvT6KOVVlpppZVWWmmllVZaaaWVVlpppZVWWmktFauxDIk5c7DckBT4NHdWQEsuZjFDXffZk3zYl+f79UXPJM5z8J0Plov8WqL/V8MFDpaLwHKhX0v0TOJiv2VGzySGgl/bqvXkYT72+VDPbctCnVquTg+FPK0N22os58WcOVjuvBT4NHdhQEsuZjFDXeeloQk+7MtL/Pqic/gwB98lYBnp1VJ8rjzcwTISLCO8Worn8FF+y4zO4ZeCX9uq9eRhPvb5pZ7bloU6tVydRh+ttNJKK6200korrbTSSiuttNJKK6200kprqViNZVjMmYPlhqXAp7kRAS25mMUMdd1nT/JhX47x64ueSYx28I0By1ivluL/P/oyB8tYsFzu1VJ8JjHOb5nRM4nx4Ne2aj15mI99Pt5z27JQp5ar0+ijlVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlr9W41ldMyZg+VGp8CnucsDWnIxixnqek8kyYd9OcGvL3qnpsbBNwEskwJYrnCwTALLRL+W6J2aWr9lRu/UTAa/tlXrycN87PPJntuWhTq1XJ1GX6lYjaUm5szBcjUp8GluYkBLLmYxQ13HT5IP+3KqX190fE9x8E0Fy9UBLFc6WK4Gy1V+LdG55hq/ZUbnmmvBr23VevIwH/v8Ws9ty0KdWq5Oo69UrMYyJebMwXJTUuDT3FUBLbmYxQx1HT9JPuzL6wL4pjn4rgPftATfDQF81zv4bgCfrtcCfDcF8N3o4LsJfDfCuPqmB/Dd7OCbDiZdryX4bg3gu8XBdyv4dL1W4JsRwHebg28G+HS91uC7I4DvdgffHeDT9dqAb2YA350Ovpng0/XKwTc7gG+Wg282+HQ9PP/NCeC7y8E3B3x3JfjmBvDd7eCbC767E3zzAvjucfDNA989Cb57A/jmO/juBcsCv5aKPFgWQD33BWjzwkz923wfWBYFaLNaFkE99wdo8+JM/dus9edhPfQtDeBb4uBbCr4lCb5lAXwPOPiWgU/Xw+P4wQC+5Q6+B8G3PMG3MoBvhYNvJfhWJPhWB/CtcvCtBt+qBN9DAXxrHHwPgW9Ngu/hAL61Dr6Hwbc2wfdoAN8jDr5HwfdIgu/xAL7HHHyPg++xBN+TAXxPOPieBN8TCb6nA/iecvA9Db6nEnzrA/jWOfjWg29dgu/ZAL5nHHzPgu+ZBN+GAL7nHHwbwPdcgu+FAL7nHXwvgO/5BN/GAL4XHXwbwfdigu/lAL6XHHwvg++lBN+mAL5XHHybwPdKgu+1AL5XHXyvge/VBN/rfn3Rc5zNDr7XwfKWX0v0bw284WB5Cyxv+rVEz5Te9ltm9EzpHfBrW7WePMzHPn/Hc9uyUKeWq9Poo7VhW41lc8yZg+U2p8CnuTcDWnIxixnqOi8l+bAv3/Xri87hWxx874Llfa+WQdH/1+dbDpb3wfKeV0vxHP6B3zKjc/iH4Ne2aj15mI99/qHntmWhTi1Xp9FHK6200korrbTSSiuttNJKK6200korrbTSSiuttNJKK6200korrbTSSiuttNJKK6200kprw7Yay5aYMwfLbUmBT3PvBbTkYhYzZGPT1TCe5MO+/NivL3on/CMH38dg+Y5XS1X0TvgnDpbvgOXbXi3Fd8L/yW+ZFaaM74Jf26r15GE+9vl3PbctC3VquTqNPlpppZVWWmmllVZaaaWVVlpppZVWWmmlldZSsRrLRzFnDpb7KAU+zX07oCUXs5ihrvvsST7sy8/8+qJnEp86+D4Dy/e9WgZGzyT+2cHyfbB8z6ul+EziX/yWGT2T+AH4ta1aTx7mY5//wHPbslCnlqvT6KOVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWv1bjeXTmDMHy32aAp/mvhfQkotZzFDXeyJJPuzLH/n1Re/U/NDB9yOw/NirpTJ6p+ZfHSw/BsvnXi3Fd2r+zW+Z0Ts1PwG/tlXrycN87POfeG5bFurUcnUafbTSSiuttNJKK620Nmyrsfww5szBcj9MgU9znwe05GIWM9T1OyXJh335U7++6DfdFw6+n4Ll534t0b/J/u8Olp+D5Wd+LdFvuv/wW2b0m+4X4Ne2aj15mI99/gvPbctCnVquTqOP1oZtNZYvYs4cLPdFCnya+1lASy5mMUNd56UkH/blr/z6onP4Lx18vwLLb/xaonP4fzpYfgOWX/u1ROfw//JbZnQO/y34ta1aTx7mY5//1nPbslCnlqvT6KO1YVuN5ZcxZw6W+2UKfJr7dUBLLmYxQ13npSQf9uXv/Pqic/iXDr7fgeUPASz/7WD5A1h+79cSncP/x2+Z0Tn8j+DXtmo9eZiPff5Hz23LQp1ark6jr1SsxvJlzJmD5b5MgU9zvw9oycUsZqjr+EnyYV/+OYDvTw6+P4PvTwm+vwbw/cXB91fw/SXBpyv79P1vpv4+nZmH9dDXKIAvm62/rxH4dD30NQ7gK3PwNQZfWYKvaQBfEwdfU/A1SfA1D+Br5uBrDr5mCb4WAXw5B18L8OUSfC0D+PIOvpbgyyf4WgfwtXLwtQZfqwRfeQBfGwdfOfh0vQXg2zmAbycH387g0/UWgW/XAL5dHHy7gm+XBN9uAXxtHXy7ga9tgq99AF87B1978LVLOD46BvB1cPB1BF+HBF/nAL5ODr7O4OuU4Ns9gK+Lg2938HVJ8BUC+Lo6+Arg65rg6x7A183B1x183RJ8PQP4ejj4eoKvR4KvdwBfLwdfb/D1SvD1DeDr4+DrC74+Cb7+AXz9HHz9wdcvwbdnAN8eDr49wbdHgm9AAN9eDr4B4NsrwVcRwLe3g68CfHsn+KoC+CodfFXgq0zwDQrgG+jgGwS+gQm+fQP49nHw7Qu+fRJ8+wfw7efg2x98+yX4DgzgO8DBdyD4DkjwHezXF93fP8jBp/Uby2F+LdHz4kMcLIeB5VDP/WbKrPZbZvSs4XBokLa1Gvr88IQ+P9xz27JQp5ar0+ijtWFbjUXPDerMwXIHZXe8T3OHBrTkYhYz1HVeSvJhXx4Z4Bx+hIPvSNhWx3i1DIr+Fu8oB8sxYDk6wDn82ADn8MHQIG3rsdDngxP6fHCA4+PY2PGh0+ijlVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaW1YVuNRd81VmcOltN5O9KnuaMDWnIxixlik1/V9XU+7Mvj/fqid8KPc/AdD9vqJK+Wquid8BMcLCeB5UTP/WbKPNlvmdE74adAg7StJ0Ofn5LQ56cEOD5Ojh0fOo0+WmmllVZaaaWVVlpppZVWWmmllVZaaaWV1lKxGove61ZnDpbTeTvSp7kTA1pyMYsZYpPb3GdP8mFfnubXFz2TONXBdxpsqzO8WgZGzyROd7CcAZYhnvvNlHmm3zKjZxJnQYO0rWdCn5+V0OdnBTg+zowdHzqNPlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmml1b/VWPRdDXXmYDmdtyN9mhsS0JKLWcwQm/yqrq/zYV+e49cXvVNztoPvHNhW53u1VEbv1JzrYDkfLOd57jdT5gV+y4zeqbkQGqRtvQD6/MKEPr8wwPFxQez40Gn00UorrbTSSiuttNLasK3Gor8V1JmD5XTejvRp7ryAllzMYobY5Da/U5J82JcX+/VFv+kucvBdDNvqEr+W6N9kH+pguQQswzz3mylzuN8yo990I6BB2tbh0OcjEvp8RIDjY3js+NBp9NHasK3GoueGoXAO1+Uuyu54n+aGBbTkYhYz1HVeSvJhX44KcA4f6eAbBdtqTIBz+KUOljFgGR3gHH5ZgHP45dAgbetl0OeXJ/T55QGOj8tix4dOo4/Whm01Fj03XArncF1uZHbH+zQ3OqAlF7OYoa7zUpIP+3JcgHP4WAffONhWEwJYxjtYJoClJsA5/IoA5/CJ0CBt6xXQ5xMT+nxigOPjitjxodPoKxWrseg+PB7ONbrc2OyO92muJqAlF7OYoa7jJ8mHfVkbwDfJwVcLvkkJvikBfJMdfFPANznBd2UA31QH35Xgm5rguzqA7yoH39XguyrBd20A3zUOvmvBd02C77oAvmkOvuvANy3Bd0MA3/UOvhvAd32C7+YA1w83OvhuhnPxTQGuH6b7LbPClHmL521myrgVNpJuv+nQdzr/Fthetwb4Hp0e+x7VafTV19o2s2OtAeqtaillNId2a/kLMttuBzPcZscbQ16PPTM5w+aa2GldfpFdpgyW2all8bNVpnhdpfndMlvbemeAc83tDsfynbDd7whwLM/0fCybMmZBg7StM2Ff1vkzoG2zAuzLM2P7sk7PAosOjTJbLTMDWHCohvGZCZY2KbK0TJEllyJL0xRZylJk6ZAiS3mKLK1SZGmRIkuzFFkap8jSPkWWdimy4DXDjrZMT5GldSY9lnyKLM1TZGmSIkt2B1tyme1/9+Rg/nRYTq/Xb4fcbDt+B+QaJdSh10azIKfn+dnwW/GL8u3Lxm0U4vcJ1lMN01pXCzDMDvxbqT6WJimyNE+RJZ8iS+sUWfQYToNlRoos7VLUR+1TZGmcIkuzFFlapMjSKkWW8hRZOqTIUpYiS9MUWXIpsrRMkaVNiiyNEix3+bUMwt8UOsQmt/nNchdYfP9WMmXO8Vtm9Dz1bs9lmjLmwkbS7af2PMy/G7bX3AD70Zzstv2k0+ijtWFbTb33eK23+O/OzHE4b9wTcBuYMucFOMbnQ4O0rfOgf+cn9O/8AP07L9a/Oo0+WmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaXVv9XUe6/Xequidy6wXjPEJr+qKwP1h9gGpswFfsuM3rlYCA3Sti6A/l2Y0L8LA/Tvglj/6jT6aKWVVlpppZVWWmmllVZaaaWVVlpppZVWWkvFauq9z2+90d8XY71miE1uc8/6voDbwJS5yG+Z0T3rxdAgbesi6N/FCf27OED/Lor1r06jj9aGbTX13u+13uJzqUUOx/j9AbeBKXNJgGN8KTRI27oE+ndpQv8uDdC/S2L9q9Poo5VWWmmllVZaaaWVVlpppZVWWmmllVZaaS0Vq6n3Aa/1Fv//lVivGWKT29yzfiDgNjBlLvNbZnTPejk0SNu6DPp3eUL/Lg/Qv8ti/avT6KOVVlpppZVWWmmllVZaaaWVVlpppZVWWmmllVZaaaWVVlpppZVWWv1bTb0P+q23Kher1wyxya/qykD9IbaBKXOF3zKjdy5WQoO0rSugf1cm9O/KAP27Ita/Oo2+UrGaelcF2BdXOOyLqwJuA1Pm6gD74hpokLZ1NfTvmoT+XROgf1fH+len0Vcq1hzkGmW25nR+GeQesrnGkFtrc00g9zC0SXOP2FwzyD1qc80h9xi49PNxm2sPuSdsbhYs/6Qdnwm5p+z4HMg9bcfnQm6dHZ8HufV2fD7knrHjCyD3rB1fCLnn7PgiyG2w44sh97wdXwK5F+z4Usi9GPtuNbmNse84k3spdt4zuZdj5x+TeyW2/5ncJjveIrM19yrss5p7zeZaQm6zzbWC3Os21xpyb9hcG8i9aXPlkHsrwaf752rI6f6J+7Punw9BTvfPtZDT/fNhyOn++QjkdP98FHK6f+L+qtvtccjpdnsCcrrdnoScbrenIKfb7WnI6XZbBzndbusht5PNPQO5nW3uWcjtYnPPQW5Xm9sAubY29zzkdrO5FyDXzuZehJwetxsh18HmXoJcR5t7GXKdbO4VyHW2uU2Q62Jzr0Jud5t7DXJdbW4z5Ao29zrkutncG5DrbnNvQq6Hzb0F57emsGy1/az4ZkMl1qVDNjZdDeNaf1NoiydLRR4s3aCerl7rqaow7SvYshrZcd2/ukK9XfzUW6kjpt7Ose2nDq2rDJZ51x6Urezynb1uh4qqLNTb1FrU0xk8uswH1mPOgxPLt22HTxceEzrUtU/ivuKpz5RSgcdxfSy4Pf3ut8XrX8/7QIUps5PnMk0ZHWGbFOyn2vMwvxNsr46etxceb1quTqOPVlpppZVWWmmllVZaaaWVVlpppZVWWmmltVSsxtI95sTnW91T4NMcPm/xfW8bnwdq2ebZxVB4dlHwWmfx2RI+jyiAQesqg2UWlW91jbDjLWC+9hU+Y8T+8/u8o9h/Wo+Wq9NaVwtoC/af7+cd+JxOy/3HrbdquP9joKrCvBNg3jPQ/Sl+3Gmf4rNXzeFzPtPnut/1tJ/4bKxnsO1Sv/7AY6YAOR3vAT6/27gyxDO0SlNGR+gHbZvWUwbzp8E55PryrX0TP1+Y+bMT5uuQjU1Xwzg+t+7tt63RObMPlF8NdWC9ff3WW4n1Zm1oHZovg/FZ+kIMLGcG3b5qNvtdr4TlcLxrbJ08zO8VuM29wVEN01qX2U9ugn1qNnxf+v6+wfbidmkH20XnF2C7+D7ezHaJX9+poRNYesaceF2F58BeAXxfd13VC3ya6wI+bQeeTzaAteDVuu01UPz9mgLU6+l7Ypv3a/D9i27g0LrwfZZldr8279fEr3sKsG4HKPPv8U5Q/LsZ3wlaBea/1ztB6kl6J2gtnCc+/3+uX7vEcgH8lejXcrvE/Hhd0CWcpV7bMtRvMD1nmfdT0aF1lcEy62P7lOfv9+h9LjzHZzJ1X2v0hm3Tx/O2CfCdGr3v1A/88e/+PMxvC23r57lteP2i5eo0+upr3T0F1r4JVrzm7xRbzlj7e7VWRdf3e3gts3jds6cty5w7C3Zc6ymD+W/DOXYLXL9rm7tBOZ8lzNehrmOuP2y/AX7bGn3H7Q3lV0MdWG+F33orsV69vtc6NF8G45/C9X3F1tGvtq+azX63V8JyON43tk4e5u8VuM0DwFEN01qX2U/eg33qM7i+932cY3txu3SA7aLz8Tq7e2x5sz/r8YDXD76PyyzUo+Xq9B7g01w/2KafB7uvWHR1A1chs/19RbzfiecEvN/ZJICrcWbb7aXTWpept5nnevFvb3So6/zWDCxNPVvM/TX925tJtTUTh1068uyJY2pHZsHVJGZsBLZGMK8stlyzzPbt8gZvC5U1spU3tljtNNM4/SOkvG2ouVA0f0Rk/h7A7Fvmj4LMHwGZP/oxf+TTFqwv20/zRz3mR6D5ox2zk5oLUXPAmwthc3FqLjbMF3shU9x5zUFubtqZH9Xmi99cFJqLQXNCMAed+eIwB6Q5EM0JxJzkzIncnOTMWadKYqDEIIl9JPaV2E9if4kDJA6UOEjiYIlDJA6VOMxu28MljpA4UuIoiaMljpE4VmKwxHESx0ucIHGixEkSJ0ucInGqxGkSp0sMkThD4kyJsyTOljhH4lyJ8yTOl7hA4kKJiyQulhgqMUziEonhEiMkRkqMkrhUYrTEGInLJC6XGCsxTmK8RI3EBIkrJCZKTJKolZgsMUViqsSVEldJXC1xjcS1EtMkrpO4XuIGiRslbpK4WWK6xC0St0rcJjFD4naJOyTulJgpMUtitsRdEnMk7paYK3GPxDyJ+RL3SiyQWChxn8QiicUS90sskVgq8YDEMonlEg9KrJBYKbFKYrXEGomHJNZKPCzxiMSjEo9JPC7xhMSTEk9JPC2xTmK9xDMSz0o8lyne+Hhe4gWJFyU2SryUKe6nr0hsknhV4jWJzRKvS7wh8abEWxJvS7wjsUXiXYlvSbwn8b7EBxIfSnwk8bHEJ5ntD3wzlNuzxcF2ekjxpFGYNLamtlBRGC//HTZ2bM3UkSMGFHDepMK4yZNqC5Nqh02sLYyaWDOuUDkAy91i/0BHT/7DamtHjptQW6itkRXH1o6ZMPaqwtQxtaMLNVNGThwlFeDKD5R/g5VX2pU7b7/ysBEjvn69dXY9/XPB48aPGHlloWZybaFmVOGSmsnjR0z6P0F+h8ZO6AIA", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ], diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json index 190ef6359ba..5d031da53e7 100644 --- a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json @@ -90,7 +90,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -107,7 +107,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -456,7 +456,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -812,7 +812,7 @@ ] } ], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ], diff --git a/yarn-project/circuits.js/src/abis/abis.test.ts b/yarn-project/circuits.js/src/abis/abis.test.ts index 72b95f5d828..51113d7497f 100644 --- a/yarn-project/circuits.js/src/abis/abis.test.ts +++ b/yarn-project/circuits.js/src/abis/abis.test.ts @@ -249,8 +249,6 @@ describe('abis', () => { it('Computes an empty call request hash ', () => { const emptycallstack = PublicCallStackItem.empty(); const emptyHash = emptycallstack.hash(); - // const emptySideEffect = PublicCircuitPublicInputs.empty(); - // const emptyHash = Fr.fromBuffer(computePublicInputsHash(emptySideEffect)).toString(); expect(emptyHash.toString()).toMatchSnapshot(); }); diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index b010826d723..685d89fd216 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -647,7 +647,6 @@ export function computePublicInputsHash(input: PublicCircuitPublicInputs) { input.blockHeader.globalVariablesHash.toBuffer(), input.proverAddress.toBuffer(), ]; - console.log(`toHash: ${toHash.map(x => Fr.fromBuffer(x).toString())}`); if (toHash.length != PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH) { throw new Error('Incorrect number of input fields when hashing PublicCircuitPublicInputs'); } diff --git a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap index 73480bd0d66..c9487df054c 100644 --- a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap @@ -30,9 +30,7 @@ exports[`noir-compiler using nargo compiles the test contract 1`] = ` "name": "openFunction", "parameters": [], "returnTypes": [ - { - "kind": "field", - }, + undefined, ], "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f", }, diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index 060ba14a6df..b7f35f26763 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -94,9 +94,9 @@ exports[`Noir compatibility tests (interop_testing.nr) ComputeContractAddressFro exports[`Noir compatibility tests (interop_testing.nr) Function leaf matches noir 1`] = `"0x1ad8ece7f40e63d011ae47c6ce6cdaf31d632a23f5cf35bbeaaf69c8302afdbc"`; -exports[`Noir compatibility tests (interop_testing.nr) Public call stack item matches noir 1`] = `"0x143282214a65e4f4b1b3aa3785676ec07afbdc9dbe05cf9ba45557041c58cb2c"`; +exports[`Noir compatibility tests (interop_testing.nr) Public call stack item matches noir 1`] = `"0x10e265bf51be6945c10e526a86a928810429ac2d34c5fcda469245f0bb56abf6"`; -exports[`Noir compatibility tests (interop_testing.nr) Public call stack item request matches noir 1`] = `"0x229de3a8ec407b500b27abe888673a3beac946844b64cde7c6610eac54343981"`; +exports[`Noir compatibility tests (interop_testing.nr) Public call stack item request matches noir 1`] = `"0x0edc0b5221e098c129545ba693368cddc0e6950bb11baa4595b310fc1fa24b5f"`; exports[`Noir compatibility tests (interop_testing.nr) TxRequest Hash matches Noir 1`] = `"0x0b487ff2900ae1178e131bfe333fdbc351beef658f7c0d62db2801429b1aab75"`; diff --git a/yarn-project/noir-protocol-circuits/src/index.ts b/yarn-project/noir-protocol-circuits/src/index.ts index 0ea0873fd38..89954211e99 100644 --- a/yarn-project/noir-protocol-circuits/src/index.ts +++ b/yarn-project/noir-protocol-circuits/src/index.ts @@ -318,7 +318,6 @@ async function executePublicKernelPrivatePreviousWithACVM( const initialWitnessMap = abiEncode(PublicKernelPrivatePreviousSimulatedJson.abi as Abi, input as any); const decodedBytecode = Buffer.from(PublicKernelPrivatePreviousSimulatedJson.bytecode, 'base64'); // Execute the circuit - console.log(JSON.stringify(input)); const _witnessMap = await executeCircuitWithBlackBoxSolver( await getSolver(), decodedBytecode, diff --git a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts index 0cb5fe09e51..8b4bda18405 100644 --- a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts +++ b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts @@ -21,7 +21,8 @@ import { MerkleTreeId } from '@aztec/types'; import { default as levelup } from 'levelup'; import memdown from 'memdown'; -// TODO: generate a public call, hash it, assert it is the same as in noir +// TODO: DELETE THIS COMMENT +// fix failing hash approach: generate a public call, hash it, assert it is the same as in noir // this creates the snapshot, take it to Noir. hard code it into a Noir test // (can't read from snapshot in noir). build noir data structure here, // can use type conversion methods to convert call stack items to build noir stack item. diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index b80da885d25..0cda6710b5b 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -153,7 +153,7 @@ describe('public_processor', () => { proof, }); - it.only('runs a tx with enqueued public calls', async function () { + it('runs a tx with enqueued public calls', async function () { const callRequests: PublicCallRequest[] = [makePublicCallRequest(0x100), makePublicCallRequest(0x100)]; const callStackItems = callRequests.map(call => call.toCallRequest()); From 833e8128b7168b6cdfc015b7bdf739177651a265 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 13:30:11 +0000 Subject: [PATCH 49/71] fix: extraneous value in initial witness --- .../acir-simulator/src/client/client_execution_context.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/yarn-project/acir-simulator/src/client/client_execution_context.ts b/yarn-project/acir-simulator/src/client/client_execution_context.ts index e618783bf51..8a33b50ef90 100644 --- a/yarn-project/acir-simulator/src/client/client_execution_context.ts +++ b/yarn-project/acir-simulator/src/client/client_execution_context.ts @@ -105,8 +105,6 @@ export class ClientExecutionContext extends ViewDataOracle { this.txContext.chainId, this.txContext.version, - this.callContext.startSideEffectCounter, - ...args, ]; From 5612ebf6fee861710ece6f039ec73297003e5751 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 13:58:01 +0000 Subject: [PATCH 50/71] chore: update callstackitem size --- .../noir-protocol-circuits/src/crates/types/src/constants.nr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index 3e34923f0aa..cd3151de57f 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -85,7 +85,6 @@ global NUM_FIELDS_PER_SHA256: Field = 2; global ARGS_HASH_CHUNK_LENGTH: u32 = 32; global ARGS_HASH_CHUNK_COUNT: u32 = 16; - // NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts // Some are defined here because Noir doesn't yet support globals referencing other globals yet. // Move these constants to a noir file once the issue bellow is resolved: @@ -114,7 +113,7 @@ global CONTRACT_STORAGE_READ_LENGTH: Field = 2; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; -global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 228; +global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 210; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87; global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 192; global COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 4096; From d1616e27cb1c18b91ac01d00c367a3ce4559fb92 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 14:39:31 +0000 Subject: [PATCH 51/71] fix: read correctly the call stack item --- .../src/core/libraries/ConstantsGen.sol | 2 +- yarn-project/aztec-nr/aztec/src/context.nr | 92 +++++----- yarn-project/aztec-nr/aztec/src/utils.nr | 56 +++--- .../src/artifacts/ecdsa_account_contract.json | 2 +- .../artifacts/schnorr_account_contract.json | 2 +- .../schnorr_single_key_account_contract.json | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 2 +- .../crates/public-kernel-lib/src/common.nr | 159 +++++++++++------- 8 files changed, 186 insertions(+), 131 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 30d8b1c325a..d20b77ce09c 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -81,7 +81,7 @@ library Constants { uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant EMPTY_NULLIFIED_COMMITMENT = 1000000; - uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 228; + uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 210; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; uint256 internal constant COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index a9f05c4561a..88985e4771b 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -51,7 +51,7 @@ use crate::types::{ vec::BoundedVec, }; -use crate::utils::{arr_copy_slice, arr_copy_slice_in_struct_dumb2, arr_copy_slice_in_struct_dumb3}; +use crate::utils::Reader; use crate::oracle::{ arguments, @@ -282,64 +282,68 @@ impl PrivateContext { function_selector, args_hash, ); + let mut reader = Reader::new(fields); + let item = PrivateCallStackItem { - contract_address: AztecAddress::from_field(fields[0]), + contract_address: AztecAddress::from_field(reader.read()), function_data: FunctionData { - selector: FunctionSelector::from_field(fields[1]), - is_internal: fields[2] as bool, - is_private: fields[3] as bool, - is_constructor: fields[4] as bool, + selector: FunctionSelector::from_field(reader.read()), + is_internal: reader.read() as bool, + is_private: reader.read() as bool, + is_constructor: reader.read() as bool, }, public_inputs: PrivateCircuitPublicInputs { call_context: CallContext { - msg_sender : AztecAddress::from_field(fields[5]), - storage_contract_address : AztecAddress::from_field(fields[6]), - portal_contract_address : EthAddress::from_field(fields[7]), - function_selector: FunctionSelector::from_field(fields[8]), // practically same as fields[1] - is_delegate_call : fields[9] as bool, - is_static_call : fields[10] as bool, - is_contract_deployment: fields[11] as bool, - start_side_effect_counter: fields[12], + msg_sender : AztecAddress::from_field(reader.read()), + storage_contract_address : AztecAddress::from_field(reader.read()), + portal_contract_address : EthAddress::from_field(reader.read()), + function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1] + is_delegate_call : reader.read() as bool, + is_static_call : reader.read() as bool, + is_contract_deployment: reader.read() as bool, + start_side_effect_counter: reader.read(), }, - // TODO handle the offsets as a variable incremented during extraction? - args_hash: fields[13], - return_values: arr_copy_slice(fields, [0; RETURN_VALUES_LENGTH], 14), // +1 - read_requests: arr_copy_slice_in_struct_dumb2(fields, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL], SideEffect::deserialise, 18), - new_commitments: arr_copy_slice_in_struct_dumb2(fields, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL], SideEffect::deserialise, 82), - new_nullifiers: arr_copy_slice_in_struct_dumb3(fields, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL], SideEffectLinkedToNoteHash::deserialise, 114), - nullified_commitments: arr_copy_slice(fields, [0; MAX_NEW_NULLIFIERS_PER_CALL], 162), - private_call_stack_hashes: arr_copy_slice(fields, [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], 178), - public_call_stack_hashes: arr_copy_slice(fields, [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], 190), - new_l2_to_l1_msgs: arr_copy_slice(fields, [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], 202), - encrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 206), - unencrypted_logs_hash: arr_copy_slice(fields, [0; NUM_FIELDS_PER_SHA256], 208), - encrypted_log_preimages_length: fields[210], - unencrypted_log_preimages_length: fields[211], + args_hash: reader.read(), + return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1 + read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]), + new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]), + new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]), + nullified_commitments: reader.read_array([0; MAX_NEW_NULLIFIERS_PER_CALL]), + private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]), + public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]), + new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]), + encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]), + unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]), + encrypted_log_preimages_length: reader.read(), + unencrypted_log_preimages_length: reader.read(), block_header: BlockHeader{ // Must match order in `private_circuit_public_inputs.hpp` - note_hash_tree_root : fields[212], - nullifier_tree_root : fields[213], - contract_tree_root : fields[214], - l1_to_l2_messages_tree_root : fields[215], - archive_root : fields[216], - public_data_tree_root: fields[217], - global_variables_hash: fields[218], + note_hash_tree_root : reader.read(), + nullifier_tree_root : reader.read(), + contract_tree_root : reader.read(), + l1_to_l2_messages_tree_root : reader.read(), + archive_root : reader.read(), + public_data_tree_root: reader.read(), + global_variables_hash: reader.read(), }, contract_deployment_data: ContractDeploymentData { deployer_public_key: Point { - x: fields[219], - y: fields[220] + x: reader.read(), + y: reader.read() }, - constructor_vk_hash : fields[221], - function_tree_root : fields[222], - contract_address_salt : fields[223], - portal_contract_address : EthAddress::from_field(fields[224]), + constructor_vk_hash : reader.read(), + function_tree_root : reader.read(), + contract_address_salt : reader.read(), + portal_contract_address : EthAddress::from_field(reader.read()), }, - chain_id: fields[225], - version: fields[226], + chain_id: reader.read(), + version: reader.read(), }, - is_execution_request: fields[227] as bool, + is_execution_request: reader.read() as bool, }; + + reader.finish(); + assert(contract_address.eq(item.contract_address)); assert(function_selector.eq(item.function_data.selector)); diff --git a/yarn-project/aztec-nr/aztec/src/utils.nr b/yarn-project/aztec-nr/aztec/src/utils.nr index 350ee70f752..2b16c125e67 100644 --- a/yarn-project/aztec-nr/aztec/src/utils.nr +++ b/yarn-project/aztec-nr/aztec/src/utils.nr @@ -33,27 +33,43 @@ pub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool { dep::std::eddsa::lt_bytes32(rhs, lhs) } -// TODO: Replace these with something smart. -pub fn arr_copy_slice_in_struct_dumb2( - src: [T; N], - mut dst: [U; M], - deserialise: fn([T; 2]) -> U, +struct Reader { + data: [Field; N], offset: Field, -) -> [U; M] { - for i in 0..dst.len() { - dst[i] = deserialise([src[offset + 2 * i], src[offset + 2 * i + 1]]); - } - dst } -pub fn arr_copy_slice_in_struct_dumb3( - src: [T; N], - mut dst: [U; M], - deserialise: fn([T; 3]) -> U, - offset: Field, -) -> [U; M] { - for i in 0..dst.len() { - dst[i] = deserialise([src[offset + 2 * i], src[offset + 2 * i + 1], src[offset + 2 * i + 2]]); +impl Reader { + pub fn new(data: [Field; N]) -> Self { + Self { data, offset: 0 } } - dst -} \ No newline at end of file + + pub fn read(&mut self) -> Field { + let result = self.data[self.offset]; + self.offset += 1; + result + } + + pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] { + for i in 0..K { + result[i] = self.data[self.offset + i]; + } + self.offset += K; + result + } + + pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T { + let result = deserialise(self.read_array([0; K])); + result + } + + pub fn read_struct_array(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] { + for i in 0..C { + result[i] = self.read_struct(deserialise); + } + result + } + + pub fn finish(self) { + assert(self.offset == self.data.len(), "Reader did not read all data"); + } +} diff --git a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json index b725f88291e..873ec600de6 100644 --- a/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/ecdsa_account_contract.json @@ -167,7 +167,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json index 8da24a9fdd6..8ab420e1cdb 100644 --- a/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/schnorr_account_contract.json @@ -155,7 +155,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { diff --git a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json index 5d031da53e7..938acaae898 100644 --- a/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json +++ b/yarn-project/aztec.js/src/artifacts/schnorr_single_key_account_contract.json @@ -90,7 +90,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 4208836d7f6..42a6f868337 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -67,7 +67,7 @@ export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; -export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 228; +export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 210; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 4096; diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 81a5070e81c..27ba5c52256 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -37,24 +37,29 @@ use dep::types::{ use crate::hash::{compute_public_data_tree_index, compute_public_data_tree_value}; // Validates inputs to the kernel circuit that are common to all invocation scenarios. -pub fn validate_inputs(public_call: PublicCallData){ +pub fn validate_inputs(public_call: PublicCallData) { // Validates commons inputs for all type of kernel inputs let this_call_stack_item: PublicCallStackItem = public_call.call_stack_item; - assert(this_call_stack_item.public_inputs.call_context.is_contract_deployment == false, - "Contract deployment cannot be a public function"); - assert(!this_call_stack_item.contract_address.eq(AztecAddress::zero()), - "Contract address cannot be zero"); - assert(this_call_stack_item.function_data.selector.to_field() != 0, - "Function signature cannot be zero"); - assert(this_call_stack_item.function_data.is_constructor == false, - "Constructors cannot be public functions"); - assert(this_call_stack_item.function_data.is_private == false, - "Cannot execute a private function with the public kernel circuit"); - assert(public_call.bytecode_hash != 0, - "Bytecode hash cannot be zero"); + assert( + this_call_stack_item.public_inputs.call_context.is_contract_deployment == false, "Contract deployment cannot be a public function" + ); + assert( + !this_call_stack_item.contract_address.eq(AztecAddress::zero()), "Contract address cannot be zero" + ); + assert(this_call_stack_item.function_data.selector.to_field() != 0, "Function signature cannot be zero"); + assert( + this_call_stack_item.function_data.is_constructor == false, "Constructors cannot be public functions" + ); + assert( + this_call_stack_item.function_data.is_private == false, "Cannot execute a private function with the public kernel circuit" + ); + assert(public_call.bytecode_hash != 0, "Bytecode hash cannot be zero"); } -pub fn initialize_end_values(previous_kernel : PreviousKernelData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { +pub fn initialize_end_values( + previous_kernel: PreviousKernelData, + circuit_outputs: &mut KernelCircuitPublicInputsBuilder +) { // Initialises the circuit outputs with the end state of the previous iteration circuit_outputs.constants = previous_kernel.public_inputs.constants; @@ -81,18 +86,26 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, circuit_outpu circuit_outputs.end.new_contracts = struct_array_to_bounded_vec(previous_kernel.public_inputs.end.new_contracts, |ncd: NewContractData| ncd.is_empty(), NewContractData::default()); } -fn perform_static_call_checks(public_call: PublicCallData){ +fn perform_static_call_checks(public_call: PublicCallData) { let public_inputs = public_call.call_stack_item.public_inputs; if public_inputs.call_context.is_static_call { // No state changes are allowed for static calls: let new_commitments_length = struct_array_length(public_inputs.new_commitments, |r: SideEffect| r.is_empty()); assert(new_commitments_length == 0, "new_commitments must be empty for static calls"); - let new_nullifiers_length = struct_array_length(public_inputs.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_empty()); + let new_nullifiers_length = struct_array_length( + public_inputs.new_nullifiers, + |r: SideEffectLinkedToNoteHash| r.is_empty() + ); assert(new_nullifiers_length == 0, "new_nullifiers must be empty for static calls"); - let update_requests_length = struct_array_length(public_inputs.contract_storage_update_requests, |r: StorageUpdateRequest| r.is_empty()); - assert(update_requests_length == 0, "No contract storage update requests are allowed for static calls"); + let update_requests_length = struct_array_length( + public_inputs.contract_storage_update_requests, + |r: StorageUpdateRequest| r.is_empty() + ); + assert( + update_requests_length == 0, "No contract storage update requests are allowed for static calls" + ); } } @@ -104,8 +117,14 @@ fn is_valid_caller(request: CallRequest, public_call: PublicCallData) -> bool { & (request.caller_context.is_empty() | valid_caller_context) } -fn validate_call_requests(call_requests: BoundedVec, hashes: [Field; N], public_call: PublicCallData) { - assert_eq(array_length(hashes), call_requests.len(), "call requests length does not match the expected length"); +fn validate_call_requests( + call_requests: BoundedVec, + hashes: [Field; N], + public_call: PublicCallData +) { + assert_eq( + array_length(hashes), call_requests.len(), "call requests length does not match the expected length" + ); for i in 0..N { let hash = hashes[i]; if hash != 0 { @@ -116,7 +135,7 @@ fn validate_call_requests(call_requests: BoundedVec, hashes: } } -pub fn update_public_end_values(public_call: PublicCallData, circuit_outputs : &mut KernelCircuitPublicInputsBuilder) { +pub fn update_public_end_values(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { // Updates the circuit outputs with new state changes, call stack etc circuit_outputs.is_private = false; @@ -124,7 +143,11 @@ pub fn update_public_end_values(public_call: PublicCallData, circuit_outputs : & perform_static_call_checks(public_call); // Update public call stack. - let public_call_requests = struct_array_to_bounded_vec(public_call.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); + let public_call_requests = struct_array_to_bounded_vec( + public_call.public_call_stack, + |c: CallRequest| c.is_empty(), + CallRequest::empty() + ); let hashes = public_call.call_stack_item.public_inputs.public_call_stack_hashes; validate_call_requests(public_call_requests, hashes, public_call); circuit_outputs.end.public_call_stack.push_vec(public_call_requests); @@ -139,19 +162,19 @@ pub fn update_public_end_values(public_call: PublicCallData, circuit_outputs : & propagate_valid_public_data_reads(public_call, circuit_outputs); } -fn propagate_valid_public_data_update_requests(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder){ +fn propagate_valid_public_data_update_requests(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { let contract_address = public_call.call_stack_item.contract_address; let update_requests = public_call.call_stack_item.public_inputs.contract_storage_update_requests; let mut public_data_update_requests : BoundedVec = BoundedVec::new(PublicDataUpdateRequest::empty()); - for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { + for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { let update_request = update_requests[i]; if (!update_request.is_empty()) { let public_data_update_request = PublicDataUpdateRequest { leaf_slot: compute_public_data_tree_index(contract_address, update_request.storage_slot), old_value: compute_public_data_tree_value(update_request.old_value), - new_value: compute_public_data_tree_value(update_request.new_value), + new_value: compute_public_data_tree_value(update_request.new_value) }; public_data_update_requests.push(public_data_update_request); @@ -160,7 +183,7 @@ fn propagate_valid_public_data_update_requests(public_call: PublicCallData, circ circuit_outputs.end.public_data_update_requests.push_vec(public_data_update_requests); } -fn propagate_valid_public_data_reads(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder){ +fn propagate_valid_public_data_reads(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { let contract_address = public_call.call_stack_item.contract_address; let read_requests = public_call.call_stack_item.public_inputs.contract_storage_reads; @@ -171,15 +194,15 @@ fn propagate_valid_public_data_reads(public_call: PublicCallData, circuit_output if !read_request.is_empty() { let public_data_read = PublicDataRead { leaf_slot: compute_public_data_tree_index(contract_address, read_request.storage_slot), - value: compute_public_data_tree_value(read_request.current_value), + value: compute_public_data_tree_value(read_request.current_value) }; public_data_reads.push(public_data_read); } } - circuit_outputs.end.public_data_reads.push_vec(public_data_reads); + circuit_outputs.end.public_data_reads.push_vec(public_data_reads); } -fn propagate_new_commitments(public_call: PublicCallData, circuit_outputs : &mut KernelCircuitPublicInputsBuilder) { +fn propagate_new_commitments(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { let public_call_public_inputs = public_call.call_stack_item.public_inputs; let new_commitments = public_call.call_stack_item.public_inputs.new_commitments; @@ -190,17 +213,13 @@ fn propagate_new_commitments(public_call: PublicCallData, circuit_outputs : &mut let new_commitment = new_commitments[i].value; if new_commitment != 0 { let siloed_new_commitment = silo_commitment(storage_contract_address, new_commitment); - siloed_new_commitments.push(SideEffect{ - value: siloed_new_commitment, - counter: new_commitments[i].counter, - - }); + siloed_new_commitments.push(SideEffect { value: siloed_new_commitment, counter: new_commitments[i].counter }); } } circuit_outputs.end.new_commitments.push_vec(siloed_new_commitments); } -fn propagate_new_nullifiers(public_call: PublicCallData, circuit_outputs : &mut KernelCircuitPublicInputsBuilder) { +fn propagate_new_nullifiers(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { let new_nullifiers = public_call.call_stack_item.public_inputs.new_nullifiers; let storage_contract_address = public_call.call_stack_item.public_inputs.call_context.storage_contract_address; @@ -211,19 +230,19 @@ fn propagate_new_nullifiers(public_call: PublicCallData, circuit_outputs : &mut if new_nullifier != 0 { let siloed_new_nullifier = silo_nullifier(storage_contract_address, new_nullifier); siloed_new_nullifiers.push( - SideEffectLinkedToNoteHash{ - value: siloed_new_nullifier, - counter: new_nullifiers[i].counter, - note_hash: new_nullifiers[i].note_hash, - }); - + SideEffectLinkedToNoteHash { + value: siloed_new_nullifier, + counter: new_nullifiers[i].counter, + note_hash: new_nullifiers[i].note_hash + } + ); } } circuit_outputs.end.new_nullifiers.push_vec(siloed_new_nullifiers); } -fn propagate_new_l2_to_l1_messages(public_call: PublicCallData, public_inputs: &mut KernelCircuitPublicInputsBuilder){ +fn propagate_new_l2_to_l1_messages(public_call: PublicCallData, public_inputs: &mut KernelCircuitPublicInputsBuilder) { // new l2 to l1 messages let public_call_public_inputs = public_call.call_stack_item.public_inputs; let portal_contract_address = public_call.portal_contract_address; @@ -234,11 +253,13 @@ fn propagate_new_l2_to_l1_messages(public_call: PublicCallData, public_inputs: for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL { let msg_is_zero = new_l2_to_l1_msgs[i] == 0; if msg_is_zero == false { - let new_l2_to_l1_msgs = compute_l2_to_l1_hash(storage_contract_address, - public_inputs.constants.tx_context.version, - portal_contract_address, - public_inputs.constants.tx_context.chain_id, - new_l2_to_l1_msgs[i]); + let new_l2_to_l1_msgs = compute_l2_to_l1_hash( + storage_contract_address, + public_inputs.constants.tx_context.version, + portal_contract_address, + public_inputs.constants.tx_context.chain_id, + new_l2_to_l1_msgs[i] + ); new_l2_to_l1_msgs_to_insert.push(new_l2_to_l1_msgs) } } @@ -254,10 +275,11 @@ fn propagate_new_l2_to_l1_messages(public_call: PublicCallData, public_inputs: * https://discourse.aztec.network/t/proposal-forcing-the-sequencer-to-actually-submit-data-to-l1/426 * @note Used by public kernels which had previous iterations. */ -pub fn accumulate_unencrypted_logs(public_call: PublicCallData, - previous_kernel: PreviousKernelData, - public_inputs: &mut KernelCircuitPublicInputsBuilder) -{ +pub fn accumulate_unencrypted_logs( + public_call: PublicCallData, + previous_kernel: PreviousKernelData, + public_inputs: &mut KernelCircuitPublicInputsBuilder +) { let public_call_public_inputs = public_call.call_stack_item.public_inputs; let previous_kernel_end = previous_kernel.public_inputs.end; @@ -282,37 +304,50 @@ pub fn accumulate_unencrypted_logs(public_call: PublicCallData, * @param builder The circuit builder * @param public_kernel_inputs The inputs to this iteration of the kernel circuit */ - pub fn validate_call_against_request(public_call: PublicCallData, request: CallRequest) { +pub fn validate_call_against_request(public_call: PublicCallData, request: CallRequest) { // TODO: this logic might need to change to accommodate the weird edge 3 initial txs (the 'main' tx, the 'fee' tx, // and the 'gas rebate' tx). let call_stack_item = public_call.call_stack_item; // let emptycallstackitem: PublicCallStackItem = dep::std::unsafe::zeroed(); let publiccircuitinputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); - dep::std::println(publiccircuitinputs.hash()); + // dep::std::println(publiccircuitinputs.hash()); // dep::std::println(call_stack_item); // let empty = CallRequest::empty(); // dep::std::println(emptycallstackitem.hash()); // dep::std::println(call_stack_item.hash()); // dep::std::println(call_stack_item); - assert(request.hash == call_stack_item.hash(), - "calculated public_kernel_inputs_hash does not match provided public_kernel_inputs_hash at the top of the call stack"); + assert( + request.hash == call_stack_item.hash(), "calculated public_kernel_inputs_hash does not match provided public_kernel_inputs_hash at the top of the call stack" + ); let call_context = call_stack_item.public_inputs.call_context; if (call_stack_item.function_data.is_internal) { - assert(call_stack_item.contract_address.eq(call_context.msg_sender), "msg_sender must be self for internal calls"); + assert( + call_stack_item.contract_address.eq(call_context.msg_sender), "msg_sender must be self for internal calls" + ); } if call_context.is_delegate_call { let caller_context = request.caller_context; assert(!caller_context.is_empty(), "caller context cannot be empty for delegate calls"); - assert(call_context.msg_sender.eq(caller_context.msg_sender), "call stack msg_sender does not match expected msg_sender for delegate calls"); - assert(call_context.storage_contract_address.eq(caller_context.storage_contract_address), "call stack storage address does not match expected contract address for delegate calls"); - assert(!call_stack_item.contract_address.eq(call_context.storage_contract_address), "curent contract address must not match storage contract address for delegate calls"); + assert( + call_context.msg_sender.eq(caller_context.msg_sender), "call stack msg_sender does not match expected msg_sender for delegate calls" + ); + assert( + call_context.storage_contract_address.eq(caller_context.storage_contract_address), "call stack storage address does not match expected contract address for delegate calls" + ); + assert( + !call_stack_item.contract_address.eq(call_context.storage_contract_address), "curent contract address must not match storage contract address for delegate calls" + ); } else { let caller_contract_address = request.caller_contract_address; - assert(call_context.msg_sender.eq(caller_contract_address), "call stack msg_sender does not match caller contract address"); - assert(call_context.storage_contract_address.eq(call_stack_item.contract_address), "call stack storage address does not match expected contract address"); + assert( + call_context.msg_sender.eq(caller_contract_address), "call stack msg_sender does not match caller contract address" + ); + assert( + call_context.storage_contract_address.eq(call_stack_item.contract_address), "call stack storage address does not match expected contract address" + ); } -} \ No newline at end of file +} From 08ac70925dbea3febf610e5c4c621e9f9ebdca65 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 15:16:26 +0000 Subject: [PATCH 52/71] tests: fix private execution tests --- .../src/client/private_execution.test.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/yarn-project/acir-simulator/src/client/private_execution.test.ts b/yarn-project/acir-simulator/src/client/private_execution.test.ts index 30170bc9c4e..5c0d7bdbbf5 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.test.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.test.ts @@ -248,7 +248,7 @@ describe('Private Execution test suite', () => { ); }); - it.only('should run the create_note function', async () => { + it('should run the create_note function', async () => { const artifact = getFunctionArtifact(StatefulTestContractArtifact, 'create_note'); const result = await runSimulator({ args: [owner, 140], artifact }); // this line @@ -297,8 +297,8 @@ describe('Private Execution test suite', () => { const [changeNote, recipientNote] = result.newNotes; expect(recipientNote.storageSlot).toEqual(recipientStorageSlot); - const newCommitments = result.callStackItem.publicInputs.newCommitments.filter( - field => !field.value.equals(Fr.ZERO), + const newCommitments = sideEffectArrayToValueArray(result.callStackItem.publicInputs.newCommitments).filter( + field => !field.equals(Fr.ZERO), ); expect(newCommitments).toHaveLength(2); @@ -649,7 +649,7 @@ describe('Private Execution test suite', () => { expect(commitment).toEqual(innerNoteHash); // read request should match innerNoteHash for pending notes (there is no nonce, so can't compute "unique" hash) - const readRequest = result.callStackItem.publicInputs.readRequests[0]; + const readRequest = sideEffectArrayToValueArray(result.callStackItem.publicInputs.readRequests)[0]; expect(readRequest).toEqual(innerNoteHash); const gotNoteValue = result.callStackItem.publicInputs.returnValues[0].value; @@ -657,7 +657,7 @@ describe('Private Execution test suite', () => { const nullifier = result.callStackItem.publicInputs.newNullifiers[0]; const expectedNullifier = hashFields([innerNoteHash, ownerPk.low, ownerPk.high]); - expect(nullifier).toEqual(expectedNullifier); + expect(nullifier.value).toEqual(expectedNullifier); }); it('should be able to insert, read, and nullify pending commitments in nested calls', async () => { @@ -712,7 +712,7 @@ describe('Private Execution test suite', () => { expect(noteAndSlot.note.items[0]).toEqual(new Fr(amountToTransfer)); const newCommitments = sideEffectArrayToValueArray( - nonEmptySideEffects(result.callStackItem.publicInputs.newCommitments), + nonEmptySideEffects(execInsert.callStackItem.publicInputs.newCommitments), ); expect(newCommitments).toHaveLength(1); @@ -723,14 +723,14 @@ describe('Private Execution test suite', () => { // read request should match innerNoteHash for pending notes (there is no nonce, so can't compute "unique" hash) const readRequest = execGetThenNullify.callStackItem.publicInputs.readRequests[0]; - expect(readRequest).toEqual(innerNoteHash); + expect(readRequest.value).toEqual(innerNoteHash); const gotNoteValue = execGetThenNullify.callStackItem.publicInputs.returnValues[0].value; expect(gotNoteValue).toEqual(amountToTransfer); const nullifier = execGetThenNullify.callStackItem.publicInputs.newNullifiers[0]; const expectedNullifier = hashFields([innerNoteHash, ownerPk.low, ownerPk.high]); - expect(nullifier).toEqual(expectedNullifier); + expect(nullifier.value).toEqual(expectedNullifier); // check that the last get_notes call return no note const afterNullifyingNoteValue = getNotesAfterNullify.callStackItem.publicInputs.returnValues[0].value; @@ -772,15 +772,15 @@ describe('Private Execution test suite', () => { // read requests should be empty const readRequest = result.callStackItem.publicInputs.readRequests[0].value; - expect(readRequest).toEqual(0n); + expect(readRequest).toEqual(Fr.ZERO); // should get note value 0 because it actually gets a fake note since the real one hasn't been inserted yet! - const gotNoteValue = result.callStackItem.publicInputs.returnValues[0].value; - expect(gotNoteValue).toEqual(0n); + const gotNoteValue = result.callStackItem.publicInputs.returnValues[0]; + expect(gotNoteValue).toEqual(Fr.ZERO); // there should be no nullifiers const nullifier = result.callStackItem.publicInputs.newNullifiers[0].value; - expect(nullifier).toEqual(0n); + expect(nullifier).toEqual(Fr.ZERO); }); }); From 42cdf4be308bc4f39b3fde375f5f1cfe8b214aba Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 15:24:56 +0000 Subject: [PATCH 53/71] chore: update test fixtures --- .../src/__snapshots__/index.test.ts.snap | 47590 +++++++++------- .../nested-call-private-kernel-inner.hex | 2 +- 2 files changed, 28531 insertions(+), 19061 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index b7f35f26763..57ce5d374c3 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -35191,121 +35191,121 @@ KernelCircuitPublicInputs { "constants": CombinedConstantData { "blockHeader": BlockHeader { "archiveRoot": Fr { - "asBigInt": 4141256197271035428567950264296887925803599654022881395228888440470800002298n, + "asBigInt": 6744322730237198477312080572139538559114287895731814574457657241516307772626n, "asBuffer": { "data": [ - 9, - 39, - 222, - 49, - 149, - 188, - 22, - 194, - 228, + 14, + 233, + 38, + 193, + 136, + 60, + 41, + 90, + 208, + 130, + 182, + 37, + 133, + 226, + 19, + 81, + 125, + 132, + 14, + 178, + 214, + 0, 185, - 87, + 70, + 216, 94, - 14, - 102, - 227, - 106, - 225, - 154, - 204, - 195, + 36, + 88, 105, - 44, - 167, - 185, - 41, - 119, - 195, - 190, - 193, - 13, - 108, - 250, + 109, + 244, + 210, ], "type": "Buffer", }, }, "contractTreeRoot": Fr { - "asBigInt": 5581248852067966506476110357785496963917224136518690137510493228293502103930n, + "asBigInt": 13259508924372164661572995925135014139404669140086009788791418974141089345731n, "asBuffer": { "data": [ - 12, - 86, - 223, - 249, - 180, - 193, - 103, - 122, - 71, - 221, - 147, - 211, - 135, - 162, - 135, - 26, - 67, - 102, - 193, - 61, - 168, - 180, - 252, - 159, + 29, + 80, + 157, + 184, + 146, + 225, + 237, + 114, 133, - 200, - 174, - 12, - 10, - 53, - 113, - 122, + 226, + 82, + 0, + 226, + 219, + 134, + 117, + 80, + 240, + 140, + 83, + 120, + 218, + 229, + 92, + 155, + 156, + 11, + 188, + 5, + 48, + 112, + 195, ], "type": "Buffer", }, }, "globalVariablesHash": Fr { - "asBigInt": 10982507924920738674805945892274185625046296695654177390082807748667229078837n, + "asBigInt": 16925807809152742178971781652451821614938785911012483177868434045680935880983n, "asBuffer": { "data": [ + 37, + 107, + 170, + 240, + 79, + 133, + 37, + 103, + 93, + 204, + 9, 24, - 71, - 225, - 19, - 115, - 109, - 194, - 36, - 28, - 183, - 24, - 36, - 233, - 201, - 246, + 248, + 160, + 164, + 15, 253, - 41, - 76, - 59, - 132, - 31, - 252, - 116, - 77, - 98, - 189, - 49, - 231, + 102, + 169, + 153, + 220, 160, - 196, - 5, - 53, + 78, + 212, + 79, + 86, + 122, + 71, + 35, + 41, + 201, + 23, ], "type": "Buffer", }, @@ -35351,81 +35351,81 @@ KernelCircuitPublicInputs { }, }, "noteHashTreeRoot": Fr { - "asBigInt": 19936675125770429878298489304626860431485064106154993611029467200819125156683n, + "asBigInt": 6971175192416801990462082635037927335970598849917054122744877988445043867640n, "asBuffer": { "data": [ - 44, - 19, - 194, - 28, - 1, - 245, - 22, - 101, - 227, + 15, + 105, + 139, + 155, + 3, + 39, + 98, + 77, 237, - 34, - 250, - 157, - 184, + 254, 204, - 132, - 63, - 31, - 60, - 153, - 200, - 185, - 110, - 87, + 193, + 21, + 126, + 144, + 239, + 143, 26, - 255, - 192, - 247, - 77, + 253, + 180, + 141, + 240, 237, - 251, - 75, + 200, + 138, + 126, + 235, + 230, + 152, + 156, + 191, + 248, ], "type": "Buffer", }, }, "nullifierTreeRoot": Fr { - "asBigInt": 4586703266286347436402481541702375293800259937188486151561348105796608164964n, + "asBigInt": 1622125592590053854657962491619779447386225562588724076751511813000515030970n, "asBuffer": { "data": [ - 10, - 35, - 251, - 103, - 170, - 184, - 66, - 16, - 60, - 0, - 100, - 234, - 184, - 234, - 231, - 175, - 44, - 208, - 126, - 190, - 35, - 140, - 53, - 186, - 27, - 189, - 135, - 165, + 3, + 150, 23, - 153, + 46, + 64, + 145, + 210, + 80, + 83, + 217, + 75, + 229, + 126, + 247, + 122, + 233, + 12, + 74, + 106, + 218, 132, - 100, + 123, + 158, + 148, + 80, + 11, + 218, + 151, + 48, + 252, + 15, + 186, ], "type": "Buffer", }, @@ -35471,41 +35471,41 @@ KernelCircuitPublicInputs { }, }, "publicDataTreeRoot": Fr { - "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, + "asBigInt": 13940981882517738105981911020707002777955674699044852872880094407282064863456n, "asBuffer": { "data": [ - 12, - 202, - 175, - 220, - 156, - 53, - 55, - 67, - 151, - 13, + 30, + 210, + 80, + 237, + 115, + 219, + 110, + 112, + 128, + 92, 78, - 48, - 90, - 231, - 54, + 252, + 240, + 5, + 110, + 134, + 149, + 183, + 156, + 211, + 186, 65, - 206, - 105, - 79, - 7, - 219, - 103, - 136, - 109, - 39, - 105, - 201, - 237, - 136, - 233, - 105, - 216, + 142, + 130, + 124, + 24, + 77, + 238, + 108, + 111, + 176, + 224, ], "type": "Buffer", }, @@ -36139,2570 +36139,2098 @@ KernelCircuitPublicInputs { }, ], "newCommitments": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "newContracts": [ - NewContractData { - "contractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -38742,7 +38270,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "functionTreeRoot": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -38782,8 +38312,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -38805,3257 +38336,3170 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, }, - ], - "newL2ToL1Msgs": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - ], - "newNullifiers": [ - Fr { - "asBigInt": 17066526537155008625801148970628416876452664863580543040821415016087256242169n, - "asBuffer": { - "data": [ - 37, - 187, - 79, - 204, - 6, - 92, - 222, - 117, - 146, - 104, - 60, - 208, - 138, - 215, - 82, - 15, - 212, - 189, - 44, - 138, - 125, - 108, - 69, - 248, - 102, - 158, - 186, - 229, - 52, - 175, - 23, - 249, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "nullifiedCommitments": [ - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "newContracts": [ + NewContractData { + "contractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "functionTreeRoot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, + ], + "newL2ToL1Msgs": [ Fr { "asBigInt": 0n, "asBuffer": { @@ -42136,1890 +41580,1474 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "newNullifiers": [ + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 8484096034934948435255574359484396298079585651803261848652933515063599896872n, + "asBuffer": { + "data": [ + 18, + 193, + 212, + 3, + 245, + 65, + 195, + 224, + 45, + 57, + 138, + 0, + 98, + 69, + 17, + 113, + 46, + 157, + 245, + 142, + 13, + 86, + 87, + 121, + 52, + 71, + 164, + 204, + 128, + 9, + 25, + 40, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 8484096034934948435255574359484396298079585651803261848652933515063599896872n, + "asBuffer": { + "data": [ + 18, + 193, + 212, + 3, + 245, + 65, + 195, + 224, + 45, + 57, + 138, + 0, + 98, + 69, + 17, + 113, + 46, + 157, + 245, + 142, + 13, + 86, + 87, + 121, + 52, + 71, + 164, + 204, + 128, + 9, + 25, + 40, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "optionallyRevealedData": [ - OptionallyRevealedData { - "callStackItemHash": Fr { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44059,20 +43087,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -44094,11 +43111,23 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44139,8 +43168,8 @@ KernelCircuitPublicInputs { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44180,20 +43209,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -44215,11 +43233,23 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44260,8 +43290,8 @@ KernelCircuitPublicInputs { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44301,20 +43331,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -44336,11 +43355,23 @@ KernelCircuitPublicInputs { 0, 0, 0, - ], - "type": "Buffer", - }, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - "vkHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44381,8 +43412,8 @@ KernelCircuitPublicInputs { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44422,20 +43453,49 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -44457,11 +43517,25 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44501,4784 +43575,8358 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "pendingReadRequests": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "nullifiedCommitments": [ + Fr { + "asBigInt": 1000000n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 66, + 64, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -49304,412 +51952,4777 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "optionallyRevealedData": [ + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "privateCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "publicCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "endSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "hash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "startSideEffectCounter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "publicDataReads": [ + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "privateCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + }, + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -49749,7 +56762,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -49790,90 +56846,132 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -49913,7 +57011,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -49953,91 +57053,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50077,7 +57136,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50118,90 +57178,49 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50241,7 +57260,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50281,91 +57302,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50405,7 +57385,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50446,90 +57427,49 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataRead { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50569,7 +57509,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50609,91 +57551,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50733,7 +57634,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50774,90 +57676,50 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + ], + "publicDataUpdateRequests": [ + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50897,7 +57759,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -50937,93 +57799,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - ], - "publicCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51063,7 +57882,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51103,91 +57922,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51227,7 +58005,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51267,91 +58045,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51391,7 +58128,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51431,91 +58168,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51555,7 +58251,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51595,91 +58291,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51719,7 +58374,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51759,91 +58414,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51883,7 +58497,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51923,91 +58537,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52047,7 +58620,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52087,91 +58660,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + PublicDataUpdateRequest { + "leafSlot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52211,7 +58743,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52251,10 +58783,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "publicDataReads": [ - PublicDataRead { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { @@ -52295,8 +58826,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52336,9 +58866,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52379,7 +58907,9 @@ KernelCircuitPublicInputs { }, }, "sideEffectCounter": undefined, - "value": Fr { + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52419,9 +58949,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52461,8 +58989,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52502,8 +59029,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - PublicDataRead { + PublicDataUpdateRequest { "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { @@ -52544,8 +59072,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52585,9 +59112,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52628,7 +59153,9 @@ KernelCircuitPublicInputs { }, }, "sideEffectCounter": undefined, - "value": Fr { + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52668,9 +59195,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52710,8 +59235,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52751,8 +59275,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - PublicDataRead { + PublicDataUpdateRequest { "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { @@ -52793,8 +59318,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52834,9 +59358,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52877,7 +59399,9 @@ KernelCircuitPublicInputs { }, }, "sideEffectCounter": undefined, - "value": Fr { + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52917,9 +59441,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52959,8 +59481,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53000,8 +59521,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - PublicDataRead { + PublicDataUpdateRequest { "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { @@ -53042,8 +59564,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53083,9 +59604,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53126,7 +59645,11 @@ KernelCircuitPublicInputs { }, }, "sideEffectCounter": undefined, - "value": Fr { + }, + ], + "readRequests": [ + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53166,9 +59689,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53208,8 +59729,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53249,9 +59771,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53291,8 +59811,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53332,9 +59853,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53374,8 +59893,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53415,9 +59935,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53457,8 +59975,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53498,9 +60017,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53540,8 +60057,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53581,11 +60099,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "publicDataUpdateRequests": [ - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53625,7 +60139,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53665,7 +60181,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53705,10 +60221,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53748,7 +60263,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53788,7 +60303,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53828,10 +60345,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53871,7 +60385,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53911,7 +60427,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53951,10 +60467,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53994,7 +60509,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54034,7 +60549,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54074,10 +60591,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54117,7 +60631,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54157,7 +60673,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54197,10 +60713,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54240,7 +60755,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54280,7 +60795,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54320,10 +60837,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54363,7 +60877,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54403,7 +60919,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54443,10 +60959,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54486,7 +61001,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54526,7 +61041,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54566,10 +61083,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54609,7 +61123,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54649,7 +61165,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54689,10 +61205,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54732,7 +61247,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54772,7 +61287,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54812,10 +61329,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54855,7 +61369,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54895,7 +61411,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54935,10 +61451,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54978,7 +61493,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55018,7 +61533,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55058,10 +61575,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55101,7 +61615,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55141,7 +61657,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55181,10 +61697,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55224,7 +61739,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55264,7 +61779,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55304,10 +61821,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55347,7 +61861,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55387,7 +61903,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55427,10 +61943,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55470,7 +61985,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55510,7 +62025,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55550,5128 +62067,8081 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - ], - "readRequests": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, ], diff --git a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex index aa94d01cee9..8f56fecf236 100644 --- a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex +++ b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025bb4fcc065cde7592683cd08ad7520fd4bd2c8a7d6c45f8669ebae534af17f900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000148ba6131c054214fc5f0a80f3935c19e7b2d33c454768be65aaf3690b785d32176410961fff9aa7f2199074259d844d8d33430da28b366483ca730ac5fa4657000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb2000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c13c21c01f51665e3ed22fa9db8cc843f1f3c99c8b96e571affc0f74dedfb4b0a23fb67aab842103c0064eab8eae7af2cd07ebe238c35ba1bbd87a5179984640c56dff9b4c1677a47dd93d387a2871a4366c13da8b4fc9f85c8ae0c0a35717a1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800927de3195bc16c2e4b9575e0e66e36ae19accc3692ca7b92977c3bec10d6cfa00000000000000000000000000000000000000000000000000000000000000000ccaafdc9c353743970d4e305ae73641ce694f07db67886d2769c9ed88e969d81847e113736dc2241cb71824e9c9f6fd294c3b841ffc744d62bd31e7a0c405350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000000027f7bade13501a6b49961658bf38e9b0359fa8957a3d02e162498cb12fc6eeca0f952401790a7b2caa2a245f0663b57173876d0737255a4329665fe639069a6a2e3578ab81ada96187e62987873863ee79909f55e49ebddb42e2684668b90b7b0cab1a95b4e7352568da9513c6d61f1b5b4ad9c8d270e4aac2b7685ab9fa27460906bca1000100176410961fff9aa7f2199074259d844d8d33430da28b366483ca730ac5fa46570cab1a95b4e7352568da9513c6d61f1b5b4ad9c8d270e4aac2b7685ab9fa274600000000000000000000000000000000000000000000000000000000000000000906bca10000001124bf00bac5cd7fc8570fe0e40c34b8d093801a155d53e0b478d960b3a424810000000000000000000000000000000000000000000000000000000000007a6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000042c13c21c01f51665e3ed22fa9db8cc843f1f3c99c8b96e571affc0f74dedfb4b0a23fb67aab842103c0064eab8eae7af2cd07ebe238c35ba1bbd87a5179984640c56dff9b4c1677a47dd93d387a2871a4366c13da8b4fc9f85c8ae0c0a35717a1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800927de3195bc16c2e4b9575e0e66e36ae19accc3692ca7b92977c3bec10d6cfa00000000000000000000000000000000000000000000000000000000000000000ccaafdc9c353743970d4e305ae73641ce694f07db67886d2769c9ed88e969d81847e113736dc2241cb71824e9c9f6fd294c3b841ffc744d62bd31e7a0c405350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000000000000000000000000000000000000000000000000000000000722a1419dd08e208cd862bb66fb009fa540fb7178d01108f79eb78a891064685603f30687851ce0bc4df8e4fa8a5809643e9ae7f752a3ec1e3c120b251036c92e14ae899cd34041169f2476b70040373713d6eb363e74dca7f7f70f36d286b92f044b59fe1a64065611c9ec171fc760af4337fd13bbb833a9b021cfdde27a7f621a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550207cf0529e39f81dbb6ab5f6a2dce3907f2218c8673874a2bf62f7b3641d7dc006e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa015d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a900c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b022ced19489ab456b8b6c424594cdbbae59c36dfdd4c4621c4032da2d8a9674be51df5a245ffc1da14b46fe56a605f2a47b1cff1592bab4f66cfe5dfe990af6ab52871d090615d14eadb52228c635c90e0adf31176f0814f6525c23e7d7b318c931a2b85ff013d4b2b25074297c7e44aa61f4836d0862b36db2e6ce2b5542f9ea9177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce94300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c1d403f541c3e02d398a00624511712e9df58e0d5657793447a4cc8009192812c1d403f541c3e02d398a00624511712e9df58e0d5657793447a4cc80091928000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cf9ed41136bb778b2901df15f9fc6f8ba8af5d98e5a2987f6ea3543f871b65821c7567771cf00145ab2417a35926ecd141bc7ef996169e668fa25204ea9cfdc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb2000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f698b9b0327624dedfeccc1157e90ef8f1afdb48df0edc88a7eebe6989cbff80396172e4091d25053d94be57ef77ae90c4a6ada847b9e94500bda9730fc0fba1d509db892e1ed7285e25200e2db867550f08c5378dae55c9b9c0bbc053070c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800ee926c1883c295ad082b62585e213517d840eb2d600b946d85e2458696df4d200000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0256baaf04f8525675dcc0918f8a0a40ffd66a999dca04ed44f567a472329c9170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000000005ed8133575bc9acba41c89b1a0a37b03f207d4b8a042b0e85bdb5cc058ff7aa03a47ddb43a8c7fa24b14e91fc67a13cb7d0e42a73da18f5cbdad6312d16bb3f0d3add2818008dab491973a48f624825d113a0f78c44aa7dfc3adb5c2c3d8ef63037eca2ba33389be6422fa2fc15af40ce49d06b021341a21e19034f67c7bf720906bca100010021c7567771cf00145ab2417a35926ecd141bc7ef996169e668fa25204ea9cfdc3037eca2ba33389be6422fa2fc15af40ce49d06b021341a21e19034f67c7bf7200000000000000000000000000000000000000000000000000000000000000000906bca100000000000000000000000000000000000000000000000000000000000000000000001124bf00bac5cd7fc8570fe0e40c34b8d093801a155d53e0b478d960b3a424810000000000000000000000000000000000000000000000000000000000007a6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040f698b9b0327624dedfeccc1157e90ef8f1afdb48df0edc88a7eebe6989cbff80396172e4091d25053d94be57ef77ae90c4a6ada847b9e94500bda9730fc0fba1d509db892e1ed7285e25200e2db867550f08c5378dae55c9b9c0bbc053070c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800ee926c1883c295ad082b62585e213517d840eb2d600b946d85e2458696df4d200000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0256baaf04f8525675dcc0918f8a0a40ffd66a999dca04ed44f567a472329c9170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000000000000000000000000000000000000000000000000000000000722a1419dd08e208cd862bb66fb009fa540fb7178d01108f79eb78a891064685603f30687851ce0bc4df8e4fa8a5809643e9ae7f752a3ec1e3c120b251036c92e14ae899cd34041169f2476b70040373713d6eb363e74dca7f7f70f36d286b92f044b59fe1a64065611c9ec171fc760af4337fd13bbb833a9b021cfdde27a7f621a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550287b0f02c657f859cdfc5c124d306d2ecbf3cb775173f08f0b9f866eb53b8f4b06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa015d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a900c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b022ced19489ab456b8b6c424594cdbbae59c36dfdd4c4621c4032da2d8a9674be51df5a245ffc1da14b46fe56a605f2a47b1cff1592bab4f66cfe5dfe990af6ab52871d090615d14eadb52228c635c90e0adf31176f0814f6525c23e7d7b318c931a2b85ff013d4b2b25074297c7e44aa61f4836d0862b36db2e6ce2b5542f9ea9177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce94300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file From d73ee2735fd4851d125654f1c98be2edbd7a091f Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 15:32:31 +0000 Subject: [PATCH 54/71] test: fix noir tests --- .../src/crates/types/src/interop_testing.nr | 108 +++++++----------- 1 file changed, 42 insertions(+), 66 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr index 164999f86f4..5ba70881c14 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr @@ -14,48 +14,50 @@ use crate::abis::side_effect::SideEffect; #[test] fn compute_complete_address() { - let point = Point{ - x : 1, - y : 2 - }; + let point = Point { x: 1, y: 2 }; let contract_address_salt = 3; let function_tree_root = 4; let constructor_hash = 5; - - let complete_address = CompleteAddress::compute(point, contract_address_salt, function_tree_root, constructor_hash); - - assert(complete_address.partial_address == 0x197673f31940878b2d6c681223dbed9cfacd2f722cbe30155225b2ada17778db); - assert(complete_address.address.to_field() == 0x1a6e89b034478713c7a9f1c77fb80af995f708f6f208bf352b4dda2124739109); + + let complete_address = CompleteAddress::compute( + point, + contract_address_salt, + function_tree_root, + constructor_hash + ); + + assert( + complete_address.partial_address + == 0x197673f31940878b2d6c681223dbed9cfacd2f722cbe30155225b2ada17778db + ); + assert( + complete_address.address.to_field() + == 0x1a6e89b034478713c7a9f1c77fb80af995f708f6f208bf352b4dda2124739109 + ); assert(complete_address.public_key.x == 1); assert(complete_address.public_key.y == 2); } - #[test] fn compute_tx_request_hash() { let tx_request = TxRequest { - origin : AztecAddress::from_field(1), - args_hash : 3, - tx_context : TxContext { - is_fee_payment_tx : false, - is_rebate_payment_tx : false, - is_contract_deployment_tx : true, - contract_deployment_data : ContractDeploymentData{ - deployer_public_key : Point{x : 1, y : 2}, - constructor_vk_hash : 1, - function_tree_root : 2, - contract_address_salt : 3, - portal_contract_address : EthAddress::from_field(1), + origin: AztecAddress::from_field(1), + args_hash: 3, + tx_context: TxContext { + is_fee_payment_tx: false, + is_rebate_payment_tx: false, + is_contract_deployment_tx: true, + contract_deployment_data: ContractDeploymentData { + deployer_public_key: Point { x: 1, y: 2 }, + constructor_vk_hash: 1, + function_tree_root: 2, + contract_address_salt: 3, + portal_contract_address: EthAddress::from_field(1) }, - chain_id : 0, - version : 0, + chain_id: 0, + version: 0 }, - function_data : FunctionData { - selector : FunctionSelector::from_u32(2), - is_internal : false, - is_private : true, - is_constructor : true, - } + function_data: FunctionData { selector: FunctionSelector::from_u32(2), is_internal: false, is_private: true, is_constructor: true } }; assert(tx_request.hash() == 0x0b487ff2900ae1178e131bfe333fdbc351beef658f7c0d62db2801429b1aab75); } @@ -63,8 +65,8 @@ fn compute_tx_request_hash() { #[test] fn compute_l2_l1_hash() { // All zeroes - let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, EthAddress::from_field(0), 0, 0); - assert(hash_result == 0x2266ac2f9f0c19c015239ef5ea85862fc6fac00db73779b220a4d49c4856c2e1); + let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, EthAddress::from_field(0), 0, 0); + assert(hash_result == 0x2266ac2f9f0c19c015239ef5ea85862fc6fac00db73779b220a4d49c4856c2e1); // Non-zero case let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, EthAddress::from_field(3), 4, 5); @@ -84,18 +86,12 @@ fn smoke_sha256_to_field() { 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ]; let result = sha256_to_field(full_buffer); - assert( result == 0x142a6d57007171f6eaa33d55976d9dbe739c889c8e920f115f7808dea184c718); + assert(result == 0x142a6d57007171f6eaa33d55976d9dbe739c889c8e920f115f7808dea184c718); } #[test] fn compute_function_leaf() { - let leaf = FunctionLeafPreimage { - selector: FunctionSelector::from_u32(27), - is_internal: false, - is_private: true, - vk_hash: 1, - acir_hash: 2, - }; + let leaf = FunctionLeafPreimage { selector: FunctionSelector::from_u32(27), is_internal: false, is_private: true, vk_hash: 1, acir_hash: 2 }; assert_eq(leaf.hash(), 0x1ad8ece7f40e63d011ae47c6ce6cdaf31d632a23f5cf35bbeaaf69c8302afdbc); } @@ -103,12 +99,7 @@ fn compute_function_leaf() { #[test] fn compute_call_stack_item_request() { let contract_address = AztecAddress::from_field(1); - let function_data = FunctionData { - selector: FunctionSelector::from_u32(2), - is_internal: false, - is_private: false, - is_constructor: false, - }; + let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_internal: false, is_private: false, is_constructor: false }; let mut public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); public_inputs.new_commitments[0] = SideEffect{ @@ -116,25 +107,15 @@ fn compute_call_stack_item_request() { counter: 0, }; - let call_stack_item = PublicCallStackItem { - contract_address, - public_inputs, - is_execution_request: true, - function_data, - }; + let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data }; - assert_eq(call_stack_item.hash(), 0x1d51d7758d792c9cd6edd8e8ec5f1f9fb1f974abc1af6bb4cf9f2328ef306c96); + assert_eq(call_stack_item.hash(), 0x0edc0b5221e098c129545ba693368cddc0e6950bb11baa4595b310fc1fa24b5f); } #[test] fn compute_call_stack_item() { let contract_address = AztecAddress::from_field(1); - let function_data = FunctionData { - selector: FunctionSelector::from_u32(2), - is_internal: false, - is_private: false, - is_constructor: false, - }; + let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_internal: false, is_private: false, is_constructor: false }; let mut public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); public_inputs.new_commitments[0] = SideEffect{ @@ -142,12 +123,7 @@ fn compute_call_stack_item() { counter: 0, }; - let call_stack_item = PublicCallStackItem { - contract_address, - public_inputs, - is_execution_request: false, - function_data, - }; + let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data }; - assert_eq(call_stack_item.hash(), 0x0a370c67b66e30901470c11a199764a914fc0fcfbc737ed03153079b2765813a); + assert_eq(call_stack_item.hash(), 0x10e265bf51be6945c10e526a86a928810429ac2d34c5fcda469245f0bb56abf6); } From 4ca0a89de217e22f602a9d0580589e37cb855810 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 15:57:55 +0000 Subject: [PATCH 55/71] tests: fix public kernel tests --- .../src/public_kernel_public_previous.nr | 101 ++++++++++-------- .../src/tests/previous_kernel_data_builder.nr | 5 +- 2 files changed, 58 insertions(+), 48 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr index 7d9119c928a..5e5fc3724a1 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/public_kernel_public_previous.nr @@ -5,7 +5,6 @@ use dep::types::abis::kernel_circuit_public_inputs::KernelCircuitPublicInputsBui use crate::common; use dep::std::unsafe; - struct PublicKernelPublicPreviousInputs { previous_kernel: PreviousKernelData, public_call: PublicCallData, @@ -56,7 +55,7 @@ mod tests { compute_public_data_update_requests, }, }; - use dep::types::{ + use dep::types::{ abis::{ kernel_circuit_public_inputs::KernelCircuitPublicInputs, public_data_read::PublicDataRead, @@ -82,7 +81,6 @@ mod tests { MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, }; - struct PublicKernelPublicPreviousInputsBuilder { previous_kernel: PreviousKernelDataBuilder, public_call: PublicCallDataBuilder, @@ -178,24 +176,26 @@ mod tests { builder.previous_kernel.append_new_commitments(2); let previous = builder.previous_kernel.end.new_commitments.storage; // Setup 2 new commitments on the current public inputs. - let current = [SideEffect{ - value: previous[1].value + 1, - counter: 2}, - SideEffect{ - value: previous[1].value + 2, - counter: 3}]; + let current = [ + SideEffect { value: previous[1].value + 1, counter: 3 }, + SideEffect { value: previous[1].value + 2, counter: 4 } + ]; builder.public_call.public_inputs.new_commitments.push_array(current); let siloed = current.map(|c: SideEffect| silo_commitment(contract_address, c.value)); - let new_commitments = [previous[0], previous[1], SideEffect{ - value: siloed[0], - counter: 3, - }, SideEffect{ - value: siloed[1], - counter: 4},]; - + let new_commitments = [ + previous[0], previous[1], SideEffect { value: siloed[0], counter: 3 }, SideEffect { value: siloed[1], counter: 4 } + ]; let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_commitments, new_commitments,|a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_empty())); + + assert( + struct_array_eq( + public_inputs.end.new_commitments, + new_commitments, + |a: SideEffect, b: SideEffect| a.eq(b), + |a: SideEffect| a.is_empty() + ) + ); } #[test] @@ -210,15 +210,16 @@ mod tests { let public_data_update_requests = [previous[0], previous[1], current[0], current[1]]; let public_inputs = builder.execute(); - assert_eq_public_data_update_requests(public_inputs.end.public_data_update_requests, public_data_update_requests); + assert_eq_public_data_update_requests( + public_inputs.end.public_data_update_requests, + public_data_update_requests + ); } - #[test] fn circuit_outputs_should_be_correctly_populated_with_previous_read_requests() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); - let public_inputs = builder.execute(); // Setup 2 data reads on the previous kernel. builder.previous_kernel.append_public_data_read_requests(2); let previous = builder.previous_kernel.end.public_data_reads.storage; @@ -226,8 +227,12 @@ mod tests { builder.public_call.append_read_requests(2); let current = builder.get_current_public_data_reads(); let public_data_read_requests = [previous[0], previous[1], current[0], current[1]]; + let public_inputs = builder.execute(); - assert_eq_public_data_reads(public_inputs.end.public_data_reads, public_data_read_requests); + assert_eq_public_data_reads( + public_inputs.end.public_data_reads, + public_data_read_requests + ); } #[test] @@ -239,24 +244,30 @@ mod tests { builder.previous_kernel.append_new_nullifiers(2); let previous = builder.previous_kernel.end.new_nullifiers.storage; // Setup 2 new commitments on the current public inputs. - let currentVal = [previous[2].value + 1, previous[2].value + 2]; - let siloed = currentVal.map(|c| silo_nullifier(contract_address, c)); - - let current = [SideEffectLinkedToNoteHash { - value: siloed[0], - note_hash: 0, - counter: 3, - }, SideEffectLinkedToNoteHash { - value: siloed[1], - note_hash: 0, - counter: 4}, + + let current = [ + SideEffectLinkedToNoteHash { value: previous[2].value + 1, note_hash: 0, counter: 3 }, SideEffectLinkedToNoteHash { value: previous[2].value + 2, note_hash: 0, counter: 4 } ]; + + let siloed = current.map( + |current: SideEffectLinkedToNoteHash| + SideEffectLinkedToNoteHash { value: silo_nullifier(contract_address, current.value), note_hash: current.note_hash, counter: current.counter } + ); + builder.public_call.public_inputs.new_nullifiers.push_array(current); // There are 3 nullifiers in the previous kernel. The first one is the tx nullifier. - let new_nullifiers = [previous[0], previous[1], previous[2], current[0], current[1]]; + let new_nullifiers = [previous[0], previous[1], previous[2], siloed[0], siloed[1]]; let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_nullifiers, new_nullifiers,|a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_empty())); + + assert( + struct_array_eq( + public_inputs.end.new_nullifiers, + new_nullifiers, + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_empty() + ) + ); } #[test] @@ -296,12 +307,17 @@ mod tests { let prev_unencrypted_logs_hash = [956, 112]; let prev_unencrypted_log_preimages_length = 24; builder.previous_kernel.set_encrypted_logs(prev_encrypted_logs_hash, prev_encrypted_log_preimages_length); - builder.previous_kernel.set_unencrypted_logs(prev_unencrypted_logs_hash, prev_unencrypted_log_preimages_length); + builder.previous_kernel.set_unencrypted_logs( + prev_unencrypted_logs_hash, + prev_unencrypted_log_preimages_length + ); let public_inputs = builder.execute(); assert_eq(public_inputs.end.encrypted_log_preimages_length, prev_encrypted_log_preimages_length); - assert_eq(public_inputs.end.unencrypted_log_preimages_length, unencrypted_log_preimages_length + prev_unencrypted_log_preimages_length); + assert_eq( + public_inputs.end.unencrypted_log_preimages_length, unencrypted_log_preimages_length + prev_unencrypted_log_preimages_length + ); assert_eq(public_inputs.end.encrypted_logs_hash, prev_encrypted_logs_hash); @@ -331,10 +347,7 @@ mod tests { fn public_kernel_fails_creating_new_commitments_on_static_call() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); builder.public_call.public_inputs.call_context.is_static_call = true; - builder.public_call.public_inputs.new_commitments.push(SideEffect { - value: 1, - counter: 0, - }); + builder.public_call.public_inputs.new_commitments.push(SideEffect { value: 1, counter: 0 }); builder.failed(); } @@ -343,12 +356,8 @@ mod tests { fn public_kernel_fails_creating_new_nullifiers_on_static_call() { let mut builder = PublicKernelPublicPreviousInputsBuilder::new(); builder.public_call.public_inputs.call_context.is_static_call = true; - builder.public_call.public_inputs.new_nullifiers.push(SideEffectLinkedToNoteHash{ - value: 1, - note_hash: 0, - counter: 0, - }); + builder.public_call.public_inputs.new_nullifiers.push(SideEffectLinkedToNoteHash { value: 1, note_hash: 0, counter: 0 }); builder.failed(); } -} \ No newline at end of file +} diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr index 810fe87cd5f..72048dad7da 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr @@ -122,7 +122,8 @@ impl PreviousKernelDataBuilder { // The default value is its index + 1. self.end.new_commitments.push(SideEffect{ value: i + mocked_value_offset, - counter: 0}); + counter: i + 1 + }); } } } @@ -136,7 +137,7 @@ impl PreviousKernelDataBuilder { self.end.new_nullifiers.push(SideEffectLinkedToNoteHash{ value: i + mocked_value_offset, note_hash: first_nullifier.note_hash, - counter: 0}); + counter: i + 1}); } } } From 9b5e1eafad28c84b585aa9b674defcf5be1d15c3 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 2 Jan 2024 16:33:15 +0000 Subject: [PATCH 56/71] test: fix noir tests --- .../src/private_kernel_ordering.nr | 106 ++++++++++++++---- .../src/tests/previous_kernel_data_builder.nr | 5 +- 2 files changed, 90 insertions(+), 21 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 3978b7393c0..fecdb9ebc11 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -259,7 +259,13 @@ mod tests { let unique_siloed_commitments = builder.get_unique_siloed_commitments(); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()) == 1); + assert( + struct_array_length( + public_inputs.end.new_commitments, + |r: SideEffect| r.is_empty() + ) + == 1 + ); assert(public_inputs.end.new_commitments[0].eq(unique_siloed_commitments[0])); } @@ -277,8 +283,11 @@ mod tests { let public_inputs = builder.execute(); assert_eq( - struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()), - MAX_NEW_COMMITMENTS_PER_TX); + struct_array_length( + public_inputs.end.new_commitments, + |r: SideEffect| r.is_empty() + ), MAX_NEW_COMMITMENTS_PER_TX + ); for i in 0..MAX_NEW_COMMITMENTS_PER_TX { assert(public_inputs.end.new_commitments[i].eq(unique_siloed_commitments[i])); } @@ -292,10 +301,7 @@ mod tests { builder.add_transient_read(0); // Tweak the read request so that it does not match the commitment at index 0; let read_request = builder.previous_kernel.end.read_requests.pop(); - builder.previous_kernel.end.read_requests.push(SideEffect { - value: read_request.value + 1, - counter: 0, - }); + builder.previous_kernel.end.read_requests.push(SideEffect { value: read_request.value + 1, counter: 0 }); builder.failed(); } @@ -311,11 +317,23 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_empty())); + assert( + is_empty_struct_array( + public_inputs.end.new_commitments, + |c: SideEffect| c.is_empty() + ) + ); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_empty())); + assert( + struct_array_eq( + public_inputs.end.new_nullifiers, + expected_new_nullifiers, + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_empty() + ) + ); } #[test] @@ -333,13 +351,29 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(struct_array_eq(public_inputs.end.new_commitments, [unique_siloed_commitments[0]], |a: SideEffect, b: SideEffect| a.eq(b), |a: SideEffect| a.is_empty() )); + dep::std::println([unique_siloed_commitments[0]]); + dep::std::println(public_inputs.end.new_commitments); + dep::std::println(new_commitments); + + assert( + struct_array_eq( + public_inputs.end.new_commitments, + [unique_siloed_commitments[0]], + |a: SideEffect, b: SideEffect| a.eq(b), + |a: SideEffect| a.is_empty() + ) + ); // The nullifier at index 1 is chopped. let expected_new_nullifiers = [new_nullifiers[0], new_nullifiers[2]]; - assert(struct_array_eq(public_inputs.end.new_nullifiers, expected_new_nullifiers, - |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), - |a: SideEffectLinkedToNoteHash| a.is_empty())); + assert( + struct_array_eq( + public_inputs.end.new_nullifiers, + expected_new_nullifiers, + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_empty() + ) + ); } #[test] @@ -356,8 +390,20 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - assert(is_empty_struct_array(public_inputs.end.new_commitments, |c: SideEffect| c.is_empty())); - assert(struct_array_eq(public_inputs.end.new_nullifiers, [new_nullifiers[0]], |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), |a: SideEffectLinkedToNoteHash| a.is_empty())); + assert( + is_empty_struct_array( + public_inputs.end.new_commitments, + |c: SideEffect| c.is_empty() + ) + ); + assert( + struct_array_eq( + public_inputs.end.new_nullifiers, + [new_nullifiers[0]], + |a: SideEffectLinkedToNoteHash, b: SideEffectLinkedToNoteHash| a.eq(b), + |a: SideEffectLinkedToNoteHash| a.is_empty() + ) + ); } #[test] @@ -368,8 +414,18 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert_eq(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()), 2); - assert_eq(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_empty()), 3); + assert_eq( + struct_array_length( + public_inputs.end.new_commitments, + |r: SideEffect| r.is_empty() + ), 2 + ); + assert_eq( + struct_array_length( + public_inputs.end.new_nullifiers, + |r: SideEffectLinkedToNoteHash| r.is_empty() + ), 3 + ); } // same as previous test, but this time there are 0 commitments! @@ -381,8 +437,20 @@ mod tests { builder.append_nullifiers(2); let public_inputs = builder.execute(); - assert(struct_array_length(public_inputs.end.new_commitments, |r: SideEffect| r.is_empty()) == 0); - assert(struct_array_length(public_inputs.end.new_nullifiers, |r: SideEffectLinkedToNoteHash| r.is_empty()) == 3); + assert( + struct_array_length( + public_inputs.end.new_commitments, + |r: SideEffect| r.is_empty() + ) + == 0 + ); + assert( + struct_array_length( + public_inputs.end.new_nullifiers, + |r: SideEffectLinkedToNoteHash| r.is_empty() + ) + == 3 + ); } #[test(should_fail_with="New nullifier is transient but hint is invalid")] diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr index 72048dad7da..0efb3f14661 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr @@ -122,7 +122,7 @@ impl PreviousKernelDataBuilder { // The default value is its index + 1. self.end.new_commitments.push(SideEffect{ value: i + mocked_value_offset, - counter: i + 1 + counter: 0 }); } } @@ -137,7 +137,8 @@ impl PreviousKernelDataBuilder { self.end.new_nullifiers.push(SideEffectLinkedToNoteHash{ value: i + mocked_value_offset, note_hash: first_nullifier.note_hash, - counter: i + 1}); + counter: 0 + }); } } } From 95103d2a08cab4ba72422c6a78589d5dde3f2041 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 2 Jan 2024 13:27:37 -0500 Subject: [PATCH 57/71] revert clang formatting --- barretenberg/cpp/.clang-format | 4 +- .../cpp/src/barretenberg/bb/file_io.hpp | 12 +- .../cpp/src/barretenberg/bb/get_bn254_crs.cpp | 15 +-- .../src/barretenberg/bb/get_grumpkin_crs.cpp | 15 +-- barretenberg/cpp/src/barretenberg/bb/main.cpp | 106 +++++----------- .../dsl/acir_format/acir_format.cpp | 109 ++++++---------- .../dsl/acir_format/recursion_constraint.cpp | 118 ++++++------------ .../dsl/acir_format/recursion_constraint.hpp | 9 +- .../acir_format/recursion_constraint.test.cpp | 51 +++----- .../ecc/fields/field2_declarations.hpp | 24 ++-- .../cpp/src/barretenberg/srs/c_bind.cpp | 3 +- 11 files changed, 147 insertions(+), 319 deletions(-) diff --git a/barretenberg/cpp/.clang-format b/barretenberg/cpp/.clang-format index 834e9c69002..14a6b3bac23 100644 --- a/barretenberg/cpp/.clang-format +++ b/barretenberg/cpp/.clang-format @@ -1,10 +1,8 @@ PointerAlignment: Left ColumnLimit: 120 -BreakBeforeBraces: Allman IndentWidth: 4 BinPackArguments: false BinPackParameters: false -AllowShortFunctionsOnASingleLine: None Cpp11BracedListStyle: false AlwaysBreakAfterReturnType: None AlwaysBreakAfterDefinitionReturnType: None @@ -25,4 +23,4 @@ BraceWrapping: SplitEmptyRecord: false SplitEmptyNamespace: false AllowShortFunctionsOnASingleLine : Inline -SortIncludes: true \ No newline at end of file +SortIncludes: true diff --git a/barretenberg/cpp/src/barretenberg/bb/file_io.hpp b/barretenberg/cpp/src/barretenberg/bb/file_io.hpp index ae1f86c4a5e..f91bb7712bc 100644 --- a/barretenberg/cpp/src/barretenberg/bb/file_io.hpp +++ b/barretenberg/cpp/src/barretenberg/bb/file_io.hpp @@ -9,8 +9,7 @@ inline size_t get_file_size(std::string const& filename) { // Open the file in binary mode and move to the end. std::ifstream file(filename, std::ios::binary | std::ios::ate); - if (!file) - { + if (!file) { return 0; } @@ -22,16 +21,14 @@ inline std::vector read_file(const std::string& filename, size_t bytes { // Get the file size. auto size = get_file_size(filename); - if (size <= 0) - { + if (size <= 0) { throw std::runtime_error("File is empty or there's an error reading it: " + filename); } auto to_read = bytes == 0 ? size : bytes; std::ifstream file(filename, std::ios::binary); - if (!file) - { + if (!file) { throw std::runtime_error("Unable to open file: " + filename); } @@ -47,8 +44,7 @@ inline std::vector read_file(const std::string& filename, size_t bytes inline void write_file(const std::string& filename, std::vector const& data) { std::ofstream file(filename, std::ios::binary); - if (!file) - { + if (!file) { throw std::runtime_error("Failed to open data file for writing"); } file.write((char*)data.data(), (std::streamsize)data.size()); diff --git a/barretenberg/cpp/src/barretenberg/bb/get_bn254_crs.cpp b/barretenberg/cpp/src/barretenberg/bb/get_bn254_crs.cpp index 2e6a3fce010..5f181f117ac 100644 --- a/barretenberg/cpp/src/barretenberg/bb/get_bn254_crs.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/get_bn254_crs.cpp @@ -11,8 +11,7 @@ std::vector download_bn254_g1_data(size_t num_points) auto data = exec_pipe(command); // Header + num_points * sizeof point. - if (data.size() < g1_end) - { + if (data.size() < g1_end) { throw std::runtime_error("Failed to download g1 data."); } @@ -33,13 +32,11 @@ std::vector get_bn254_g1_data(const std::files auto g1_path = path / "bn254_g1.dat"; size_t g1_file_size = get_file_size(g1_path); - if (g1_file_size >= num_points * 64 && g1_file_size % 64 == 0) - { + if (g1_file_size >= num_points * 64 && g1_file_size % 64 == 0) { vinfo("using cached crs of size ", std::to_string(g1_file_size / 64), " at ", g1_path); auto data = read_file(g1_path, g1_file_size); auto points = std::vector(num_points); - for (size_t i = 0; i < num_points; ++i) - { + for (size_t i = 0; i < num_points; ++i) { points[i] = from_buffer(data, i * 64); } return points; @@ -50,8 +47,7 @@ std::vector get_bn254_g1_data(const std::files write_file(g1_path, data); auto points = std::vector(num_points); - for (size_t i = 0; i < num_points; ++i) - { + for (size_t i = 0; i < num_points; ++i) { points[i] = from_buffer(data, i * 64); } return points; @@ -64,8 +60,7 @@ barretenberg::g2::affine_element get_bn254_g2_data(const std::filesystem::path& auto g2_path = path / "bn254_g2.dat"; size_t g2_file_size = get_file_size(g2_path); - if (g2_file_size == 128) - { + if (g2_file_size == 128) { auto data = read_file(g2_path); return from_buffer(data.data()); } diff --git a/barretenberg/cpp/src/barretenberg/bb/get_grumpkin_crs.cpp b/barretenberg/cpp/src/barretenberg/bb/get_grumpkin_crs.cpp index faca0596414..2d3394a498d 100644 --- a/barretenberg/cpp/src/barretenberg/bb/get_grumpkin_crs.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/get_grumpkin_crs.cpp @@ -2,8 +2,7 @@ // Gets the transcript URL from the BARRETENBERG_GRUMPKIN_TRANSCRIPT_URL environment variable, if set. // Otherwise returns the default URL. -namespace -{ +namespace { std::string get_grumpkin_transcript_url() { const char* ENV_VAR_NAME = "BARRETENBERG_GRUMPKIN_TRANSCRIPT_URL"; @@ -29,8 +28,7 @@ std::vector download_grumpkin_g1_data(size_t num_points) auto data = exec_pipe(command); // Header + num_points * sizeof point. - if (data.size() < g1_end - g1_start) - { + if (data.size() < g1_end - g1_start) { throw std::runtime_error("Failed to download grumpkin g1 data."); } @@ -42,13 +40,11 @@ std::vector get_grumpkin_g1_data(const std::file std::filesystem::create_directories(path); std::ifstream size_file(path / "grumpkin_size"); size_t size = 0; - if (size_file) - { + if (size_file) { size_file >> size; size_file.close(); } - if (size >= num_points) - { + if (size >= num_points) { auto file = path / "grumpkin_g1.dat"; vinfo("using cached crs at: ", file); auto data = read_file(file, 28 + num_points * 64); @@ -64,8 +60,7 @@ std::vector get_grumpkin_g1_data(const std::file write_file(path / "grumpkin_g1.dat", data); std::ofstream new_size_file(path / "grumpkin_size"); - if (!new_size_file) - { + if (!new_size_file) { throw std::runtime_error("Failed to open size file for writing"); } new_size_file << num_points; diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 599079d5cae..ba0e3ad543b 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -187,13 +187,10 @@ void prove(const std::string& bytecodePath, auto acir_composer = init(constraint_system); auto proof = acir_composer.create_proof(constraint_system, witness, recursive); - if (outputPath == "-") - { + if (outputPath == "-") { writeRawBytesToStdout(proof); vinfo("proof written to stdout"); - } - else - { + } else { write_file(outputPath, proof); vinfo("proof written to: ", outputPath); } @@ -261,13 +258,10 @@ void write_vk(const std::string& bytecodePath, const std::string& outputPath) acir_composer.init_proving_key(constraint_system); auto vk = acir_composer.init_verification_key(); auto serialized_vk = to_buffer(*vk); - if (outputPath == "-") - { + if (outputPath == "-") { writeRawBytesToStdout(serialized_vk); vinfo("vk written to stdout"); - } - else - { + } else { write_file(outputPath, serialized_vk); vinfo("vk written to: ", outputPath); } @@ -280,13 +274,10 @@ void write_pk(const std::string& bytecodePath, const std::string& outputPath) auto pk = acir_composer.init_proving_key(constraint_system); auto serialized_pk = to_buffer(*pk); - if (outputPath == "-") - { + if (outputPath == "-") { writeRawBytesToStdout(serialized_pk); vinfo("pk written to stdout"); - } - else - { + } else { write_file(outputPath, serialized_pk); vinfo("pk written to: ", outputPath); } @@ -312,13 +303,10 @@ void contract(const std::string& output_path, const std::string& vk_path) acir_composer.load_verification_key(std::move(vk_data)); auto contract = acir_composer.get_solidity_verifier(); - if (output_path == "-") - { + if (output_path == "-") { writeStringToStdout(contract); vinfo("contract written to stdout"); - } - else - { + } else { write_file(output_path, { contract.begin(), contract.end() }); vinfo("contract written to: ", output_path); } @@ -356,13 +344,10 @@ void proof_as_fields(const std::string& proof_path, std::string const& vk_path, auto data = acir_composer.serialize_proof_into_fields(read_file(proof_path), vk_data.num_public_inputs); auto json = format("[", join(map(data, [](auto fr) { return format("\"", fr, "\""); })), "]"); - if (output_path == "-") - { + if (output_path == "-") { writeStringToStdout(json); vinfo("proof as fields written to stdout"); - } - else - { + } else { write_file(output_path, { json.begin(), json.end() }); vinfo("proof as fields written to: ", output_path); } @@ -392,13 +377,10 @@ void vk_as_fields(const std::string& vk_path, const std::string& output_path) std::rotate(data.begin(), data.end() - 1, data.end()); auto json = format("[", join(map(data, [](auto fr) { return format("\"", fr, "\""); })), "]"); - if (output_path == "-") - { + if (output_path == "-") { writeStringToStdout(json); vinfo("vk as fields written to stdout"); - } - else - { + } else { write_file(output_path, { json.begin(), json.end() }); vinfo("vk as fields written to: ", output_path); } @@ -428,13 +410,10 @@ void acvm_info(const std::string& output_path) size_t length = strlen(jsonData); std::vector data(jsonData, jsonData + length); - if (output_path == "-") - { + if (output_path == "-") { writeRawBytesToStdout(data); vinfo("info written to stdout"); - } - else - { + } else { write_file(output_path, data); vinfo("info written to: ", output_path); } @@ -453,13 +432,11 @@ std::string get_option(std::vector& args, const std::string& option int main(int argc, char* argv[]) { - try - { + try { std::vector args(argv + 1, argv + argc); verbose = flag_present(args, "-v") || flag_present(args, "--verbose"); - if (args.empty()) - { + if (args.empty()) { std::cerr << "No command provided.\n"; return 1; } @@ -475,71 +452,48 @@ int main(int argc, char* argv[]) bool recursive = flag_present(args, "-r") || flag_present(args, "--recursive"); // Skip CRS initialization for any command which doesn't require the CRS. - if (command == "--version") - { + if (command == "--version") { writeStringToStdout(BB_VERSION); return 0; } - if (command == "info") - { + if (command == "info") { std::string output_path = get_option(args, "-o", "info.json"); acvm_info(output_path); return 0; } - if (command == "prove_and_verify") - { + if (command == "prove_and_verify") { return proveAndVerify(bytecode_path, witness_path, recursive) ? 0 : 1; } - if (command == "prove_and_verify_goblin") - { + if (command == "prove_and_verify_goblin") { return proveAndVerifyGoblin(bytecode_path, witness_path, recursive) ? 0 : 1; } - if (command == "prove") - { + if (command == "prove") { std::string output_path = get_option(args, "-o", "./proofs/proof"); prove(bytecode_path, witness_path, recursive, output_path); - } - else if (command == "gates") - { + } else if (command == "gates") { gateCount(bytecode_path); - } - else if (command == "verify") - { + } else if (command == "verify") { return verify(proof_path, recursive, vk_path) ? 0 : 1; - } - else if (command == "contract") - { + } else if (command == "contract") { std::string output_path = get_option(args, "-o", "./target/contract.sol"); contract(output_path, vk_path); - } - else if (command == "write_vk") - { + } else if (command == "write_vk") { std::string output_path = get_option(args, "-o", "./target/vk"); write_vk(bytecode_path, output_path); - } - else if (command == "write_pk") - { + } else if (command == "write_pk") { std::string output_path = get_option(args, "-o", "./target/pk"); write_pk(bytecode_path, output_path); - } - else if (command == "proof_as_fields") - { + } else if (command == "proof_as_fields") { std::string output_path = get_option(args, "-o", proof_path + "_fields.json"); proof_as_fields(proof_path, vk_path, output_path); - } - else if (command == "vk_as_fields") - { + } else if (command == "vk_as_fields") { std::string output_path = get_option(args, "-o", vk_path + "_fields.json"); vk_as_fields(vk_path, output_path); - } - else - { + } else { std::cerr << "Unknown command: " << command << "\n"; return 1; } - } - catch (std::runtime_error const& err) - { + } catch (std::runtime_error const& err) { std::cerr << err.what() << std::endl; return 1; } diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp index c5876f7d8a9..b36ba94d33e 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp @@ -5,8 +5,7 @@ #include "barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp" #include -namespace acir_format -{ +namespace acir_format { /** * @brief Populate variables and public_inputs in builder given witness and constraint_system @@ -27,22 +26,17 @@ void populate_variables_and_public_inputs(Builder& builder, // variable in noir. This entire block can be removed once the +1 is removed from noir. const uint32_t pre_applied_noir_offset = 1; std::vector corrected_public_inputs; - for (const auto& index : constraint_system.public_inputs) - { + for (const auto& index : constraint_system.public_inputs) { corrected_public_inputs.emplace_back(index - pre_applied_noir_offset); } - for (size_t idx = 0; idx < constraint_system.varnum; ++idx) - { + for (size_t idx = 0; idx < constraint_system.varnum; ++idx) { // TODO(https://github.com/AztecProtocol/barretenberg/issues/815) why is this needed? fr value = idx < witness.size() ? witness[idx] : 0; if (std::find(corrected_public_inputs.begin(), corrected_public_inputs.end(), idx) != - corrected_public_inputs.end()) - { + corrected_public_inputs.end()) { builder.add_public_variable(value); - } - else - { + } else { builder.add_variable(value); } } @@ -52,8 +46,7 @@ template void read_witness(Builder& builder, WitnessVector co { builder.variables[0] = 0; // TODO(https://github.com/AztecProtocol/barretenberg/issues/816): This the constant 0 hacked in. Bad. - for (size_t i = 0; i < witness.size(); ++i) - { + for (size_t i = 0; i < witness.size(); ++i) { // TODO(https://github.com/AztecProtocol/barretenberg/issues/816): The i+1 accounts for the fact that 0 is added // as a constant in variables in the UCB constructor. "witness" only contains the values that came directly from // acir. @@ -68,18 +61,15 @@ template void read_witness(Builder& builder, WitnessVector co template void add_public_vars(Builder& builder, acir_format const& constraint_system) { // TODO(https://github.com/AztecProtocol/barretenberg/issues/816): i = 1 acounting for const 0 in first position? - for (size_t i = 1; i < constraint_system.varnum; ++i) - { + for (size_t i = 1; i < constraint_system.varnum; ++i) { // If the index is in the public inputs vector, then we add it as a public input if (std::find(constraint_system.public_inputs.begin(), constraint_system.public_inputs.end(), i) != - constraint_system.public_inputs.end()) - { + constraint_system.public_inputs.end()) { builder.add_public_variable(0); - } - else - { + + } else { builder.add_variable(0); } } @@ -89,101 +79,83 @@ template void build_constraints(Builder& builder, acir_format const& constraint_system, bool has_valid_witness_assignments) { // Add arithmetic gates - for (const auto& constraint : constraint_system.constraints) - { + for (const auto& constraint : constraint_system.constraints) { builder.create_poly_gate(constraint); } // Add logic constraint - for (const auto& constraint : constraint_system.logic_constraints) - { + for (const auto& constraint : constraint_system.logic_constraints) { create_logic_gate( builder, constraint.a, constraint.b, constraint.result, constraint.num_bits, constraint.is_xor_gate); } // Add range constraint - for (const auto& constraint : constraint_system.range_constraints) - { + for (const auto& constraint : constraint_system.range_constraints) { builder.create_range_constraint(constraint.witness, constraint.num_bits, ""); } // Add sha256 constraints - for (const auto& constraint : constraint_system.sha256_constraints) - { + for (const auto& constraint : constraint_system.sha256_constraints) { create_sha256_constraints(builder, constraint); } // Add schnorr constraints - for (const auto& constraint : constraint_system.schnorr_constraints) - { + for (const auto& constraint : constraint_system.schnorr_constraints) { create_schnorr_verify_constraints(builder, constraint); } // Add ECDSA k1 constraints - for (const auto& constraint : constraint_system.ecdsa_k1_constraints) - { + for (const auto& constraint : constraint_system.ecdsa_k1_constraints) { create_ecdsa_k1_verify_constraints(builder, constraint, has_valid_witness_assignments); } // Add ECDSA r1 constraints - for (const auto& constraint : constraint_system.ecdsa_r1_constraints) - { + for (const auto& constraint : constraint_system.ecdsa_r1_constraints) { create_ecdsa_r1_verify_constraints(builder, constraint, has_valid_witness_assignments); } // Add blake2s constraints - for (const auto& constraint : constraint_system.blake2s_constraints) - { + for (const auto& constraint : constraint_system.blake2s_constraints) { create_blake2s_constraints(builder, constraint); } // Add keccak constraints - for (const auto& constraint : constraint_system.keccak_constraints) - { + for (const auto& constraint : constraint_system.keccak_constraints) { create_keccak_constraints(builder, constraint); } - for (const auto& constraint : constraint_system.keccak_var_constraints) - { + for (const auto& constraint : constraint_system.keccak_var_constraints) { create_keccak_var_constraints(builder, constraint); } // Add pedersen constraints - for (const auto& constraint : constraint_system.pedersen_constraints) - { + for (const auto& constraint : constraint_system.pedersen_constraints) { create_pedersen_constraint(builder, constraint); } - for (const auto& constraint : constraint_system.pedersen_hash_constraints) - { + for (const auto& constraint : constraint_system.pedersen_hash_constraints) { create_pedersen_hash_constraint(builder, constraint); } // Add fixed base scalar mul constraints - for (const auto& constraint : constraint_system.fixed_base_scalar_mul_constraints) - { + for (const auto& constraint : constraint_system.fixed_base_scalar_mul_constraints) { create_fixed_base_constraint(builder, constraint); } // Add hash to field constraints - for (const auto& constraint : constraint_system.hash_to_field_constraints) - { + for (const auto& constraint : constraint_system.hash_to_field_constraints) { create_hash_to_field_constraints(builder, constraint); } // Add block constraints - for (const auto& constraint : constraint_system.block_constraints) - { + for (const auto& constraint : constraint_system.block_constraints) { create_block_constraints(builder, constraint, has_valid_witness_assignments); } // TODO(https://github.com/AztecProtocol/barretenberg/issues/817): disable these for UGH for now since we're not yet // dealing with proper recursion - if constexpr (IsGoblinBuilder) - { + if constexpr (IsGoblinBuilder) { info("WARNING: this circuit contains recursion_constraints!"); - } - else - { + } else { // These are set and modified whenever we encounter a recursion opcode // // These should not be set by the caller @@ -204,8 +176,7 @@ void build_constraints(Builder& builder, acir_format const& constraint_system, b auto proof_size_no_pub_inputs = recursion_proof_size_without_public_inputs(); // Add recursion constraints - for (auto constraint : constraint_system.recursion_constraints) - { + for (auto constraint : constraint_system.recursion_constraints) { // A proof passed into the constraint should be stripped of its public inputs, except in the case where a // proof contains an aggregation object itself. We refer to this as the `nested_aggregation_object`. The // verifier circuit requires that the indices to a nested proof aggregation state are a circuit constant. @@ -214,13 +185,11 @@ void build_constraints(Builder& builder, acir_format const& constraint_system, b // proof is above the expected size (with public inputs stripped) std::array nested_aggregation_object = {}; // If the proof has public inputs attached to it, we should handle setting the nested aggregation object - if (constraint.proof.size() > proof_size_no_pub_inputs) - { + if (constraint.proof.size() > proof_size_no_pub_inputs) { // The public inputs attached to a proof should match the aggregation object in size ASSERT(constraint.proof.size() - proof_size_no_pub_inputs == RecursionConstraint::AGGREGATION_OBJECT_SIZE); - for (size_t i = 0; i < RecursionConstraint::AGGREGATION_OBJECT_SIZE; ++i) - { + for (size_t i = 0; i < RecursionConstraint::AGGREGATION_OBJECT_SIZE; ++i) { // Set the nested aggregation object indices to the current size of the public inputs // This way we know that the nested aggregation object indices will always be the last // indices of the public inputs @@ -246,14 +215,12 @@ void build_constraints(Builder& builder, acir_format const& constraint_system, b // Now that the circuit has been completely built, we add the output aggregation as public // inputs. - if (!constraint_system.recursion_constraints.empty()) - { + if (!constraint_system.recursion_constraints.empty()) { // First add the output aggregation object as public inputs // Set the indices as public inputs because they are no longer being // created in ACIR - for (const auto& idx : current_output_aggregation_object) - { + for (const auto& idx : current_output_aggregation_object) { builder.set_public_input(idx); } @@ -268,8 +235,7 @@ void build_constraints(Builder& builder, acir_format const& constraint_system, b template void create_circuit(Builder& builder, acir_format const& constraint_system) { - if (constraint_system.public_inputs.size() > constraint_system.varnum) - { + if (constraint_system.public_inputs.size() > constraint_system.varnum) { info("create_circuit: too many public inputs!"); } @@ -296,8 +262,7 @@ Builder create_circuit_with_witness(acir_format const& constraint_system, template void create_circuit_with_witness(Builder& builder, acir_format const& constraint_system, WitnessVector const& witness) { - if (constraint_system.public_inputs.size() > constraint_system.varnum) - { + if (constraint_system.public_inputs.size() > constraint_system.varnum) { info("create_circuit_with_witness: too many public inputs!"); } @@ -330,10 +295,8 @@ template void apply_wire_index_offset(Builder& builder) // Apply the offset to the indices stored the wires that were generated from acir. (Do not apply the offset to // those values that were added in the builder constructor). size_t start_index = builder.num_vars_added_in_constructor; - for (auto& wire : builder.wires) - { - for (size_t idx = start_index; idx < wire.size(); ++idx) - { + for (auto& wire : builder.wires) { + for (size_t idx = start_index; idx < wire.size(); ++idx) { wire[idx] += offset; } } diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp index 5fb34c63201..813f2022745 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp @@ -5,8 +5,7 @@ #include "barretenberg/stdlib/recursion/verifier/verifier.hpp" #include -namespace acir_format -{ +namespace acir_format { using namespace proof_system::plonk; @@ -39,8 +38,7 @@ std::array create_recurs { const auto& nested_aggregation_indices = nested_aggregation_object; bool nested_aggregation_indices_all_zero = true; - for (const auto& idx : nested_aggregation_indices) - { + for (const auto& idx : nested_aggregation_indices) { nested_aggregation_indices_all_zero &= (idx == 0); } const bool inner_proof_contains_recursive_proof = !nested_aggregation_indices_all_zero; @@ -58,8 +56,7 @@ std::array create_recurs // Remove the public inputs from the dummy proof dummy_proof.erase(dummy_proof.begin(), dummy_proof.begin() + static_cast(input.public_inputs.size())); - for (size_t i = 0; i < input.proof.size(); ++i) - { + for (size_t i = 0; i < input.proof.size(); ++i) { const auto proof_field_idx = input.proof[i]; // if we do NOT have a witness assignment (i.e. are just building the proving/verification keys), // we add our dummy proof values as Builder variables. @@ -73,8 +70,7 @@ std::array create_recurs // will not trigger basic errors (check inputs are on-curve, check we are not inverting 0) builder.assert_equal(builder.add_variable(dummy_field), proof_field_idx); } - for (size_t i = 0; i < input.key.size(); ++i) - { + for (size_t i = 0; i < input.key.size(); ++i) { const auto key_field_idx = input.key[i]; barretenberg::fr dummy_field = has_valid_witness_assignments ? builder.get_variable(key_field_idx) : dummy_key[i]; @@ -91,16 +87,13 @@ std::array create_recurs // If we have previously recursively verified proofs, `is_aggregation_object_nonzero = true` // For now this is a complile-time constant i.e. whether this is true/false is fixed for the circuit! bool inner_aggregation_indices_all_zero = true; - for (const auto& idx : aggregation_input) - { + for (const auto& idx : aggregation_input) { inner_aggregation_indices_all_zero &= (idx == 0); } - if (!inner_aggregation_indices_all_zero) - { + if (!inner_aggregation_indices_all_zero) { std::array aggregation_elements; - for (size_t i = 0; i < 4; ++i) - { + for (size_t i = 0; i < 4; ++i) { aggregation_elements[i] = bn254::BaseField(field_ct::from_witness_index(&builder, aggregation_input[4 * i]), field_ct::from_witness_index(&builder, aggregation_input[4 * i + 1]), @@ -113,9 +106,7 @@ std::array create_recurs previous_aggregation.P0 = bn254::Group(aggregation_elements[0], aggregation_elements[1]); previous_aggregation.P1 = bn254::Group(aggregation_elements[2], aggregation_elements[3]); previous_aggregation.has_data = true; - } - else - { + } else { previous_aggregation.has_data = false; } @@ -123,8 +114,7 @@ std::array create_recurs std::vector key_fields; key_fields.reserve(input.key.size()); - for (const auto& idx : input.key) - { + for (const auto& idx : input.key) { auto field = field_ct::from_witness_index(&builder, idx); key_fields.emplace_back(field); } @@ -133,13 +123,11 @@ std::array create_recurs // Prepend the public inputs to the proof fields because this is how the // core barretenberg library processes proofs (with the public inputs first and not separated) proof_fields.reserve(input.proof.size() + input.public_inputs.size()); - for (const auto& idx : input.public_inputs) - { + for (const auto& idx : input.public_inputs) { auto field = field_ct::from_witness_index(&builder, idx); proof_fields.emplace_back(field); } - for (const auto& idx : input.proof) - { + for (const auto& idx : input.proof) { auto field = field_ct::from_witness_index(&builder, idx); proof_fields.emplace_back(field); } @@ -159,8 +147,7 @@ std::array create_recurs ASSERT(result.public_inputs.size() == input.public_inputs.size()); // Assign the `public_input` field to the public input of the inner proof - for (size_t i = 0; i < input.public_inputs.size(); ++i) - { + for (size_t i = 0; i < input.public_inputs.size(); ++i) { result.public_inputs[i].assert_equal(field_ct::from_witness_index(&builder, input.public_inputs[i])); } @@ -190,22 +177,16 @@ std::vector export_key_in_recursion_format(std::shared_ptrcircuit_size); output.emplace_back(vkey->num_public_inputs); output.emplace_back(vkey->contains_recursive_proof); - for (size_t i = 0; i < RecursionConstraint::AGGREGATION_OBJECT_SIZE; ++i) - { - if (vkey->recursive_proof_public_input_indices.size() > i) - { + for (size_t i = 0; i < RecursionConstraint::AGGREGATION_OBJECT_SIZE; ++i) { + if (vkey->recursive_proof_public_input_indices.size() > i) { output.emplace_back(vkey->recursive_proof_public_input_indices[i]); - } - else - { + } else { output.emplace_back(0); ASSERT(vkey->contains_recursive_proof == false); } } - for (const auto& descriptor : vkey->polynomial_manifest.get()) - { - if (descriptor.source == PolynomialSource::SELECTOR || descriptor.source == PolynomialSource::PERMUTATION) - { + for (const auto& descriptor : vkey->polynomial_manifest.get()) { + if (descriptor.source == PolynomialSource::SELECTOR || descriptor.source == PolynomialSource::PERMUTATION) { const auto element = vkey->commitments.at(std::string(descriptor.commitment_label)); auto g1_as_fields = export_g1_affine_element_as_fields(element); output.emplace_back(g1_as_fields.x_lo); @@ -249,15 +230,12 @@ std::vector export_dummy_key_in_recursion_format(const Polynom output.emplace_back(1); // num public inputs output.emplace_back(contains_recursive_proof); // contains_recursive_proof - for (size_t i = 0; i < RecursionConstraint::AGGREGATION_OBJECT_SIZE; ++i) - { + for (size_t i = 0; i < RecursionConstraint::AGGREGATION_OBJECT_SIZE; ++i) { output.emplace_back(0); // recursive_proof_public_input_indices } - for (const auto& descriptor : polynomial_manifest.get()) - { - if (descriptor.source == PolynomialSource::SELECTOR || descriptor.source == PolynomialSource::PERMUTATION) - { + for (const auto& descriptor : polynomial_manifest.get()) { + if (descriptor.source == PolynomialSource::SELECTOR || descriptor.source == PolynomialSource::PERMUTATION) { // the std::biggroup class creates unsatisfiable constraints when identical points are added/subtracted. // (when verifying zk proofs this is acceptable as we make sure verification key points are not identical. // And prover points should contain randomness for an honest Prover). @@ -289,31 +267,22 @@ std::vector export_transcript_in_recursion_format(const transc { std::vector fields; const auto num_rounds = transcript.get_manifest().get_num_rounds(); - for (size_t i = 0; i < num_rounds; ++i) - { - for (const auto& manifest_element : transcript.get_manifest().get_round_manifest(i).elements) - { - if (!manifest_element.derived_by_verifier) - { - if (manifest_element.num_bytes == 32 && manifest_element.name != "public_inputs") - { + for (size_t i = 0; i < num_rounds; ++i) { + for (const auto& manifest_element : transcript.get_manifest().get_round_manifest(i).elements) { + if (!manifest_element.derived_by_verifier) { + if (manifest_element.num_bytes == 32 && manifest_element.name != "public_inputs") { fields.emplace_back(transcript.get_field_element(manifest_element.name)); - } - else if (manifest_element.num_bytes == 64 && manifest_element.name != "public_inputs") - { + } else if (manifest_element.num_bytes == 64 && manifest_element.name != "public_inputs") { const auto group_element = transcript.get_group_element(manifest_element.name); auto g1_as_fields = export_g1_affine_element_as_fields(group_element); fields.emplace_back(g1_as_fields.x_lo); fields.emplace_back(g1_as_fields.x_hi); fields.emplace_back(g1_as_fields.y_lo); fields.emplace_back(g1_as_fields.y_hi); - } - else - { + } else { ASSERT(manifest_element.name == "public_inputs"); const auto public_inputs_vector = transcript.get_field_element_vector(manifest_element.name); - for (const auto& ele : public_inputs_vector) - { + for (const auto& ele : public_inputs_vector) { fields.emplace_back(ele); } } @@ -335,19 +304,13 @@ std::vector export_dummy_transcript_in_recursion_format(const { std::vector fields; const auto num_rounds = manifest.get_num_rounds(); - for (size_t i = 0; i < num_rounds; ++i) - { - for (const auto& manifest_element : manifest.get_round_manifest(i).elements) - { - if (!manifest_element.derived_by_verifier) - { - if (manifest_element.num_bytes == 32 && manifest_element.name != "public_inputs") - { + for (size_t i = 0; i < num_rounds; ++i) { + for (const auto& manifest_element : manifest.get_round_manifest(i).elements) { + if (!manifest_element.derived_by_verifier) { + if (manifest_element.num_bytes == 32 && manifest_element.name != "public_inputs") { // auto scalar = barretenberg::fr::random_element(); fields.emplace_back(0); - } - else if (manifest_element.num_bytes == 64 && manifest_element.name != "public_inputs") - { + } else if (manifest_element.num_bytes == 64 && manifest_element.name != "public_inputs") { // the std::biggroup class creates unsatisfiable constraints when identical points are // added/subtracted. // (when verifying zk proofs this is acceptable as we make sure verification key points are not @@ -361,19 +324,15 @@ std::vector export_dummy_transcript_in_recursion_format(const fields.emplace_back(g1_as_fields.x_hi); fields.emplace_back(g1_as_fields.y_lo); fields.emplace_back(g1_as_fields.y_hi); - } - else - { + } else { ASSERT(manifest_element.name == "public_inputs"); const size_t num_public_inputs = manifest_element.num_bytes / 32; // If we have a recursive proofs the public inputs must describe an aggregation object that // is composed of two valid G1 points on the curve. Without this conditional we will get a // runtime error that we are attempting to invert 0. - if (contains_recursive_proof) - { + if (contains_recursive_proof) { ASSERT(num_public_inputs == RecursionConstraint::AGGREGATION_OBJECT_SIZE); - for (size_t k = 0; k < RecursionConstraint::NUM_AGGREGATION_ELEMENTS; ++k) - { + for (size_t k = 0; k < RecursionConstraint::NUM_AGGREGATION_ELEMENTS; ++k) { auto scalar = barretenberg::fr::random_element(); const auto group_element = barretenberg::g1::affine_element(barretenberg::g1::one * scalar); auto g1_as_fields = export_g1_affine_element_as_fields(group_element); @@ -382,11 +341,8 @@ std::vector export_dummy_transcript_in_recursion_format(const fields.emplace_back(g1_as_fields.y_lo); fields.emplace_back(g1_as_fields.y_hi); } - } - else - { - for (size_t j = 0; j < num_public_inputs; ++j) - { + } else { + for (size_t j = 0; j < num_public_inputs; ++j) { // auto scalar = barretenberg::fr::random_element(); fields.emplace_back(0); } diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp index 920c3414a5c..8f6618106d2 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp @@ -3,8 +3,7 @@ #include "barretenberg/plonk/proof_system/verification_key/verification_key.hpp" #include -namespace acir_format -{ +namespace acir_format { using namespace proof_system::plonk; @@ -43,8 +42,7 @@ using namespace proof_system::plonk; * the previous recursion constraint in the circuit (the one that verifies A) * */ -struct RecursionConstraint -{ +struct RecursionConstraint { // An aggregation state is represented by two G1 affine elements. Each G1 point has // two field element coordinates (x, y). Thus, four field elements static constexpr size_t NUM_AGGREGATION_ELEMENTS = 4; @@ -87,8 +85,7 @@ size_t recursion_proof_size_without_public_inputs(); // In order to interact with a recursive aggregation state inside of a circuit, we need to represent its internal G1 // elements as field elements. This happens in multiple locations when creating a recursion constraint. The struct and // method below export a g1 affine element as fields to use as part of the recursive circuit. -struct G1AsFields -{ +struct G1AsFields { barretenberg::fr x_lo; barretenberg::fr x_hi; barretenberg::fr y_lo; diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp index c6b3f06ac5b..a64f65462bc 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp @@ -8,13 +8,11 @@ using namespace proof_system::plonk; -class AcirRecursionConstraint : public ::testing::Test -{ +class AcirRecursionConstraint : public ::testing::Test { protected: static void SetUpTestSuite() { barretenberg::srs::init_crs_factory("../srs_db/ignition"); } }; -namespace acir_format::test -{ +namespace acir_format::test { Builder create_inner_circuit() { /** @@ -132,8 +130,7 @@ Builder create_outer_circuit(std::vector& inner_circuits) std::vector> witness; size_t circuit_idx = 0; - for (auto& inner_circuit : inner_circuits) - { + for (auto& inner_circuit : inner_circuits) { const bool has_input_aggregation_object = circuit_idx > 0; auto inner_composer = Composer(); @@ -158,8 +155,7 @@ Builder create_outer_circuit(std::vector& inner_circuits) // We want to make sure that we do not remove the nested aggregation object in the case of the proof we want to // recursively verify contains a recursive proof itself. We are safe to keep all the inner public inputs // as in these tests the outer circuits do not have public inputs themselves - if (!has_nested_proof) - { + if (!has_nested_proof) { proof_witnesses.erase(proof_witnesses.begin(), proof_witnesses.begin() + static_cast(num_inner_public_inputs)); } @@ -178,37 +174,29 @@ Builder create_outer_circuit(std::vector& inner_circuits) std::vector inner_public_inputs; std::array input_aggregation_object = {}; std::array nested_aggregation_object = {}; - if (has_input_aggregation_object) - { + if (has_input_aggregation_object) { input_aggregation_object = output_aggregation_object; } - for (size_t i = 0; i < 16; ++i) - { + for (size_t i = 0; i < 16; ++i) { output_aggregation_object[i] = (static_cast(i + output_aggregation_object_start_idx)); } - if (has_nested_proof) - { - for (size_t i = 0; i < 16; ++i) - { + if (has_nested_proof) { + for (size_t i = 0; i < 16; ++i) { nested_aggregation_object[i] = inner_circuit.recursive_proof_public_input_indices[i]; } } - for (size_t i = 0; i < proof_witnesses.size(); ++i) - { + for (size_t i = 0; i < proof_witnesses.size(); ++i) { proof_indices.emplace_back(static_cast(i + proof_indices_start_idx)); } const size_t key_size = key_witnesses.size(); - for (size_t i = 0; i < key_size; ++i) - { + for (size_t i = 0; i < key_size; ++i) { key_indices.emplace_back(static_cast(i + key_indices_start_idx)); } // In the case of a nested proof we keep the nested aggregation object attached to the proof, // thus we do not explicitly have to keep the public inputs while setting up the initial recursion constraint. // They will later be attached as public inputs when creating the circuit. - if (!has_nested_proof) - { - for (size_t i = 0; i < num_inner_public_inputs; ++i) - { + if (!has_nested_proof) { + for (size_t i = 0; i < num_inner_public_inputs; ++i) { inner_public_inputs.push_back(static_cast(i + public_input_start_idx)); } } @@ -224,17 +212,14 @@ Builder create_outer_circuit(std::vector& inner_circuits) }; recursion_constraints.push_back(recursion_constraint); - for (size_t i = 0; i < proof_indices_start_idx - witness_offset; ++i) - { + for (size_t i = 0; i < proof_indices_start_idx - witness_offset; ++i) { witness.emplace_back(0); } - for (const auto& wit : proof_witnesses) - { + for (const auto& wit : proof_witnesses) { witness.emplace_back(wit); } - for (const auto& wit : key_witnesses) - { + for (const auto& wit : key_witnesses) { witness.emplace_back(wit); } @@ -244,10 +229,8 @@ Builder create_outer_circuit(std::vector& inner_circuits) // // We once again have to check whether we have a nested proof, because if we do have one // then we could get a segmentation fault as `inner_public_inputs` was never filled with values. - if (!has_nested_proof) - { - for (size_t i = 0; i < num_inner_public_inputs; ++i) - { + if (!has_nested_proof) { + for (size_t i = 0; i < num_inner_public_inputs; ++i) { witness[inner_public_inputs[i] - 1] = inner_public_input_values[i]; } } diff --git a/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp index 635a7459210..e1196d23c10 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp @@ -3,37 +3,30 @@ #include "barretenberg/numeric/uint256/uint256.hpp" // forward declare Engine -namespace numeric::random -{ +namespace numeric::random { class Engine; } -namespace barretenberg -{ -template struct alignas(32) field2 -{ +namespace barretenberg { +template struct alignas(32) field2 { public: constexpr field2(const base_field& a = base_field::zero(), const base_field& b = base_field::zero()) : c0(a) , c1(b) - { - } + {} constexpr field2(const field2& other) noexcept : c0(other.c0) , c1(other.c1) - { - } + {} constexpr field2(field2&& other) noexcept : c0(other.c0) , c1(other.c1) - { - } + {} constexpr field2& operator=(const field2& other) noexcept { - if (this == &other) - { + if (this == &other) { return *this; } c0 = other.c0; @@ -43,8 +36,7 @@ template struct alignas(32) field2 constexpr field2& operator=(field2&& other) noexcept { - if (this == &other) - { + if (this == &other) { return *this; } c0 = other.c0; diff --git a/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp b/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp index 1861931201d..43e3ea04153 100644 --- a/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp +++ b/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp @@ -16,8 +16,7 @@ WASM_EXPORT void srs_init_srs(uint8_t const* points_buf, uint32_t const* num_poi { auto num_points = ntohl(*num_points_buf); auto g1_points = std::vector(num_points); - for (size_t i = 0; i < num_points; ++i) - { + for (size_t i = 0; i < num_points; ++i) { g1_points[i] = from_buffer(points_buf, i * 64); } auto g2_point = from_buffer(g2_point_buf); From b83c05a18588cf614d6cd0915f3e5842645cd0e8 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 2 Jan 2024 13:32:10 -0500 Subject: [PATCH 58/71] fix bad merge on base_rollup_inputs.nr --- .../rollup-lib/src/base/base_rollup_inputs.nr | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr index 93b6a031181..405f46929dd 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -166,22 +166,7 @@ impl BaseRollupInputs { // TODO(Kev): This should say calculate_commitments_subtree_root // Cpp code says calculate_commitments_subtree, so I'm leaving it as is for now fn calculate_commitments_subtree(self) -> Field { - calculate_subtree(self.kernel_data.public_inputs.end.new_commitments) - let mut commitment_tree_leaves = [0; NOTE_HASH_SUBTREE_WIDTH]; - - for i in 0..KERNELS_PER_BASE_ROLLUP { - let new_commitments = self.kernel_data[i].public_inputs.end.new_commitments; - - // Our commitments size MUST be 4 to calculate our subtrees correctly - assert(new_commitments.len() == MAX_NEW_COMMITMENTS_PER_TX, "New commitments in kernel data must be MAX_NEW_COMMITMENTS_PER_TX (see constants.hpp)"); - - for j in 0..MAX_NEW_COMMITMENTS_PER_TX { - // TODO(Maddiaa): batch insert - commitment_tree_leaves[i * MAX_NEW_COMMITMENTS_PER_TX + j] = new_commitments[j].value; - } - } - - calculate_subtree(commitment_tree_leaves) + calculate_subtree(self.kernel_data.public_inputs.end.new_commitments.map(|c: SideEffect| c.value)) } fn check_nullifier_tree_non_membership_and_insert_to_tree(self) -> AppendOnlyTreeSnapshot { From d369666bf70322d3322a7d3792e31b14ca05f656 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 2 Jan 2024 13:40:30 -0500 Subject: [PATCH 59/71] sideEffect import --- .../src/crates/rollup-lib/src/base/base_rollup_inputs.nr | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr index 405f46929dd..f1fcde54089 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -33,6 +33,7 @@ use dep::types::constants::{ use dep::types::abis::previous_kernel_data::PreviousKernelData; use dep::types::abis::membership_witness::{NullifierMembershipWitness, PublicDataMembershipWitness, MembershipWitness}; use dep::types::abis::membership_witness::ArchiveRootMembershipWitness; +use dep::types::abis::side_effect::SideEffect; struct BaseRollupInputs { kernel_data: PreviousKernelData, From 3fbd183da7cd66f41d513df121159be41d2cfc9d Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 2 Jan 2024 14:03:16 -0500 Subject: [PATCH 60/71] fix bad merge --- .../src/crates/rollup-lib/src/base/base_rollup_inputs.nr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr index f1fcde54089..8b1aeac9783 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -33,7 +33,7 @@ use dep::types::constants::{ use dep::types::abis::previous_kernel_data::PreviousKernelData; use dep::types::abis::membership_witness::{NullifierMembershipWitness, PublicDataMembershipWitness, MembershipWitness}; use dep::types::abis::membership_witness::ArchiveRootMembershipWitness; -use dep::types::abis::side_effect::SideEffect; +use dep::types::abis::side_effect::{SideEffect, SideEffectLinkedToNoteHash}; struct BaseRollupInputs { kernel_data: PreviousKernelData, @@ -173,7 +173,7 @@ impl BaseRollupInputs { fn check_nullifier_tree_non_membership_and_insert_to_tree(self) -> AppendOnlyTreeSnapshot { crate::indexed_tree::batch_insert( self.start_nullifier_tree_snapshot, - self.kernel_data.public_inputs.end.new_nullifiers, + self.kernel_data.public_inputs.end.new_nullifiers.map(|nullifier: SideEffectLinkedToNoteHash| nullifier.value), self.sorted_new_nullifiers, self.sorted_new_nullifiers_indexes, self.new_nullifiers_subtree_sibling_path, @@ -797,7 +797,7 @@ mod tests { let low_index = self.new_nullifiers.get_unchecked(original_index as Field).existing_index; - kernel_data[0].public_inputs.end.new_nullifiers[original_index].value = new_nullifier; + kernel_data.public_inputs.end.new_nullifiers[original_index].value = new_nullifier; let mut low_preimage = pre_existing_nullifiers[low_index]; low_nullifier_leaf_preimages[i] = low_preimage; From bcd3c456a2eaf6bb059001bb148b008b501d5d04 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 2 Jan 2024 18:58:05 -0500 Subject: [PATCH 61/71] delete comments/cleanup --- .../acir-simulator/src/client/private_execution.test.ts | 2 +- .../acir-simulator/src/client/private_execution.ts | 2 -- yarn-project/acir-simulator/src/client/simulator.ts | 1 - .../src/crates/types/src/abis/call_stack_item.nr | 7 ------- .../src/tests/private_circuit_public_inputs_builder.nr | 2 +- yarn-project/noir-protocol-circuits/src/index.test.ts | 1 - 6 files changed, 2 insertions(+), 13 deletions(-) diff --git a/yarn-project/acir-simulator/src/client/private_execution.test.ts b/yarn-project/acir-simulator/src/client/private_execution.test.ts index 5c0d7bdbbf5..9f0ba52828a 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.test.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.test.ts @@ -251,7 +251,7 @@ describe('Private Execution test suite', () => { it('should run the create_note function', async () => { const artifact = getFunctionArtifact(StatefulTestContractArtifact, 'create_note'); - const result = await runSimulator({ args: [owner, 140], artifact }); // this line + const result = await runSimulator({ args: [owner, 140], artifact }); expect(result.newNotes).toHaveLength(1); const newNote = result.newNotes[0]; diff --git a/yarn-project/acir-simulator/src/client/private_execution.ts b/yarn-project/acir-simulator/src/client/private_execution.ts index 90d81c92ddd..d2d43ca534d 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.ts @@ -29,7 +29,6 @@ export async function executePrivateFunction( const acir = Buffer.from(artifact.bytecode, 'base64'); const initialWitness = context.getInitialWitness(artifact); const acvmCallback = new Oracle(context); - await AcirSimulator.getSolver(); const { partialWitness } = await acvm(await AcirSimulator.getSolver(), acir, initialWitness, acvmCallback).catch( (err: Error) => { throw new ExecutionError( @@ -44,7 +43,6 @@ export async function executePrivateFunction( }, ); - log(`got partialWitness, getting publicInputs`); // failing in line above const publicInputs = extractPrivateCircuitPublicInputs(partialWitness, acir); const encryptedLogs = context.getEncryptedLogs(); diff --git a/yarn-project/acir-simulator/src/client/simulator.ts b/yarn-project/acir-simulator/src/client/simulator.ts index c1646f0440b..b34093e983c 100644 --- a/yarn-project/acir-simulator/src/client/simulator.ts +++ b/yarn-project/acir-simulator/src/client/simulator.ts @@ -105,7 +105,6 @@ export class AcirSimulator { ); try { - // this is failing right now const executionResult = await executePrivateFunction( context, entryPointArtifact, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr index 31525596ebe..94aa0dce532 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr @@ -60,11 +60,6 @@ impl PublicCallStackItem { let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); request_public_inputs.call_context = public_inputs.call_context; request_public_inputs.args_hash = public_inputs.args_hash; - // request_public_inputs.new_commitments = public_inputs.new_commitments; - // request_public_inputs.new_nullifiers= public_inputs.new_nullifiers; - // dep::std::println(public_inputs.new_nullifiers[0].hash()); - // dep::std::println(request_public_inputs.new_commitments[0].hash()); - // dep::std::println(request_public_inputs.new_commitments[0].hash()); let call_stack_item = PublicCallStackItem { contract_address: self.contract_address, @@ -72,8 +67,6 @@ impl PublicCallStackItem { is_execution_request: true, public_inputs: request_public_inputs, }; - // let emptyCallHash = call_stack_item.hash(); - // dep::std::println(emptyCallHash); call_stack_item } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr index 20e5cb95569..fcb7556f3ba 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -93,7 +93,7 @@ impl PrivateCircuitPublicInputsBuilder { is_delegate_call: false, is_static_call: false, is_contract_deployment: is_constructor, - start_side_effect_counter: 0, // needed? + start_side_effect_counter: 0, }; public_inputs.call_context = call_context; public_inputs.args_hash = args_hash; diff --git a/yarn-project/noir-protocol-circuits/src/index.test.ts b/yarn-project/noir-protocol-circuits/src/index.test.ts index 4a6afeae19b..d3dd434b5b3 100644 --- a/yarn-project/noir-protocol-circuits/src/index.test.ts +++ b/yarn-project/noir-protocol-circuits/src/index.test.ts @@ -292,7 +292,6 @@ describe('Private kernel', () => { it('Executes private kernel inner for a nested call', async () => { logger('Initialized Noir instance with private kernel init circuit'); - // TODO: need to update the serialized file for test to pass, but e2e fails currently const filepath = resolve( dirname(fileURLToPath(import.meta.url)), './fixtures/nested-call-private-kernel-inner.hex', From 822d53112b9eb0a7a3bfe0eae4dce98b5f7c0cf0 Mon Sep 17 00:00:00 2001 From: Dan Lee Date: Tue, 2 Jan 2024 19:49:20 -0500 Subject: [PATCH 62/71] forgot some comments --- .../src/noir_test_gen.test.ts | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts index 8b4bda18405..ecb37e3a8d2 100644 --- a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts +++ b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts @@ -21,22 +21,6 @@ import { MerkleTreeId } from '@aztec/types'; import { default as levelup } from 'levelup'; import memdown from 'memdown'; -// TODO: DELETE THIS COMMENT -// fix failing hash approach: generate a public call, hash it, assert it is the same as in noir -// this creates the snapshot, take it to Noir. hard code it into a Noir test -// (can't read from snapshot in noir). build noir data structure here, -// can use type conversion methods to convert call stack items to build noir stack item. -// do snapshot. -// start with empty, see if hash is same for empty call request. easy because -// noir has unsafe::zerod to get empty version. - -// yarn test -u to update -// "yarn test" should generate if not present. - -// nargo test has a command to show the output of prints -// also has "--exact" with fully qualified path of test to only run that one -// nargo test will show all of those fully qualified paths. - describe('Data generation for noir tests', () => { const defaultContract = { address: AztecAddress.fromField(new Fr(12345)), From aa5af637761ecdb0a2f4f78b57c3fb2729030373 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 10:21:25 +0000 Subject: [PATCH 63/71] test: undo snap change --- .../noir-compiler/src/__snapshots__/index.test.ts.snap | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap index d635ee9e221..1a99b10fe69 100644 --- a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap @@ -30,7 +30,9 @@ exports[`noir-compiler using nargo compiles the test contract 1`] = ` "name": "openFunction", "parameters": [], "returnTypes": [ - undefined, + { + "kind": "field", + }, ], "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f", }, From 8ee5b3fabec155c9b1b3c31592221398900bd3a2 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 10:39:18 +0000 Subject: [PATCH 64/71] chore: various cleanups --- .../src/private_kernel_ordering.nr | 3 --- .../src/crates/public-kernel-lib/src/common.nr | 13 ++++--------- .../src/crates/types/src/abis/side_effect.nr | 5 ----- .../src/sequencer/public_processor.test.ts | 3 --- .../src/sequencer/public_processor.ts | 12 ------------ .../sequencer-client/src/simulator/public_kernel.ts | 3 --- 6 files changed, 4 insertions(+), 35 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index fecdb9ebc11..e6dbf76538c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -351,9 +351,6 @@ mod tests { let new_nullifiers = builder.get_new_nullifiers(); let public_inputs = builder.execute(); - dep::std::println([unique_siloed_commitments[0]]); - dep::std::println(public_inputs.end.new_commitments); - dep::std::println(new_commitments); assert( struct_array_eq( diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index 27ba5c52256..f70719ebe07 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -162,7 +162,10 @@ pub fn update_public_end_values(public_call: PublicCallData, circuit_outputs: &m propagate_valid_public_data_reads(public_call, circuit_outputs); } -fn propagate_valid_public_data_update_requests(public_call: PublicCallData, circuit_outputs: &mut KernelCircuitPublicInputsBuilder) { +fn propagate_valid_public_data_update_requests( + public_call: PublicCallData, + circuit_outputs: &mut KernelCircuitPublicInputsBuilder +) { let contract_address = public_call.call_stack_item.contract_address; let update_requests = public_call.call_stack_item.public_inputs.contract_storage_update_requests; @@ -309,14 +312,6 @@ pub fn validate_call_against_request(public_call: PublicCallData, request: CallR // and the 'gas rebate' tx). let call_stack_item = public_call.call_stack_item; - // let emptycallstackitem: PublicCallStackItem = dep::std::unsafe::zeroed(); - let publiccircuitinputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed(); - // dep::std::println(publiccircuitinputs.hash()); - // dep::std::println(call_stack_item); - // let empty = CallRequest::empty(); - // dep::std::println(emptycallstackitem.hash()); - // dep::std::println(call_stack_item.hash()); - // dep::std::println(call_stack_item); assert( request.hash == call_stack_item.hash(), "calculated public_kernel_inputs_hash does not match provided public_kernel_inputs_hash at the top of the call stack" ); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr index e1ab150fe33..b9c53d23364 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr @@ -85,8 +85,3 @@ impl SideEffectLinkedToNoteHash{ } } -// for nested calls - keep track of their side effect start/end, and verify -// that the start value is equal to what is passed in, and then resume -// outer call side effect counting using the returned end value -// we deviate from original implementation - no SideEffectWithRange, but now -// modify the CallRequest to include start/end counters directly diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 0cda6710b5b..18c1d0ca34d 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -157,9 +157,6 @@ describe('public_processor', () => { const callRequests: PublicCallRequest[] = [makePublicCallRequest(0x100), makePublicCallRequest(0x100)]; const callStackItems = callRequests.map(call => call.toCallRequest()); - // generate a call request, print hash of a call request - // do the test also also in noir. has to be the call request hash mismatching - // can also build a snapshot on TS side const kernelOutput = makePrivateKernelPublicInputsFinal(0x10); kernelOutput.end.publicCallStack = padArrayEnd( callStackItems, diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.ts index b0086607d87..fba66b0b797 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.ts @@ -159,17 +159,13 @@ export class PublicProcessor { protected async processTx(tx: Tx): Promise { if (!isArrayEmpty(tx.data.end.publicCallStack, item => item.isEmpty())) { - this.log('calling processEnqueuedCalls'); const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs] = await this.processEnqueuedPublicCalls( tx, ); tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs); - this.log('calling makeProcessedTx with 3 args'); - this.log(`${(await makeProcessedTx(tx, publicKernelOutput, publicKernelProof)).data.end.newCommitments}`); return makeProcessedTx(tx, publicKernelOutput, publicKernelProof); } else { - this.log('calling makeProcessedTx with 1 args'); return makeProcessedTx(tx); } } @@ -195,7 +191,6 @@ export class PublicProcessor { // TODO(dbanks12): why must these be reversed? const enqueuedCallsReversed = tx.enqueuedPublicFunctionCalls.slice().reverse(); for (const enqueuedCall of enqueuedCallsReversed) { - this.log(`reversed and found ${enqueuedCall.toCallRequest().hash.toString()}`); const executionStack: (PublicExecution | PublicExecutionResult)[] = [enqueuedCall]; // Keep track of which result is for the top/enqueued call @@ -213,10 +208,7 @@ export class PublicProcessor { executionStack.push(...result.nestedExecutions); const callData = await this.getPublicCallData(result, isExecutionRequest); - this.log(`${callData.publicCallStack[0].hash.toString()} callstack[0] hash}`); - this.log(`${callData.publicCallStack[3].hash.toString()} callstack[3] hash}`); [kernelOutput, kernelProof] = await this.runKernelCircuit(callData, kernelOutput, kernelProof); - this.log('kernel circuit run without error'); if (!enqueuedExecutionResult) { enqueuedExecutionResult = result; @@ -239,9 +231,7 @@ export class PublicProcessor { previousProof: Proof, ): Promise<[KernelCircuitPublicInputs, Proof]> { const output = await this.getKernelCircuitOutput(callData, previousOutput, previousProof); - this.log(`output: ${output}`); const proof = await this.publicProver.getPublicKernelCircuitProof(output); - this.log(`proof: ${proof}`); return [output, proof]; } @@ -254,8 +244,6 @@ export class PublicProcessor { // Run the public kernel circuit with previous private kernel const previousKernel = this.getPreviousKernelData(previousOutput, previousProof); const inputs = new PublicKernelInputs(previousKernel, callData); - this.log('in getKernelCircuitOutput'); - this.log(callData.publicCallStack[0].hash.toString()); return this.publicKernel.publicKernelCircuitPrivateInput(inputs); } else if (previousOutput && previousProof) { // Run the public kernel circuit with previous public kernel diff --git a/yarn-project/sequencer-client/src/simulator/public_kernel.ts b/yarn-project/sequencer-client/src/simulator/public_kernel.ts index dad6c333138..dbbbe9fc268 100644 --- a/yarn-project/sequencer-client/src/simulator/public_kernel.ts +++ b/yarn-project/sequencer-client/src/simulator/public_kernel.ts @@ -21,7 +21,6 @@ export class RealPublicKernelCircuitSimulator implements PublicKernelCircuitSimu if (!input.previousKernel.publicInputs.isPrivate) { throw new Error(`Expected private kernel previous inputs`); } - this.log(`calling executePublicKernelPrivatePrevious`); const [duration, result] = await elapsed(() => executePublicKernelPrivatePrevious(input)); this.log(`Simulated public kernel circuit with private input`, { eventName: 'circuit-simulation', @@ -42,8 +41,6 @@ export class RealPublicKernelCircuitSimulator implements PublicKernelCircuitSimu if (input.previousKernel.publicInputs.isPrivate) { throw new Error(`Expected public kernel previous inputs`); } - this.log(`calling executePublicKernelPublicPrevious(input)`); - this.log(`${input}`); const [duration, result] = await elapsed(() => executePublicKernelPublicPrevious(input)); this.log(`Simulated public kernel circuit non-first iteration`, { eventName: 'circuit-simulation', From a7f95579e3def2b059ab1ddd98d606f22e1ebb1b Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 11:03:22 +0000 Subject: [PATCH 65/71] fix: use EMPTY_NULLIFIED_COMMITMENT --- .../src/private_kernel_init.nr | 92 +++++++++---------- 1 file changed, 45 insertions(+), 47 deletions(-) diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index 6abfbfdbd0a..fe15a8312cf 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -68,9 +68,8 @@ impl PrivateKernelInputsInit { fn update_end_values(self, public_inputs: &mut KernelCircuitPublicInputsBuilder) { // Since it's the first iteration, we need to push the the tx hash nullifier into the `new_nullifiers` array public_inputs.end.new_nullifiers.push(SideEffectLinkedToNoteHash{ - // weird case where the value is the hash already... so duplicate the value for "note_hash" or leave as 0? value: self.tx_request.hash(), - note_hash: self.tx_request.hash(), + note_hash: EMPTY_NULLIFIED_COMMITMENT, counter: 0, }); @@ -182,16 +181,26 @@ mod tests { } } - pub fn validate_deployed_contract_address(tx_request: TxRequest, private_call: PrivateCallDataBuilder, public_inputs: KernelCircuitPublicInputs) { + pub fn validate_deployed_contract_address( + tx_request: TxRequest, + private_call: PrivateCallDataBuilder, + public_inputs: KernelCircuitPublicInputs + ) { assert_eq(public_inputs.end.new_contracts.len(), 1); let cdd = tx_request.tx_context.contract_deployment_data; let private_circuit_vk_hash = stdlib_recursion_verification_key_compress_native_vk(private_call.vk); - let constructor_hash = compute_constructor_hash(tx_request.function_data, tx_request.args_hash, private_circuit_vk_hash); - let contract_address = CompleteAddress::compute(cdd.deployer_public_key, + let constructor_hash = compute_constructor_hash( + tx_request.function_data, + tx_request.args_hash, + private_circuit_vk_hash + ); + let contract_address = CompleteAddress::compute( + cdd.deployer_public_key, cdd.contract_address_salt, cdd.function_tree_root, - constructor_hash).address; + constructor_hash + ).address; assert(public_inputs.end.new_contracts[0].contract_address.eq(contract_address)); } @@ -264,15 +273,13 @@ mod tests { fn input_validation_malformed_arrays_read_requests() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.read_requests.push_array([ - SideEffect { - value: 0, - counter: 0}, - SideEffect { - value: 9123, - counter: 1, - }]); - + builder.private_call.public_inputs.read_requests.push_array( + [ + SideEffect { value: 0, counter: 0 }, + SideEffect { value: 9123, counter: 1 } + ] + ); + builder.failed(); } @@ -280,16 +287,13 @@ mod tests { fn input_validation_malformed_arrays_commitments() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.new_commitments.push_array([ - SideEffect { - value: 0, - counter: 0, - }, - SideEffect { - value: 9123, - counter: 1, - }]); - + builder.private_call.public_inputs.new_commitments.push_array( + [ + SideEffect { value: 0, counter: 0 }, + SideEffect { value: 9123, counter: 1 } + ] + ); + builder.failed(); } @@ -297,17 +301,13 @@ mod tests { fn input_validation_malformed_arrays_nullifiers() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - builder.private_call.public_inputs.new_nullifiers.push_array([SideEffectLinkedToNoteHash{ - value: 0, - note_hash: 0, - counter: 0, - }, - SideEffectLinkedToNoteHash{ - value: 9123, - note_hash: 0, - counter: 1, - }]); - + builder.private_call.public_inputs.new_nullifiers.push_array( + [ + SideEffectLinkedToNoteHash { value: 0, note_hash: 0, counter: 0 }, + SideEffectLinkedToNoteHash { value: 9123, note_hash: 0, counter: 1 } + ] + ); + builder.failed(); } @@ -316,7 +316,7 @@ mod tests { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); builder.private_call.public_inputs.nullified_commitments.push_array([0, 9123]); - + builder.failed(); } @@ -325,7 +325,7 @@ mod tests { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); builder.private_call.public_inputs.private_call_stack_hashes.push_array([0, 9123]); - + builder.failed(); } @@ -334,7 +334,7 @@ mod tests { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); builder.private_call.public_inputs.public_call_stack_hashes.push_array([0, 9123]); - + builder.failed(); } @@ -343,7 +343,7 @@ mod tests { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); builder.private_call.public_inputs.new_l2_to_l1_msgs.push_array([0, 9123]); - + builder.failed(); } @@ -398,7 +398,7 @@ mod tests { builder.failed(); } - + #[test(should_fail_with="Cannot call an internal function directly")] fn private_function_is_internal_fails() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); @@ -490,11 +490,7 @@ mod tests { // tweak read_request so it gives wrong root when paired with its sibling path let read_request = builder.private_call.public_inputs.read_requests.pop(); - builder.private_call.public_inputs.read_requests.push( - SideEffect{ - value: read_request.value + 1, - counter: read_request.counter, - }); + builder.private_call.public_inputs.read_requests.push(SideEffect { value: read_request.value + 1, counter: read_request.counter }); builder.failed(); } @@ -635,6 +631,8 @@ mod tests { assert_eq(public_inputs.end.new_nullifiers[0].value, builder.tx_request.hash()); // non-transient read requests are NOT forwarded - assert_eq(struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), MAX_READ_REQUESTS_PER_CALL); + assert_eq( + struct_array_length(public_inputs.end.read_requests, |r: SideEffect| r.is_empty()), MAX_READ_REQUESTS_PER_CALL + ); } } From 26c35aad09682e2f03f2077b41f15f3205f48b46 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 12:47:24 +0000 Subject: [PATCH 66/71] wip removing nullified commitments --- .../src/core/libraries/ConstantsGen.sol | 6 +- .../acir-simulator/src/acvm/deserialize.ts | 2 - .../acir-simulator/src/acvm/serialize.ts | 1 - yarn-project/aztec-nr/aztec/src/context.nr | 5 - .../src/abis/__snapshots__/abis.test.ts.snap | 62 +- yarn-project/circuits.js/src/abis/abis.ts | 1 - yarn-project/circuits.js/src/constants.gen.ts | 6 +- .../kernel/combined_accumulated_data.ts | 17 - .../structs/private_circuit_public_inputs.ts | 8 - .../circuits.js/src/tests/factories.ts | 3 - .../src/__snapshots__/index.test.ts.snap | 33970 ++++++---------- .../crates/private-kernel-lib/src/common.nr | 255 +- .../src/private_kernel_init.nr | 15 +- .../src/private_kernel_inner.nr | 9 - .../src/private_kernel_ordering.nr | 11 +- .../src/abis/combined_accumulated_data.nr | 13 +- .../src/abis/private_circuit_public_inputs.nr | 17 +- .../src/crates/types/src/constants.nr | 6 +- .../src/tests/previous_kernel_data_builder.nr | 6 +- .../private_circuit_public_inputs_builder.nr | 4 +- .../nested-call-private-kernel-inner.hex | 2 +- .../noir-protocol-circuits/src/index.test.ts | 9 - .../src/type_conversion.ts | 4 - .../src/types/private_kernel_init_types.ts | 2 - .../src/types/private_kernel_inner_types.ts | 2 - .../types/private_kernel_ordering_types.ts | 2 - .../public_kernel_private_previous_types.ts | 1 - .../public_kernel_public_previous_types.ts | 1 - .../src/types/rollup_base_types.ts | 1 - .../pxe/src/kernel_prover/kernel_prover.ts | 4 +- 30 files changed, 13355 insertions(+), 21090 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 971dafc680c..910463bc83f 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -71,15 +71,15 @@ library Constants { uint256 internal constant BLOCK_HEADER_LENGTH = 7; uint256 internal constant FUNCTION_DATA_LENGTH = 4; uint256 internal constant CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 235; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 188; uint256 internal constant CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; uint256 internal constant CONTRACT_STORAGE_READ_LENGTH = 2; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant EMPTY_NULLIFIED_COMMITMENT = 1000000; - uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 210; + uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 194; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 176; uint256 internal constant COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 1024; diff --git a/yarn-project/acir-simulator/src/acvm/deserialize.ts b/yarn-project/acir-simulator/src/acvm/deserialize.ts index 4364f6bf711..f5a97f42146 100644 --- a/yarn-project/acir-simulator/src/acvm/deserialize.ts +++ b/yarn-project/acir-simulator/src/acvm/deserialize.ts @@ -180,7 +180,6 @@ export function extractPrivateCircuitPublicInputs( const readRequests = witnessReader.readSideEffectArray(MAX_READ_REQUESTS_PER_CALL); const newCommitments = witnessReader.readSideEffectArray(MAX_NEW_COMMITMENTS_PER_CALL); const newNullifiers = witnessReader.readSideEffectLinkedToNoteHashArray(MAX_NEW_NULLIFIERS_PER_CALL); - const nullifiedCommitments = witnessReader.readFieldArray(MAX_NEW_NULLIFIERS_PER_CALL); const privateCallStack = witnessReader.readFieldArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL); const publicCallStack = witnessReader.readFieldArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL); const newL2ToL1Msgs = witnessReader.readFieldArray(MAX_NEW_L2_TO_L1_MSGS_PER_CALL); @@ -219,7 +218,6 @@ export function extractPrivateCircuitPublicInputs( readRequests, newCommitments, newNullifiers, - nullifiedCommitments, privateCallStack, publicCallStack, newL2ToL1Msgs, diff --git a/yarn-project/acir-simulator/src/acvm/serialize.ts b/yarn-project/acir-simulator/src/acvm/serialize.ts index ccef5257e22..0a9c8c26cea 100644 --- a/yarn-project/acir-simulator/src/acvm/serialize.ts +++ b/yarn-project/acir-simulator/src/acvm/serialize.ts @@ -146,7 +146,6 @@ export function toACVMPublicInputs(publicInputs: PrivateCircuitPublicInputs): AC ...publicInputs.readRequests.flatMap(x => x.toFieldArray()).map(toACVMField), ...publicInputs.newCommitments.flatMap(x => x.toFieldArray()).map(toACVMField), ...publicInputs.newNullifiers.flatMap(x => x.toFieldArray()).map(toACVMField), - ...publicInputs.nullifiedCommitments.map(toACVMField), ...publicInputs.privateCallStackHashes.map(toACVMField), ...publicInputs.publicCallStackHashes.map(toACVMField), ...publicInputs.newL2ToL1Msgs.map(toACVMField), diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index 88985e4771b..ce63019bf64 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -77,7 +77,6 @@ struct PrivateContext { new_commitments: BoundedVec, new_nullifiers: BoundedVec, - nullified_commitments: BoundedVec, private_call_stack_hashes : BoundedVec, public_call_stack_hashes : BoundedVec, @@ -106,7 +105,6 @@ impl PrivateContext { new_commitments: BoundedVec::new(SideEffect::empty()), new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()), - nullified_commitments: BoundedVec::new(0), block_header: inputs.block_header, @@ -162,7 +160,6 @@ impl PrivateContext { read_requests: self.read_requests.storage, new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, - nullified_commitments: self.nullified_commitments.storage, private_call_stack_hashes: self.private_call_stack_hashes.storage, public_call_stack_hashes: self.public_call_stack_hashes.storage, new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage, @@ -211,7 +208,6 @@ impl PrivateContext { }; self.new_nullifiers.push(side_effect); self.side_effect_counter = self.side_effect_counter + 1; - self.nullified_commitments.push(non_zero_nullified); } // docs:start:context_message_portal @@ -308,7 +304,6 @@ impl PrivateContext { read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]), new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]), new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]), - nullified_commitments: reader.read_array([0; MAX_NEW_NULLIFIERS_PER_CALL]), private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]), public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]), new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]), diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index 2a02fa564a1..bf37b64865c 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -53,41 +53,41 @@ Fr { exports[`abis compute private call stack item hash 1`] = ` Fr { - "asBigInt": 21258776147658849049551319694176270824260664326844106524017019530676633919336n, + "asBigInt": 12059257310848051064422198195395904684446263082512520258641028259263903818171n, "asBuffer": { "data": [ - 47, - 0, - 10, - 120, - 110, - 9, - 128, - 107, - 153, - 251, - 80, - 226, - 79, - 7, - 7, - 251, - 46, - 64, - 163, + 26, + 169, + 76, + 57, + 230, + 180, + 240, + 231, + 24, + 48, + 196, + 44, + 4, + 108, + 184, + 247, + 28, + 1, 155, + 143, + 248, + 71, + 143, + 76, + 160, + 71, + 179, + 148, + 161, 61, - 190, - 215, - 183, - 65, - 26, - 99, - 172, - 218, - 32, - 223, - 104, + 225, + 187, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index 685d89fd216..7c79e4dce23 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -544,7 +544,6 @@ function computePrivateInputsHash(input: PrivateCircuitPublicInputs) { .map(selinked => selinked.toFieldArray()) .flat() .map(fr => fr.toBuffer()), - ...input.nullifiedCommitments.map(fr => fr.toBuffer()), ...input.privateCallStackHashes.map(fr => fr.toBuffer()), ...input.publicCallStackHashes.map(fr => fr.toBuffer()), ...input.newL2ToL1Msgs.map(fr => fr.toBuffer()), diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 21e5dde28fa..ed242adcc77 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -57,15 +57,15 @@ export const CALL_CONTEXT_LENGTH = 8; export const BLOCK_HEADER_LENGTH = 7; export const FUNCTION_DATA_LENGTH = 4; export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 235; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 188; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; -export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 210; +export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 194; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 192; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 176; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 1024; diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index 9b18766cdd3..6c0b31dc60f 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -308,11 +308,6 @@ export class CombinedAccumulatedData { * The new nullifiers made in this transaction. */ public newNullifiers: Tuple, - /** - * The commitments which are nullified by a nullifier in the above list. For pending nullifiers, we have: - * nullifiedCommitments[j] != 0 if and only if newNullifiers[j] nullifies nullifiedCommitments[j] - */ - public nullifiedCommitments: Tuple, /** * Current private call stack. */ @@ -367,7 +362,6 @@ export class CombinedAccumulatedData { this.readRequests, this.newCommitments, this.newNullifiers, - this.nullifiedCommitments, this.privateCallStack, this.publicCallStack, this.newL2ToL1Msgs, @@ -398,7 +392,6 @@ export class CombinedAccumulatedData { reader.readArray(MAX_READ_REQUESTS_PER_TX, SideEffect), reader.readArray(MAX_NEW_COMMITMENTS_PER_TX, SideEffect), reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), - reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, Fr), reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), reader.readArray(MAX_NEW_L2_TO_L1_MSGS_PER_TX, Fr), @@ -419,7 +412,6 @@ export class CombinedAccumulatedData { makeTuple(MAX_READ_REQUESTS_PER_TX, SideEffect.empty), finalData.newCommitments, finalData.newNullifiers, - finalData.nullifiedCommitments, finalData.privateCallStack, finalData.publicCallStack, finalData.newL2ToL1Msgs, @@ -449,7 +441,6 @@ export class CombinedAccumulatedData { makeTuple(MAX_READ_REQUESTS_PER_TX, SideEffect.empty), makeTuple(MAX_NEW_COMMITMENTS_PER_TX, SideEffect.empty), makeTuple(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), - makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, Fr.zero), @@ -483,11 +474,6 @@ export class FinalAccumulatedData { * The new nullifiers made in this transaction. */ public newNullifiers: Tuple, - /** - * The commitments which are nullified by a nullifier in the above list. For pending nullifiers, we have: - * nullifiedCommitments[j] != 0 if and only if newNullifiers[j] nullifies nullifiedCommitments[j] - */ - public nullifiedCommitments: Tuple, /** * Current private call stack. * TODO(#3417): Given this field must empty, should we just remove it? @@ -534,7 +520,6 @@ export class FinalAccumulatedData { this.aggregationObject, this.newCommitments, this.newNullifiers, - this.nullifiedCommitments, this.privateCallStack, this.publicCallStack, this.newL2ToL1Msgs, @@ -562,7 +547,6 @@ export class FinalAccumulatedData { reader.readObject(AggregationObject), reader.readArray(MAX_NEW_COMMITMENTS_PER_TX, SideEffect), reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), - reader.readArray(MAX_NEW_NULLIFIERS_PER_TX, Fr), reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), reader.readArray(MAX_NEW_L2_TO_L1_MSGS_PER_TX, Fr), @@ -589,7 +573,6 @@ export class FinalAccumulatedData { AggregationObject.makeFake(), makeTuple(MAX_NEW_COMMITMENTS_PER_TX, SideEffect.empty), makeTuple(MAX_NEW_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), - makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, Fr.zero), diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index d7a03102f7a..6d060a15f0d 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -48,10 +48,6 @@ export class PrivateCircuitPublicInputs { * New nullifiers created by the corresponding function call. */ public newNullifiers: Tuple, - /** - * The commitments those were nullified by the above newNullifiers. - */ - public nullifiedCommitments: Tuple, /** * Private call stack at the current kernel iteration. */ @@ -125,7 +121,6 @@ export class PrivateCircuitPublicInputs { reader.readArray(MAX_READ_REQUESTS_PER_CALL, SideEffect), reader.readArray(MAX_NEW_COMMITMENTS_PER_CALL, SideEffect), reader.readArray(MAX_NEW_NULLIFIERS_PER_CALL, SideEffectLinkedToNoteHash), - reader.readArray(MAX_NEW_NULLIFIERS_PER_CALL, Fr), reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, Fr), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr), reader.readArray(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, Fr), @@ -152,7 +147,6 @@ export class PrivateCircuitPublicInputs { makeTuple(MAX_READ_REQUESTS_PER_CALL, SideEffect.empty), makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, SideEffect.empty), makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, SideEffectLinkedToNoteHash.empty), - makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, Fr.zero), makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, Fr.zero), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr.zero), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, Fr.zero), @@ -179,7 +173,6 @@ export class PrivateCircuitPublicInputs { isSideEffectArrayEmpty(this.readRequests) && isSideEffectArrayEmpty(this.newCommitments) && isSideEffectLinkedArrayEmpty(this.newNullifiers) && - isFrArrayEmpty(this.nullifiedCommitments) && isFrArrayEmpty(this.privateCallStackHashes) && isFrArrayEmpty(this.publicCallStackHashes) && isFrArrayEmpty(this.newL2ToL1Msgs) && @@ -207,7 +200,6 @@ export class PrivateCircuitPublicInputs { fields.readRequests, fields.newCommitments, fields.newNullifiers, - fields.nullifiedCommitments, fields.privateCallStackHashes, fields.publicCallStackHashes, fields.newL2ToL1Msgs, diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index edd8729365c..2c59a5aca08 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -232,7 +232,6 @@ export function makeAccumulatedData(seed = 1, full = false): CombinedAccumulated tupleGenerator(MAX_READ_REQUESTS_PER_TX, sideEffectFromNumber, seed + 0x80), tupleGenerator(MAX_NEW_COMMITMENTS_PER_TX, sideEffectFromNumber, seed + 0x100), tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x200), - tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x300), tupleGenerator(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x400), tupleGenerator(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x500), tupleGenerator(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x600), @@ -259,7 +258,6 @@ export function makeFinalAccumulatedData(seed = 1, full = false): FinalAccumulat makeAggregationObject(seed), tupleGenerator(MAX_NEW_COMMITMENTS_PER_TX, sideEffectFromNumber, seed + 0x100), tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x200), - tupleGenerator(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x300), tupleGenerator(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x400), tupleGenerator(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x500), tupleGenerator(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x600), @@ -691,7 +689,6 @@ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicIn readRequests: makeTuple(MAX_READ_REQUESTS_PER_CALL, sideEffectFromNumber, seed + 0x300), newCommitments: makeTuple(MAX_NEW_COMMITMENTS_PER_CALL, sideEffectFromNumber, seed + 0x400), newNullifiers: makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, sideEffectLinkedFromNumber, seed + 0x500), - nullifiedCommitments: makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, fr, seed + 0x510), privateCallStackHashes: makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x600), publicCallStackHashes: makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x700), newL2ToL1Msgs: makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, fr, seed + 0x800), diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index 57ce5d374c3..d1de0ce4f93 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -6538,41 +6538,41 @@ KernelCircuitPublicInputs { }, }, "noteHash": Fr { - "asBigInt": 2567833015098009695197683741929052765845567165156134398536953771337640275556n, + "asBigInt": 1000000n, "asBuffer": { "data": [ - 5, - 173, - 87, - 140, - 34, - 169, - 107, - 104, - 191, - 247, - 76, - 132, - 57, - 231, - 109, - 208, - 71, - 246, - 205, - 22, - 148, - 50, - 20, - 219, - 39, - 232, - 4, - 177, - 237, - 31, - 110, - 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 66, + 64, ], "type": "Buffer", }, @@ -6782,41 +6782,41 @@ KernelCircuitPublicInputs { }, }, "noteHash": Fr { - "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, + "asBigInt": 1000000n, "asBuffer": { "data": [ - 37, - 226, - 192, - 23, - 245, - 218, - 31, - 153, - 68, - 1, - 230, - 29, - 38, - 190, - 67, - 94, - 60, - 250, - 38, - 239, - 238, - 120, - 76, - 107, - 78, - 148, - 127, - 118, - 81, - 189, - 65, - 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 66, + 64, ], "type": "Buffer", }, @@ -14305,9936 +14305,425 @@ KernelCircuitPublicInputs { }, }, ], - "nullifiedCommitments": [ - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", + "optionallyRevealedData": [ + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "vkHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + OptionallyRevealedData { + "callStackItemHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "optionallyRevealedData": [ - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "vkHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "privateCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "publicCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "endSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "hash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "publicDataReads": [ - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "publicDataUpdateRequests": [ - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, }, }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -24256,23 +14745,11 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, - "oldValue": Fr { + "vkHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24312,173 +14789,93 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "newValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "oldValue": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + ], + "privateCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "newValue": Fr { + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24518,7 +14915,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24558,12 +14955,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - ], - "readRequests": [ - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24603,7 +14995,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24644,8 +15036,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24685,7 +15159,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24725,9 +15199,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24767,7 +15239,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24808,8 +15280,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24849,7 +15403,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24889,9 +15443,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24931,7 +15483,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -24972,8 +15524,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25013,7 +15647,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25053,9 +15687,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25095,7 +15727,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25136,48 +15768,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "value": Fr { + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25217,9 +15891,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25259,7 +15931,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25299,9 +15971,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25341,49 +16011,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - }, - SideEffect { - "counter": Fr { + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25423,7 +16135,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25463,9 +16175,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25505,7 +16215,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25546,8 +16256,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25587,7 +16379,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25627,9 +16419,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25669,7 +16459,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25710,8 +16500,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25751,7 +16623,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25791,9 +16663,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25833,7 +16703,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25874,8 +16744,92 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + ], + "publicCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25915,7 +16869,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25955,9 +16909,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -25997,7 +16949,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26038,8 +16990,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26079,7 +17113,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26119,9 +17153,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26161,7 +17193,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26202,8 +17234,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26243,7 +17357,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26283,9 +17397,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26325,7 +17437,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26366,8 +17478,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26407,7 +17601,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26447,9 +17641,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26489,7 +17681,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26530,8 +17722,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26571,7 +17845,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26611,9 +17885,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26653,7 +17925,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26694,8 +17966,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26735,7 +18089,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26775,9 +18129,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26817,7 +18169,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26858,8 +18210,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26899,7 +18333,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26939,9 +18373,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -26981,7 +18413,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27022,8 +18454,90 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27063,7 +18577,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27103,9 +18617,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27145,7 +18657,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27186,8 +18698,10 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + ], + "publicDataReads": [ + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27227,6 +18741,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27268,8 +18783,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27309,6 +18824,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27350,8 +18866,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27391,6 +18907,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27432,8 +18949,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27473,6 +18990,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27514,8 +19032,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27555,6 +19073,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27596,8 +19115,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27637,6 +19156,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27678,8 +19198,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27719,6 +19239,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27760,8 +19281,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27801,6 +19322,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27842,8 +19364,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27883,6 +19405,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -27924,8 +19447,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -27965,6 +19488,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28006,8 +19530,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28047,6 +19571,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28088,8 +19613,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28129,6 +19654,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28170,8 +19696,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28211,6 +19737,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28252,8 +19779,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28293,6 +19820,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28334,8 +19862,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28375,6 +19903,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28416,8 +19945,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28457,6 +19986,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -28498,8 +20028,10 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + ], + "publicDataUpdateRequests": [ + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28539,7 +20071,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28579,9 +20111,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28621,7 +20151,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28661,9 +20194,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28703,7 +20234,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28743,9 +20274,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28785,7 +20317,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28825,9 +20357,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28867,7 +20397,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28907,9 +20440,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28949,7 +20480,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -28989,9 +20520,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29031,7 +20563,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29071,9 +20603,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29113,7 +20643,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29153,9 +20686,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29195,7 +20726,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29235,9 +20766,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29277,7 +20809,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29317,9 +20849,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29359,7 +20889,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29399,9 +20932,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29441,7 +20972,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29481,9 +21012,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29523,7 +21055,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29563,9 +21095,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29605,7 +21135,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29645,9 +21178,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29687,7 +21218,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29727,9 +21258,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29769,7 +21301,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29809,9 +21341,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29851,7 +21381,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29891,9 +21424,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29933,7 +21464,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -29973,9 +21504,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30015,7 +21547,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30055,9 +21587,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30097,7 +21627,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30137,9 +21670,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30179,7 +21710,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30219,9 +21750,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30261,7 +21793,47 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30301,9 +21873,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30343,7 +21916,47 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -30383,7 +21996,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, + ], + "readRequests": [ SideEffect { "counter": Fr { "asBigInt": 0n, @@ -35025,535 +26641,41 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "unencryptedLogPreimagesLength": Fr { - "asBigInt": 4n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4, - ], - "type": "Buffer", - }, - }, - "unencryptedLogsHash": [ - Fr { - "asBigInt": 38042960891247304977978366569914796636n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 28, - 158, - 206, - 201, - 14, - 40, - 210, - 70, - 22, - 80, - 65, - 134, - 53, - 135, - 138, - 92, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 193925133628253903808777040905688936722n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 145, - 228, - 159, - 71, - 88, - 110, - 207, - 117, - 242, - 176, - 203, - 185, - 78, - 137, - 113, - 18, - ], - "type": "Buffer", - }, - }, - ], - }, - "isPrivate": true, -} -`; - -exports[`Private kernel Executes private kernel inner for a nested call 1`] = ` -KernelCircuitPublicInputs { - "constants": CombinedConstantData { - "blockHeader": BlockHeader { - "archiveRoot": Fr { - "asBigInt": 6744322730237198477312080572139538559114287895731814574457657241516307772626n, - "asBuffer": { - "data": [ - 14, - 233, - 38, - 193, - 136, - 60, - 41, - 90, - 208, - 130, - 182, - 37, - 133, - 226, - 19, - 81, - 125, - 132, - 14, - 178, - 214, - 0, - 185, - 70, - 216, - 94, - 36, - 88, - 105, - 109, - 244, - 210, - ], - "type": "Buffer", - }, - }, - "contractTreeRoot": Fr { - "asBigInt": 13259508924372164661572995925135014139404669140086009788791418974141089345731n, - "asBuffer": { - "data": [ - 29, - 80, - 157, - 184, - 146, - 225, - 237, - 114, - 133, - 226, - 82, - 0, - 226, - 219, - 134, - 117, - 80, - 240, - 140, - 83, - 120, - 218, - 229, - 92, - 155, - 156, - 11, - 188, - 5, - 48, - 112, - 195, - ], - "type": "Buffer", - }, - }, - "globalVariablesHash": Fr { - "asBigInt": 16925807809152742178971781652451821614938785911012483177868434045680935880983n, - "asBuffer": { - "data": [ - 37, - 107, - 170, - 240, - 79, - 133, - 37, - 103, - 93, - 204, - 9, - 24, - 248, - 160, - 164, - 15, - 253, - 102, - 169, - 153, - 220, - 160, - 78, - 212, - 79, - 86, - 122, - 71, - 35, - 41, - 201, - 23, - ], - "type": "Buffer", - }, - }, - "l1ToL2MessagesTreeRoot": Fr { - "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, - "asBuffer": { - "data": [ - 24, - 100, - 252, - 218, - 168, - 15, - 242, - 113, - 145, - 84, - 250, - 124, - 138, - 144, - 80, - 102, - 41, - 114, - 112, - 113, - 104, - 214, - 158, - 172, - 157, - 182, - 253, - 49, - 16, - 130, - 159, - 128, - ], - "type": "Buffer", - }, - }, - "noteHashTreeRoot": Fr { - "asBigInt": 6971175192416801990462082635037927335970598849917054122744877988445043867640n, - "asBuffer": { - "data": [ - 15, - 105, - 139, - 155, - 3, - 39, - 98, - 77, - 237, - 254, - 204, - 193, - 21, - 126, - 144, - 239, - 143, - 26, - 253, - 180, - 141, - 240, - 237, - 200, - 138, - 126, - 235, - 230, - 152, - 156, - 191, - 248, - ], - "type": "Buffer", - }, - }, - "nullifierTreeRoot": Fr { - "asBigInt": 1622125592590053854657962491619779447386225562588724076751511813000515030970n, - "asBuffer": { - "data": [ - 3, - 150, - 23, - 46, - 64, - 145, - 210, - 80, - 83, - 217, - 75, - 229, - 126, - 247, - 122, - 233, - 12, - 74, - 106, - 218, - 132, - 123, - 158, - 148, - 80, - 11, - 218, - 151, - 48, - 252, - 15, - 186, - ], - "type": "Buffer", - }, - }, - "privateKernelVkTreeRoot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "publicDataTreeRoot": Fr { - "asBigInt": 13940981882517738105981911020707002777955674699044852872880094407282064863456n, - "asBuffer": { - "data": [ - 30, - 210, - 80, - 237, - 115, - 219, - 110, - 112, - 128, - 92, - 78, - 252, - 240, - 5, - 110, - 134, - 149, - 183, - 156, - 211, - 186, - 65, - 142, - 130, - 124, - 24, - 77, - 238, - 108, - 111, - 176, - 224, - ], - "type": "Buffer", - }, - }, - }, - "txContext": TxContext { - "chainId": Fr { - "asBigInt": 31337n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 122, - 105, - ], - "type": "Buffer", + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "contractDeploymentData": ContractDeploymentData { - "constructorVkHash": Fr { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -35593,7 +26715,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "contractAddressSalt": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -35633,90 +26755,49 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "deployerPublicKey": Point { - "kind": "point", - "x": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "y": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "functionTreeRoot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -35756,8 +26837,11 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "portalContractAddress": EthAddress { - "buffer": { + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -35779,62 +26863,66 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - }, - "isContractDeploymentTx": false, - "isFeePaymentTx": false, - "isRebatePaymentTx": false, - "version": Fr { - "asBigInt": 1n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - }, - }, - "end": CombinedAccumulatedData { - "aggregationObject": AggregationObject { - "hasData": false, - "p0": G1AffineElement { - "x": Fq { - "asBigInt": 1n, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -35868,13 +26956,13 @@ KernelCircuitPublicInputs { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - "y": Fq { - "asBigInt": 2n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -35908,15 +26996,15 @@ KernelCircuitPublicInputs { 0, 0, 0, - 2, + 0, ], "type": "Buffer", }, }, }, - "p1": G1AffineElement { - "x": Fq { - "asBigInt": 1n, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -35950,13 +27038,13 @@ KernelCircuitPublicInputs { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - "y": Fq { - "asBigInt": 2n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -35990,155 +27078,94 @@ KernelCircuitPublicInputs { 0, 0, 0, - 2, + 0, ], "type": "Buffer", }, }, }, - "proofWitnessIndices": [ - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3034, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - ], - "publicInputs": [], - }, - "encryptedLogPreimagesLength": Fr { - "asBigInt": 12n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 12, - ], - "type": "Buffer", - }, - }, - "encryptedLogsHash": [ - Fr { - "asBigInt": 10654334908029642268226261618939201427n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8, - 3, - 243, - 68, - 123, - 49, - 16, - 181, - 87, - 150, - 38, - 199, - 134, - 29, - 7, - 147, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 133338275028334099210129003420909668908n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 100, - 80, - 4, - 133, - 110, - 109, - 121, - 70, - 184, - 235, - 48, - 170, - 28, - 9, - 138, - 44, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - ], - "newCommitments": [ SideEffect { "counter": Fr { "asBigInt": 0n, @@ -41387,10 +32414,8 @@ KernelCircuitPublicInputs { }, }, }, - ], - "newContracts": [ - NewContractData { - "contractAddress": AztecAddress { + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41430,7 +32455,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "functionTreeRoot": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41470,37 +32495,380 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + ], + "unencryptedLogPreimagesLength": Fr { + "asBigInt": 4n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + ], + "type": "Buffer", + }, + }, + "unencryptedLogsHash": [ + Fr { + "asBigInt": 38042960891247304977978366569914796636n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 158, + 206, + 201, + 14, + 40, + 210, + 70, + 22, + 80, + 65, + 134, + 53, + 135, + 138, + 92, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 193925133628253903808777040905688936722n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 145, + 228, + 159, + 71, + 88, + 110, + 207, + 117, + 242, + 176, + 203, + 185, + 78, + 137, + 113, + 18, + ], + "type": "Buffer", + }, + }, + ], + }, + "isPrivate": true, +} +`; + +exports[`Private kernel Executes private kernel inner for a nested call 1`] = ` +KernelCircuitPublicInputs { + "constants": CombinedConstantData { + "blockHeader": BlockHeader { + "archiveRoot": Fr { + "asBigInt": 21248009016811456836438392746926422387444685174609687677496002645263704878972n, + "asBuffer": { + "data": [ + 46, + 249, + 242, + 105, + 89, + 165, + 243, + 63, + 124, + 122, + 247, + 119, + 178, + 120, + 16, + 24, + 132, + 29, + 204, + 145, + 19, + 237, + 106, + 128, + 127, + 135, + 123, + 4, + 249, + 87, + 111, + 124, + ], + "type": "Buffer", + }, + }, + "contractTreeRoot": Fr { + "asBigInt": 5293563243298452294329687170607903856184752120049447872889625129684495926248n, + "asBuffer": { + "data": [ + 11, + 180, + 12, + 245, + 105, + 52, + 84, + 117, + 104, + 162, + 103, + 161, + 194, + 102, + 139, + 24, + 31, + 80, + 161, + 203, + 22, + 166, + 214, + 226, + 5, + 172, + 197, + 67, + 241, + 50, + 131, + 232, + ], + "type": "Buffer", + }, + }, + "globalVariablesHash": Fr { + "asBigInt": 7952078762465698624974698704580114660240621367204697569325144091506842930963n, + "asBuffer": { + "data": [ + 17, + 148, + 183, + 146, + 144, + 156, + 92, + 87, + 92, + 123, + 134, + 8, + 169, + 231, + 228, + 140, + 3, + 147, + 126, + 63, + 252, + 70, + 112, + 80, + 194, + 218, + 79, + 237, + 149, + 26, + 15, + 19, + ], + "type": "Buffer", + }, + }, + "l1ToL2MessagesTreeRoot": Fr { + "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, + "asBuffer": { + "data": [ + 24, + 100, + 252, + 218, + 168, + 15, + 242, + 113, + 145, + 84, + 250, + 124, + 138, + 144, + 80, + 102, + 41, + 114, + 112, + 113, + 104, + 214, + 158, + 172, + 157, + 182, + 253, + 49, + 16, + 130, + 159, + 128, + ], + "type": "Buffer", + }, + }, + "noteHashTreeRoot": Fr { + "asBigInt": 13456416487495936025137262152176817403686146401482537158236896741637640639853n, + "asBuffer": { + "data": [ + 29, + 192, + 15, + 212, + 4, + 45, + 65, + 21, + 36, + 204, + 155, + 42, + 11, + 173, + 98, + 39, + 238, + 99, + 89, + 255, + 206, + 117, + 75, + 44, + 172, + 129, + 128, + 168, + 46, + 207, + 85, + 109, + ], + "type": "Buffer", + }, + }, + "nullifierTreeRoot": Fr { + "asBigInt": 16443222603089018571645509412600324577768319305078929397179037535489308095991n, + "asBuffer": { + "data": [ + 36, + 90, + 136, + 192, + 42, + 61, + 149, + 121, + 125, + 41, + 102, + 67, + 143, + 211, + 97, + 108, + 215, + 47, + 178, + 200, + 49, + 213, + 172, + 219, + 70, + 248, + 238, + 188, + 156, + 185, + 245, + 247, + ], + "type": "Buffer", }, }, - ], - "newL2ToL1Msgs": [ - Fr { + "privateKernelVkTreeRoot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41540,8 +32908,50 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - Fr { - "asBigInt": 0n, + "publicDataTreeRoot": Fr { + "asBigInt": 13940981882517738105981911020707002777955674699044852872880094407282064863456n, + "asBuffer": { + "data": [ + 30, + 210, + 80, + 237, + 115, + 219, + 110, + 112, + 128, + 92, + 78, + 252, + 240, + 5, + 110, + 134, + 149, + 183, + 156, + 211, + 186, + 65, + 142, + 130, + 124, + 24, + 77, + 238, + 108, + 111, + 176, + 224, + ], + "type": "Buffer", + }, + }, + }, + "txContext": TxContext { + "chainId": Fr { + "asBigInt": 31337n, "asBuffer": { "data": [ 0, @@ -41574,300 +32984,14 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, + 122, + 105, ], "type": "Buffer", }, }, - ], - "newNullifiers": [ - SideEffectLinkedToNoteHash { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "noteHash": Fr { - "asBigInt": 8484096034934948435255574359484396298079585651803261848652933515063599896872n, - "asBuffer": { - "data": [ - 18, - 193, - 212, - 3, - 245, - 65, - 195, - 224, - 45, - 57, - 138, - 0, - 98, - 69, - 17, - 113, - 46, - 157, - 245, - 142, - 13, - 86, - 87, - 121, - 52, - 71, - 164, - 204, - 128, - 9, - 25, - 40, - ], - "type": "Buffer", - }, - }, - "value": Fr { - "asBigInt": 8484096034934948435255574359484396298079585651803261848652933515063599896872n, - "asBuffer": { - "data": [ - 18, - 193, - 212, - 3, - 245, - 65, - 195, - 224, - 45, - 57, - 138, - 0, - 98, - 69, - 17, - 113, - 46, - 157, - 245, - 142, - 13, - 86, - 87, - 121, - 52, - 71, - 164, - 204, - 128, - 9, - 25, - 40, - ], - "type": "Buffer", - }, - }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "noteHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "noteHash": Fr { + "contractDeploymentData": ContractDeploymentData { + "constructorVkHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41907,7 +33031,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "contractAddressSalt": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -41947,89 +33071,90 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "deployerPublicKey": Point { + "kind": "point", + "x": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "noteHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "y": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - "value": Fr { + "functionTreeRoot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42069,11 +33194,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -42095,24 +33217,62 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, - "noteHash": Fr { - "asBigInt": 0n, + }, + "isContractDeploymentTx": false, + "isFeePaymentTx": false, + "isRebatePaymentTx": false, + "version": Fr { + "asBigInt": 1n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + ], + "type": "Buffer", + }, + }, + }, + }, + "end": CombinedAccumulatedData { + "aggregationObject": AggregationObject { + "hasData": false, + "p0": G1AffineElement { + "x": Fq { + "asBigInt": 1n, "asBuffer": { "data": [ 0, @@ -42146,13 +33306,13 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, + 1, ], "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, + "y": Fq { + "asBigInt": 2n, "asBuffer": { "data": [ 0, @@ -42186,15 +33346,15 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, + 2, ], "type": "Buffer", }, }, }, - SideEffectLinkedToNoteHash { - "counter": Fr { - "asBigInt": 0n, + "p1": G1AffineElement { + "x": Fq { + "asBigInt": 1n, "asBuffer": { "data": [ 0, @@ -42228,13 +33388,13 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, + 1, ], "type": "Buffer", }, }, - "noteHash": Fr { - "asBigInt": 0n, + "y": Fq { + "asBigInt": 2n, "asBuffer": { "data": [ 0, @@ -42268,12 +33428,157 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, + 2, ], "type": "Buffer", }, }, - "value": Fr { + }, + "proofWitnessIndices": [ + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + ], + "publicInputs": [], + }, + "encryptedLogPreimagesLength": Fr { + "asBigInt": 12n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 12, + ], + "type": "Buffer", + }, + }, + "encryptedLogsHash": [ + Fr { + "asBigInt": 10654334908029642268226261618939201427n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 8, + 3, + 243, + 68, + 123, + 49, + 16, + 181, + 87, + 150, + 38, + 199, + 134, + 29, + 7, + 147, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 133338275028334099210129003420909668908n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 100, + 80, + 4, + 133, + 110, + 109, + 121, + 70, + 184, + 235, + 48, + 170, + 28, + 9, + 138, + 44, + ], + "type": "Buffer", + }, + }, + ], + "newCommitments": [ + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42313,9 +33618,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42355,7 +33658,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42436,7 +33741,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -42477,7 +33782,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42517,7 +33822,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42557,9 +33864,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42599,7 +33904,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42680,7 +33987,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -42721,46 +34028,6 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -42802,7 +34069,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -42843,7 +34110,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42883,7 +34150,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42923,9 +34192,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -42965,7 +34232,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43046,7 +34315,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -43087,7 +34356,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43127,7 +34396,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43167,9 +34438,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43209,7 +34478,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43290,7 +34561,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -43331,7 +34602,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43371,7 +34642,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43411,9 +34684,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43453,7 +34724,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43534,7 +34807,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -43575,7 +34848,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43615,7 +34888,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43655,9 +34930,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43697,7 +34970,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43778,7 +35053,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -43819,7 +35094,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43859,7 +35134,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43899,9 +35176,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -43941,7 +35216,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44022,7 +35299,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -44063,7 +35340,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44103,7 +35380,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44143,9 +35422,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44185,7 +35462,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44266,7 +35545,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -44307,7 +35586,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44347,7 +35626,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44387,9 +35668,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44429,7 +35708,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44510,7 +35791,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -44551,7 +35832,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44591,7 +35872,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44631,9 +35914,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44673,7 +35954,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44754,7 +36037,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -44795,7 +36078,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44835,7 +36118,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44875,9 +36160,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44917,7 +36200,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -44998,7 +36283,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -45039,7 +36324,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45079,7 +36364,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45119,9 +36406,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45161,7 +36446,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45242,7 +36529,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -45283,7 +36570,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45323,7 +36610,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45363,9 +36652,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45405,7 +36692,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45486,7 +36775,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -45527,7 +36816,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45567,7 +36856,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45607,9 +36898,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45649,7 +36938,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45730,7 +37021,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -45771,7 +37062,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45811,7 +37102,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45851,9 +37144,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45893,7 +37184,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -45974,7 +37267,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -46015,7 +37308,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46055,7 +37348,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46095,9 +37390,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46137,7 +37430,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46218,7 +37513,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -46259,7 +37554,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46299,7 +37594,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46339,9 +37636,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46381,7 +37676,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46462,7 +37759,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -46503,7 +37800,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46543,7 +37840,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46583,9 +37882,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46625,7 +37922,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46706,7 +38005,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -46747,7 +38046,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46787,7 +38086,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46827,9 +38128,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46869,7 +38168,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -46950,7 +38251,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -46991,7 +38292,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47031,7 +38332,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47071,9 +38374,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47113,7 +38414,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47194,7 +38497,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -47235,7 +38538,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47275,7 +38578,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47315,9 +38620,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47357,7 +38660,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47438,7 +38743,7 @@ KernelCircuitPublicInputs { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -47479,7 +38784,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47519,7 +38824,11 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + }, + ], + "newContracts": [ + NewContractData { + "contractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47559,9 +38868,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "functionTreeRoot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47601,7 +38908,120 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "noteHash": Fr { + "portalContractAddress": EthAddress { + "buffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + ], + "newL2ToL1Msgs": [ + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + ], + "newNullifiers": [ + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -47641,8 +39061,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, + "noteHash": Fr { + "asBigInt": 1000000n, "asBuffer": { "data": [ 0, @@ -47674,9 +39094,49 @@ KernelCircuitPublicInputs { 0, 0, 0, + 15, + 66, + 64, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 392100845881711986920690467434459771564810763634304623570999539934442065012n, + "asBuffer": { + "data": [ 0, - 0, - 0, + 221, + 235, + 212, + 177, + 61, + 81, + 15, + 231, + 220, + 110, + 100, + 225, + 23, + 214, + 140, + 44, + 84, + 75, + 175, + 3, + 127, + 27, + 7, + 238, + 79, + 219, + 104, + 71, + 68, + 140, + 116, ], "type": "Buffer", }, @@ -49332,2630 +40792,2830 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "nullifiedCommitments": [ - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - ], - "optionallyRevealedData": [ - OptionallyRevealedData { - "callStackItemHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -51995,20 +43655,51 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -52030,11 +43721,23 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52075,8 +43778,8 @@ KernelCircuitPublicInputs { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52116,20 +43819,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -52151,11 +43925,63 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52196,8 +44022,8 @@ KernelCircuitPublicInputs { }, }, }, - OptionallyRevealedData { - "callStackItemHash": Fr { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52237,20 +44063,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -52272,11 +44169,23 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52316,9 +44225,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - OptionallyRevealedData { - "callStackItemHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52358,20 +44265,11 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "calledFromL1": false, - "calledFromPublicL2": false, - "functionData": FunctionData { - "isConstructor": false, - "isInternal": false, - "isPrivate": false, - "selector": FunctionSelector { - "value": 0, - }, - }, - "payFeeFromL1": false, - "payFeeFromPublicL2": false, - "portalContractAddress": EthAddress { - "buffer": { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -52393,11 +44291,23 @@ KernelCircuitPublicInputs { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "vkHash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52437,93 +44347,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "privateCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52563,7 +44387,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52603,7 +44429,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52643,7 +44469,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52684,90 +44510,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52807,7 +44551,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52847,7 +44591,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52887,7 +44631,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -52927,91 +44673,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53051,7 +44713,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53091,7 +44753,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53131,7 +44795,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53171,91 +44835,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53295,7 +44875,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53335,7 +44917,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53375,7 +44957,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53411,95 +44993,13 @@ KernelCircuitPublicInputs { 0, 0, 0, - ], - "type": "Buffer", - }, - }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53539,7 +45039,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53579,7 +45079,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53619,7 +45119,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53659,91 +45161,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53783,7 +45201,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53823,7 +45241,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53863,7 +45283,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -53903,91 +45323,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54027,7 +45363,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54067,7 +45405,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54107,7 +45445,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54148,90 +45486,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54271,7 +45527,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54311,7 +45567,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54351,7 +45607,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54391,93 +45649,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - ], - "publicCallStack": [ - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54517,7 +45689,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54557,7 +45729,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54597,7 +45771,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54637,91 +45811,49 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54761,7 +45893,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54801,7 +45933,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54841,7 +45973,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -54881,91 +46015,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55005,7 +46055,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55045,7 +46095,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55085,7 +46137,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55125,91 +46177,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55249,7 +46217,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55289,7 +46259,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55329,7 +46299,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55370,90 +46340,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55493,7 +46381,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55533,7 +46421,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55573,7 +46461,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55613,91 +46503,47 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "callerContractAddress": AztecAddress { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55737,7 +46583,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55777,7 +46625,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55817,7 +46665,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55858,90 +46706,8 @@ KernelCircuitPublicInputs { }, }, }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - "callerContractAddress": AztecAddress { + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -55981,7 +46747,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56021,7 +46787,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56061,7 +46827,11 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { + }, + ], + "optionallyRevealedData": [ + OptionallyRevealedData { + "callStackItemHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56101,93 +46871,20 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - CallRequest { - "callerContext": CallerContext { - "msgSender": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "storageContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, }, }, - "callerContractAddress": AztecAddress { - "asBigInt": 0n, - "asBuffer": { + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -56209,23 +46906,11 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, - "endSideEffectCounter": Fr { + "vkHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56265,7 +46950,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "hash": Fr { + }, + OptionallyRevealedData { + "callStackItemHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56305,9 +46992,20 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "startSideEffectCounter": Fr { - "asBigInt": 0n, - "asBuffer": { + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -56329,27 +47027,11 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, - }, - ], - "publicDataReads": [ - PublicDataRead { - "leafSlot": Fr { + "vkHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56389,8 +47071,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + OptionallyRevealedData { + "callStackItemHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56430,11 +47113,20 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { - "asBigInt": 0n, - "asBuffer": { + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -56456,24 +47148,11 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "vkHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56514,8 +47193,8 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafSlot": Fr { + OptionallyRevealedData { + "callStackItemHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56555,10 +47234,20 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { + "calledFromL1": false, + "calledFromPublicL2": false, + "functionData": FunctionData { + "isConstructor": false, + "isInternal": false, + "isPrivate": false, + "selector": FunctionSelector { + "value": 0, + }, + }, + "payFeeFromL1": false, + "payFeeFromPublicL2": false, + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -56580,25 +47269,11 @@ KernelCircuitPublicInputs { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "vkHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56638,8 +47313,93 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + }, + ], + "privateCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56679,9 +47439,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56721,8 +47479,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56762,9 +47519,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56804,50 +47559,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56887,8 +47683,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56928,9 +47723,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -56970,8 +47763,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57012,8 +47804,90 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57053,8 +47927,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57094,9 +47967,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57136,8 +48007,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57178,8 +48048,90 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57219,8 +48171,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57260,9 +48211,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57302,8 +48251,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57344,8 +48292,90 @@ KernelCircuitPublicInputs { }, }, }, - PublicDataRead { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57385,8 +48415,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57426,9 +48455,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57468,8 +48495,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57509,9 +48535,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57551,8 +48659,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57592,9 +48699,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - PublicDataRead { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57634,8 +48739,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - "value": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57676,10 +48780,90 @@ KernelCircuitPublicInputs { }, }, }, - ], - "publicDataUpdateRequests": [ - PublicDataUpdateRequest { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57719,7 +48903,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57759,7 +48943,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57799,10 +48983,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57842,7 +49023,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57882,7 +49147,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57922,10 +49187,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -57965,7 +49227,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58005,7 +49267,93 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + ], + "publicCallStack": [ + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58045,10 +49393,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58088,7 +49433,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58128,7 +49473,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58168,10 +49513,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58211,7 +49637,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58251,7 +49677,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58291,10 +49717,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58334,7 +49757,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58374,7 +49881,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58414,10 +49921,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58457,7 +49961,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58497,7 +50001,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58537,10 +50125,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58580,7 +50165,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58620,7 +50205,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58660,10 +50245,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58703,7 +50369,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58743,7 +50409,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58783,10 +50449,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58826,7 +50489,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58866,7 +50613,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58906,10 +50653,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58949,7 +50693,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -58989,7 +50733,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59029,10 +50857,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59072,7 +50897,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59112,7 +50937,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59152,10 +50977,91 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { - "leafSlot": Fr { + CallRequest { + "callerContext": CallerContext { + "msgSender": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "storageContractAddress": AztecAddress { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + "callerContractAddress": AztecAddress { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59195,7 +51101,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "endSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59235,7 +51141,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "hash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59275,10 +51181,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, - }, - PublicDataUpdateRequest { - "leafSlot": Fr { + "startSideEffectCounter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59318,7 +51221,11 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + }, + ], + "publicDataReads": [ + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59358,7 +51265,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59398,9 +51306,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "sideEffectCounter": undefined, }, - PublicDataUpdateRequest { + PublicDataRead { "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { @@ -59441,7 +51348,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59481,7 +51389,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59522,8 +51432,48 @@ KernelCircuitPublicInputs { }, }, "sideEffectCounter": undefined, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, }, - PublicDataUpdateRequest { + PublicDataRead { "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { @@ -59564,7 +51514,8 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "newValue": Fr { + "sideEffectCounter": undefined, + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59604,7 +51555,9 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "oldValue": Fr { + }, + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59645,214 +51598,6 @@ KernelCircuitPublicInputs { }, }, "sideEffectCounter": undefined, - }, - ], - "readRequests": [ - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -59894,8 +51639,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -59935,6 +51680,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -59976,8 +51722,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60017,6 +51763,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60058,8 +51805,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60099,6 +51846,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60140,8 +51888,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60181,6 +51929,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60222,8 +51971,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60263,6 +52012,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60304,8 +52054,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60345,6 +52095,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60386,8 +52137,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60427,6 +52178,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60468,8 +52220,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60509,6 +52261,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60550,8 +52303,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60591,6 +52344,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60632,8 +52386,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60673,6 +52427,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60714,8 +52469,8 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + PublicDataRead { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60755,6 +52510,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -60796,8 +52552,10 @@ KernelCircuitPublicInputs { }, }, }, - SideEffect { - "counter": Fr { + ], + "publicDataUpdateRequests": [ + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60837,7 +52595,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60877,9 +52635,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60919,7 +52675,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -60959,9 +52718,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61001,7 +52758,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61041,9 +52798,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61083,7 +52841,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61123,9 +52881,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61165,7 +52921,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61205,9 +52964,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61247,7 +53004,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61287,9 +53044,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61329,7 +53087,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61369,9 +53127,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61411,7 +53167,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61451,9 +53210,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61493,7 +53250,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61533,9 +53290,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61575,7 +53333,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61615,9 +53373,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61657,7 +53413,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61697,9 +53456,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61739,7 +53496,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61779,9 +53536,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61821,7 +53579,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61861,9 +53619,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61903,7 +53659,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61943,9 +53702,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -61985,7 +53742,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62025,9 +53782,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62067,7 +53825,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62107,9 +53865,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62149,7 +53905,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62189,9 +53948,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62231,7 +53988,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62271,9 +54028,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62313,7 +54071,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62353,9 +54111,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62395,7 +54151,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "sideEffectCounter": undefined, + }, + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62435,9 +54194,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { + "newValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62477,7 +54234,7 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62517,9 +54274,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62559,7 +54317,47 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62599,9 +54397,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, - SideEffect { - "counter": Fr { + PublicDataUpdateRequest { + "leafSlot": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62641,7 +54440,47 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, - "value": Fr { + "newValue": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "oldValue": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -62681,7 +54520,10 @@ KernelCircuitPublicInputs { "type": "Buffer", }, }, + "sideEffectCounter": undefined, }, + ], + "readRequests": [ SideEffect { "counter": Fr { "asBigInt": 0n, @@ -70139,711 +61981,343 @@ KernelCircuitPublicInputs { 0, 0, 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "unencryptedLogPreimagesLength": Fr { - "asBigInt": 12n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 12, - ], - "type": "Buffer", - }, - }, - "unencryptedLogsHash": [ - Fr { - "asBigInt": 10654334908029642268226261618939201427n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8, - 3, - 243, - 68, - 123, - 49, - 16, - 181, - 87, - 150, - 38, - 199, - 134, - 29, - 7, - 147, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 133338275028334099210129003420909668908n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 100, - 80, - 4, - 133, - 110, - 109, - 121, - 70, - 184, - 235, - 48, - 170, - 28, - 9, - 138, - 44, - ], - "type": "Buffer", - }, - }, - ], - }, - "isPrivate": true, -} -`; - -exports[`Private kernel Executes private kernel ordering after a deployment 1`] = ` -KernelCircuitPublicInputsFinal { - "constants": CombinedConstantData { - "blockHeader": BlockHeader { - "archiveRoot": Fr { - "asBigInt": 10561895175368852737061915973188839857007468377789560793687187642867659280638n, - "asBuffer": { - "data": [ - 23, - 89, - 210, - 33, - 121, - 84, - 25, - 80, - 63, - 134, - 192, - 50, - 232, - 248, - 118, - 47, - 43, - 115, - 158, - 116, - 131, - 80, - 153, - 88, - 75, - 101, - 49, - 245, - 242, - 115, - 144, - 254, - ], - "type": "Buffer", - }, - }, - "contractTreeRoot": Fr { - "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, - "asBuffer": { - "data": [ - 24, - 100, - 252, - 218, - 168, - 15, - 242, - 113, - 145, - 84, - 250, - 124, - 138, - 144, - 80, - 102, - 41, - 114, - 112, - 113, - 104, - 214, - 158, - 172, - 157, - 182, - 253, - 49, - 16, - 130, - 159, - 128, - ], - "type": "Buffer", - }, - }, - "globalVariablesHash": Fr { - "asBigInt": 14483571110897883400419490783710119837459619381345566311432831352122387488397n, - "asBuffer": { - "data": [ - 32, - 5, - 105, - 38, - 124, - 15, - 115, - 172, - 137, - 170, - 164, - 20, - 35, - 147, - 152, - 219, - 148, - 69, - 221, - 74, - 211, - 168, - 207, - 55, - 1, - 92, - 213, - 91, - 141, - 76, - 94, - 141, - ], - "type": "Buffer", - }, - }, - "l1ToL2MessagesTreeRoot": Fr { - "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, - "asBuffer": { - "data": [ - 24, - 100, - 252, - 218, - 168, - 15, - 242, - 113, - 145, - 84, - 250, - 124, - 138, - 144, - 80, - 102, - 41, - 114, - 112, - 113, - 104, - 214, - 158, - 172, - 157, - 182, - 253, - 49, - 16, - 130, - 159, - 128, - ], - "type": "Buffer", - }, - }, - "noteHashTreeRoot": Fr { - "asBigInt": 10127882181290008410413105921460858232892226592306749913988016925836213768395n, - "asBuffer": { - "data": [ - 22, - 100, - 45, - 156, - 205, - 131, - 70, - 196, - 3, - 170, - 76, - 63, - 164, - 81, - 23, - 139, - 34, - 83, - 74, - 39, - 3, - 92, - 218, - 166, - 236, - 52, - 174, - 83, - 178, - 156, - 80, - 203, - ], - "type": "Buffer", - }, - }, - "nullifierTreeRoot": Fr { - "asBigInt": 5342309968596764527275045470866818007603635181649161546597860399861598581368n, - "asBuffer": { - "data": [ - 11, - 207, - 163, - 233, - 241, - 168, - 146, - 46, - 233, - 44, - 109, - 201, - 100, - 214, - 89, - 89, - 7, - 193, - 128, - 74, - 134, - 117, - 55, - 116, - 50, - 43, - 70, - 143, - 105, - 212, - 242, - 120, - ], - "type": "Buffer", + ], + "type": "Buffer", + }, }, }, - "privateKernelVkTreeRoot": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "publicDataTreeRoot": Fr { - "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, - "asBuffer": { - "data": [ - 12, - 202, - 175, - 220, - 156, - 53, - 55, - 67, - 151, - 13, - 78, - 48, - 90, - 231, - 54, - 65, - 206, - 105, - 79, - 7, - 219, - 103, - 136, - 109, - 39, - 105, - 201, - 237, - 136, - 233, - 105, - 216, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - }, - "txContext": TxContext { - "chainId": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - "contractDeploymentData": ContractDeploymentData { - "constructorVkHash": Fr { - "asBigInt": 4946902893997605007258693448883037341256770656195244398892734919432197304822n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 10, - 239, - 217, - 10, - 105, - 166, - 67, - 50, - 76, - 123, - 240, - 169, - 189, - 59, - 35, - 173, - 160, - 144, - 173, - 136, - 55, - 115, - 253, - 240, - 176, - 173, - 82, - 169, - 247, - 214, - 241, - 246, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "contractAddressSalt": Fr { - "asBigInt": 13918524182926832455178861490988425129196887976468020413394338716458484696156n, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 30, - 197, - 155, - 3, - 19, - 250, - 80, - 67, - 2, - 195, - 51, - 111, - 201, - 17, - 214, - 136, - 237, - 174, - 103, - 196, - 251, - 242, - 41, - 214, - 140, - 127, - 54, - 237, - 135, - 151, - 4, - 92, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "deployerPublicKey": Point { - "kind": "point", - "x": Fr { - "asBigInt": 13513162828633936749079339485623471377790691038584182237805001838837073529635n, - "asBuffer": { - "data": [ - 29, - 224, - 45, - 218, - 202, - 198, - 210, - 244, - 39, - 229, - 240, - 211, - 206, - 89, - 215, - 41, - 79, - 20, - 98, - 128, - 69, - 93, - 212, - 197, - 130, - 37, - 78, - 11, - 76, - 37, - 75, - 35, - ], - "type": "Buffer", - }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "y": Fr { - "asBigInt": 16193209371316637857741102275574203818928254115376185574760513755303226932941n, - "asBuffer": { - "data": [ - 35, - 205, - 8, - 29, - 254, - 156, - 13, - 24, - 115, - 182, - 90, - 54, - 160, - 136, - 88, - 231, - 58, - 155, - 48, - 208, - 51, - 158, - 148, - 196, - 145, - 93, - 113, - 16, - 226, - 240, - 126, - 205, - ], - "type": "Buffer", - }, + }, + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, }, - "functionTreeRoot": Fr { - "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 12, - 173, - 59, - 83, - 145, - 228, - 10, - 248, - 116, - 62, - 16, - 83, - 192, - 21, - 225, - 106, - 186, - 198, - 16, - 10, - 139, - 145, - 117, - 18, - 192, - 131, - 203, - 76, - 187, - 140, - 204, - 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - "portalContractAddress": EthAddress { - "buffer": { + }, + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { "data": [ 0, 0, @@ -70865,62 +62339,66 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, }, - }, - "isContractDeploymentTx": true, - "isFeePaymentTx": false, - "isRebatePaymentTx": false, - "version": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - }, - }, - "end": FinalAccumulatedData { - "aggregationObject": AggregationObject { - "hasData": false, - "p0": G1AffineElement { - "x": Fq { - "asBigInt": 1n, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -70954,13 +62432,13 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - "y": Fq { - "asBigInt": 2n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -70994,15 +62472,15 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 2, + 0, ], "type": "Buffer", }, }, }, - "p1": G1AffineElement { - "x": Fq { - "asBigInt": 1n, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -71036,13 +62514,13 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 1, + 0, ], "type": "Buffer", }, }, - "y": Fq { - "asBigInt": 2n, + "value": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -71076,155 +62554,94 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 2, + 0, ], "type": "Buffer", }, }, }, - "proofWitnessIndices": [ - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3034, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - ], - "publicInputs": [], - }, - "encryptedLogPreimagesLength": Fr { - "asBigInt": 248n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 248, - ], - "type": "Buffer", - }, - }, - "encryptedLogsHash": [ - Fr { - "asBigInt": 116881760094330735023399760917603536324n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 87, - 238, - 155, - 177, - 38, - 64, - 133, - 236, - 244, - 186, - 130, - 116, - 178, - 51, - 205, - 196, - ], - "type": "Buffer", + SideEffect { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 184145148802329932417389828290829878776n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 138, - 137, - 16, - 204, - 107, - 147, - 180, - 57, - 154, - 30, - 189, - 143, - 191, - 180, - 5, - 248, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - ], - "newCommitments": [ SideEffect { "counter": Fr { "asBigInt": 0n, @@ -71267,41 +62684,41 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 3009448547919161079798226041696583891221172499459514963757313019677832133161n, + "asBigInt": 0n, "asBuffer": { "data": [ - 6, - 167, - 73, - 154, - 164, - 37, - 20, - 195, - 23, - 47, - 202, - 195, - 108, - 196, - 31, - 27, - 39, - 218, - 157, - 33, - 150, - 100, - 217, - 13, - 118, - 109, - 235, - 67, - 121, - 120, - 58, - 41, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, ], "type": "Buffer", }, @@ -73603,378 +65020,706 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + ], + "unencryptedLogPreimagesLength": Fr { + "asBigInt": 12n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 12, + ], + "type": "Buffer", + }, + }, + "unencryptedLogsHash": [ + Fr { + "asBigInt": 10654334908029642268226261618939201427n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 8, + 3, + 243, + 68, + 123, + 49, + 16, + 181, + 87, + 150, + 38, + 199, + 134, + 29, + 7, + 147, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 133338275028334099210129003420909668908n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 100, + 80, + 4, + 133, + 110, + 109, + 121, + 70, + 184, + 235, + 48, + 170, + 28, + 9, + 138, + 44, + ], + "type": "Buffer", + }, + }, + ], + }, + "isPrivate": true, +} +`; + +exports[`Private kernel Executes private kernel ordering after a deployment 1`] = ` +KernelCircuitPublicInputsFinal { + "constants": CombinedConstantData { + "blockHeader": BlockHeader { + "archiveRoot": Fr { + "asBigInt": 10561895175368852737061915973188839857007468377789560793687187642867659280638n, + "asBuffer": { + "data": [ + 23, + 89, + 210, + 33, + 121, + 84, + 25, + 80, + 63, + 134, + 192, + 50, + 232, + 248, + 118, + 47, + 43, + 115, + 158, + 116, + 131, + 80, + 153, + 88, + 75, + 101, + 49, + 245, + 242, + 115, + 144, + 254, + ], + "type": "Buffer", + }, + }, + "contractTreeRoot": Fr { + "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, + "asBuffer": { + "data": [ + 24, + 100, + 252, + 218, + 168, + 15, + 242, + 113, + 145, + 84, + 250, + 124, + 138, + 144, + 80, + 102, + 41, + 114, + 112, + 113, + 104, + 214, + 158, + 172, + 157, + 182, + 253, + 49, + 16, + 130, + 159, + 128, + ], + "type": "Buffer", + }, + }, + "globalVariablesHash": Fr { + "asBigInt": 14483571110897883400419490783710119837459619381345566311432831352122387488397n, + "asBuffer": { + "data": [ + 32, + 5, + 105, + 38, + 124, + 15, + 115, + 172, + 137, + 170, + 164, + 20, + 35, + 147, + 152, + 219, + 148, + 69, + 221, + 74, + 211, + 168, + 207, + 55, + 1, + 92, + 213, + 91, + 141, + 76, + 94, + 141, + ], + "type": "Buffer", + }, + }, + "l1ToL2MessagesTreeRoot": Fr { + "asBigInt": 11033938207523021649122316027295742559227608161317650429835019071130941169536n, + "asBuffer": { + "data": [ + 24, + 100, + 252, + 218, + 168, + 15, + 242, + 113, + 145, + 84, + 250, + 124, + 138, + 144, + 80, + 102, + 41, + 114, + 112, + 113, + 104, + 214, + 158, + 172, + 157, + 182, + 253, + 49, + 16, + 130, + 159, + 128, + ], + "type": "Buffer", + }, + }, + "noteHashTreeRoot": Fr { + "asBigInt": 10127882181290008410413105921460858232892226592306749913988016925836213768395n, + "asBuffer": { + "data": [ + 22, + 100, + 45, + 156, + 205, + 131, + 70, + 196, + 3, + 170, + 76, + 63, + 164, + 81, + 23, + 139, + 34, + 83, + 74, + 39, + 3, + 92, + 218, + 166, + 236, + 52, + 174, + 83, + 178, + 156, + 80, + 203, + ], + "type": "Buffer", }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + "nullifierTreeRoot": Fr { + "asBigInt": 5342309968596764527275045470866818007603635181649161546597860399861598581368n, + "asBuffer": { + "data": [ + 11, + 207, + 163, + 233, + 241, + 168, + 146, + 46, + 233, + 44, + 109, + 201, + 100, + 214, + 89, + 89, + 7, + 193, + 128, + 74, + 134, + 117, + 55, + 116, + 50, + 43, + 70, + 143, + 105, + 212, + 242, + 120, + ], + "type": "Buffer", }, }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + "privateKernelVkTreeRoot": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + "publicDataTreeRoot": Fr { + "asBigInt": 5785871043333994658400733180052743689641713274194136017445890613179954325976n, + "asBuffer": { + "data": [ + 12, + 202, + 175, + 220, + 156, + 53, + 55, + 67, + 151, + 13, + 78, + 48, + 90, + 231, + 54, + 65, + 206, + 105, + 79, + 7, + 219, + 103, + 136, + 109, + 39, + 105, + 201, + 237, + 136, + 233, + 105, + 216, + ], + "type": "Buffer", }, }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, + }, + "txContext": TxContext { + "chainId": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", }, - "value": Fr { - "asBigInt": 0n, + }, + "contractDeploymentData": ContractDeploymentData { + "constructorVkHash": Fr { + "asBigInt": 4946902893997605007258693448883037341256770656195244398892734919432197304822n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 10, + 239, + 217, + 10, + 105, + 166, + 67, + 50, + 76, + 123, + 240, + 169, + 189, + 59, + 35, + 173, + 160, + 144, + 173, + 136, + 55, + 115, + 253, + 240, + 176, + 173, + 82, + 169, + 247, + 214, + 241, + 246, ], "type": "Buffer", }, }, - }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, + "contractAddressSalt": Fr { + "asBigInt": 13918524182926832455178861490988425129196887976468020413394338716458484696156n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 30, + 197, + 155, + 3, + 19, + 250, + 80, + 67, + 2, + 195, + 51, + 111, + 201, + 17, + 214, + 136, + 237, + 174, + 103, + 196, + 251, + 242, + 41, + 214, + 140, + 127, + 54, + 237, + 135, + 151, + 4, + 92, ], "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "deployerPublicKey": Point { + "kind": "point", + "x": Fr { + "asBigInt": 13513162828633936749079339485623471377790691038584182237805001838837073529635n, + "asBuffer": { + "data": [ + 29, + 224, + 45, + 218, + 202, + 198, + 210, + 244, + 39, + 229, + 240, + 211, + 206, + 89, + 215, + 41, + 79, + 20, + 98, + 128, + 69, + 93, + 212, + 197, + 130, + 37, + 78, + 11, + 76, + 37, + 75, + 35, + ], + "type": "Buffer", + }, + }, + "y": Fr { + "asBigInt": 16193209371316637857741102275574203818928254115376185574760513755303226932941n, + "asBuffer": { + "data": [ + 35, + 205, + 8, + 29, + 254, + 156, + 13, + 24, + 115, + 182, + 90, + 54, + 160, + 136, + 88, + 231, + 58, + 155, + 48, + 208, + 51, + 158, + 148, + 196, + 145, + 93, + 113, + 16, + 226, + 240, + 126, + 205, + ], + "type": "Buffer", + }, }, }, - }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, + "functionTreeRoot": Fr { + "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 12, + 173, + 59, + 83, + 145, + 228, + 10, + 248, + 116, + 62, + 16, + 83, + 192, + 21, + 225, + 106, + 186, + 198, + 16, + 10, + 139, + 145, + 117, + 18, + 192, + 131, + 203, + 76, + 187, + 140, + 204, + 3, ], "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, - "asBuffer": { + "portalContractAddress": EthAddress { + "buffer": { "data": [ 0, 0, @@ -73996,26 +65741,62 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, ], "type": "Buffer", }, }, }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, + "isContractDeploymentTx": true, + "isFeePaymentTx": false, + "isRebatePaymentTx": false, + "version": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + }, + }, + "end": FinalAccumulatedData { + "aggregationObject": AggregationObject { + "hasData": false, + "p0": G1AffineElement { + "x": Fq { + "asBigInt": 1n, "asBuffer": { "data": [ 0, @@ -74049,13 +65830,13 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, + 1, ], "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, + "y": Fq { + "asBigInt": 2n, "asBuffer": { "data": [ 0, @@ -74089,15 +65870,15 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, + 2, ], "type": "Buffer", }, }, }, - SideEffect { - "counter": Fr { - "asBigInt": 0n, + "p1": G1AffineElement { + "x": Fq { + "asBigInt": 1n, "asBuffer": { "data": [ 0, @@ -74131,13 +65912,13 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, + 1, ], "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, + "y": Fq { + "asBigInt": 2n, "asBuffer": { "data": [ 0, @@ -74171,12 +65952,155 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, + 2, ], "type": "Buffer", }, }, }, + "proofWitnessIndices": [ + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + ], + "publicInputs": [], + }, + "encryptedLogPreimagesLength": Fr { + "asBigInt": 248n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 248, + ], + "type": "Buffer", + }, + }, + "encryptedLogsHash": [ + Fr { + "asBigInt": 116881760094330735023399760917603536324n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 87, + 238, + 155, + 177, + 38, + 64, + 133, + 236, + 244, + 186, + 130, + 116, + 178, + 51, + 205, + 196, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 184145148802329932417389828290829878776n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 138, + 137, + 16, + 204, + 107, + 147, + 180, + 57, + 154, + 30, + 189, + 143, + 191, + 180, + 5, + 248, + ], + "type": "Buffer", + }, + }, + ], + "newCommitments": [ SideEffect { "counter": Fr { "asBigInt": 0n, @@ -74219,41 +66143,41 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 0n, + "asBigInt": 3009448547919161079798226041696583891221172499459514963757313019677832133161n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 6, + 167, + 73, + 154, + 164, + 37, + 20, + 195, + 23, + 47, + 202, + 195, + 108, + 196, + 31, + 27, + 39, + 218, + 157, + 33, + 150, + 100, + 217, + 13, + 118, + 109, + 235, + 67, + 121, + 120, + 58, + 41, ], "type": "Buffer", }, @@ -76473,92 +68397,23 @@ KernelCircuitPublicInputsFinal { }, }, }, - ], - "newContracts": [ - NewContractData { - "contractAddress": AztecAddress { - "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, - "asBuffer": { - "data": [ - 37, - 226, - 192, - 23, - 245, - 218, - 31, - 153, - 68, - 1, - 230, - 29, - 38, - 190, - 67, - 94, - 60, - 250, - 38, - 239, - 238, - 120, - 76, - 107, - 78, - 148, - 127, - 118, - 81, - 189, - 65, - 4, - ], - "type": "Buffer", - }, - }, - "functionTreeRoot": Fr { - "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + SideEffect { + "counter": Fr { + "asBigInt": 0n, "asBuffer": { "data": [ - 12, - 173, - 59, - 83, - 145, - 228, - 10, - 248, - 116, - 62, - 16, - 83, - 192, - 21, - 225, - 106, - 186, - 198, - 16, - 10, - 139, - 145, - 117, - 18, - 192, - 131, - 203, - 76, - 187, - 140, - 204, - 3, - ], - "type": "Buffer", - }, - }, - "portalContractAddress": EthAddress { - "buffer": { - "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -76583,93 +68438,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - ], - "newL2ToL1Msgs": [ - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - ], - "newNullifiers": [ - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -76709,7 +68478,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -76750,48 +68521,6 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 7094590644143379362066385400655107720501862419669243795306142485975929345465n, - "asBuffer": { - "data": [ - 15, - 175, - 101, - 96, - 137, - 229, - 168, - 211, - 33, - 182, - 79, - 66, - 15, - 192, - 8, - 0, - 87, - 54, - 160, - 180, - 240, - 184, - 88, - 136, - 145, - 36, - 19, - 146, - 200, - 38, - 85, - 185, - ], - "type": "Buffer", - }, - }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -76831,7 +68560,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -76872,48 +68603,6 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 131391450486342918604555900920288880952936359657946230216264970318333633026n, - "asBuffer": { - "data": [ - 0, - 74, - 93, - 107, - 195, - 78, - 132, - 197, - 163, - 215, - 166, - 37, - 163, - 119, - 47, - 77, - 47, - 132, - 199, - 212, - 102, - 55, - 105, - 30, - 246, - 78, - 226, - 113, - 30, - 108, - 98, - 2, - ], - "type": "Buffer", - }, - }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -76953,7 +68642,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -76994,48 +68685,6 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 11322578994265849565401386951246010528140686424276775038536393177707801557130n, - "asBuffer": { - "data": [ - 25, - 8, - 90, - 68, - 120, - 196, - 170, - 57, - 148, - 212, - 165, - 147, - 94, - 175, - 94, - 13, - 88, - 114, - 106, - 117, - 141, - 57, - 138, - 151, - 246, - 52, - 223, - 34, - 211, - 61, - 56, - 138, - ], - "type": "Buffer", - }, - }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77075,7 +68724,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77156,7 +68807,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -77197,46 +68848,6 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -77278,7 +68889,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -77319,46 +68930,6 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -77400,7 +68971,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -77441,46 +69012,6 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, "value": Fr { "asBigInt": 0n, "asBuffer": { @@ -77522,7 +69053,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -77563,7 +69094,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77603,7 +69134,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77643,9 +69176,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77685,7 +69216,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77766,7 +69299,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -77807,7 +69340,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77847,7 +69380,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77887,9 +69422,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -77929,7 +69462,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78010,7 +69545,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -78051,7 +69586,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78091,7 +69626,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78131,9 +69668,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78173,7 +69708,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78254,7 +69791,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -78295,7 +69832,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78335,7 +69872,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78375,9 +69914,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78417,7 +69954,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78498,7 +70037,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -78539,7 +70078,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78579,7 +70118,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78619,9 +70160,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78661,7 +70200,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78742,7 +70283,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -78783,7 +70324,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78823,7 +70364,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78863,9 +70406,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78905,7 +70446,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -78986,7 +70529,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -79027,7 +70570,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79067,7 +70610,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79107,9 +70652,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79149,7 +70692,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79230,7 +70775,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -79271,7 +70816,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79311,7 +70856,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79351,9 +70898,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79393,7 +70938,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79474,7 +71021,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -79515,7 +71062,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79555,7 +71102,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79595,9 +71144,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79637,7 +71184,9 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + }, + SideEffect { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79718,7 +71267,7 @@ KernelCircuitPublicInputsFinal { }, }, }, - SideEffectLinkedToNoteHash { + SideEffect { "counter": Fr { "asBigInt": 0n, "asBuffer": { @@ -79759,7 +71308,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79799,22 +71348,93 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { - "asBigInt": 0n, + }, + ], + "newContracts": [ + NewContractData { + "contractAddress": AztecAddress { + "asBigInt": 17136208615489370595324712951074318609059907391564891634353187633922419015940n, "asBuffer": { "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 37, + 226, + 192, + 23, + 245, + 218, + 31, + 153, + 68, + 1, + 230, + 29, + 38, + 190, + 67, + 94, + 60, + 250, + 38, + 239, + 238, + 120, + 76, + 107, + 78, + 148, + 127, + 118, + 81, + 189, + 65, + 4, + ], + "type": "Buffer", + }, + }, + "functionTreeRoot": Fr { + "asBigInt": 5733828181279984846924392032049330885938310333906649337231112228024374578179n, + "asBuffer": { + "data": [ + 12, + 173, + 59, + 83, + 145, + 228, + 10, + 248, + 116, + 62, + 16, + 83, + 192, + 21, + 225, + 106, + 186, + 198, + 16, + 10, + 139, + 145, + 117, + 18, + 192, + 131, + 203, + 76, + 187, + 140, + 204, + 3, + ], + "type": "Buffer", + }, + }, + "portalContractAddress": EthAddress { + "buffer": { + "data": [ 0, 0, 0, @@ -79840,6 +71460,90 @@ KernelCircuitPublicInputsFinal { }, }, }, + ], + "newL2ToL1Msgs": [ + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + ], + "newNullifiers": [ SideEffectLinkedToNoteHash { "counter": Fr { "asBigInt": 0n, @@ -79922,6 +71626,48 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { + "asBigInt": 7094590644143379362066385400655107720501862419669243795306142485975929345465n, + "asBuffer": { + "data": [ + 15, + 175, + 101, + 96, + 137, + 229, + 168, + 211, + 33, + 182, + 79, + 66, + 15, + 192, + 8, + 0, + 87, + 54, + 160, + 180, + 240, + 184, + 88, + 136, + 145, + 36, + 19, + 146, + 200, + 38, + 85, + 185, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -79961,9 +71707,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - }, - SideEffectLinkedToNoteHash { - "counter": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -80003,7 +71747,49 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "noteHash": Fr { + "value": Fr { + "asBigInt": 131391450486342918604555900920288880952936359657946230216264970318333633026n, + "asBuffer": { + "data": [ + 0, + 74, + 93, + 107, + 195, + 78, + 132, + 197, + 163, + 215, + 166, + 37, + 163, + 119, + 47, + 77, + 47, + 132, + 199, + 212, + 102, + 55, + 105, + 30, + 246, + 78, + 226, + 113, + 30, + 108, + 98, + 2, + ], + "type": "Buffer", + }, + }, + }, + SideEffectLinkedToNoteHash { + "counter": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -80043,7 +71829,7 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, - "value": Fr { + "noteHash": Fr { "asBigInt": 0n, "asBuffer": { "data": [ @@ -80083,6 +71869,46 @@ KernelCircuitPublicInputsFinal { "type": "Buffer", }, }, + "value": Fr { + "asBigInt": 11322578994265849565401386951246010528140686424276775038536393177707801557130n, + "asBuffer": { + "data": [ + 25, + 8, + 90, + 68, + 120, + 196, + 170, + 57, + 148, + 212, + 165, + 147, + 94, + 175, + 94, + 13, + 88, + 114, + 106, + 117, + 141, + 57, + 138, + 151, + 246, + 52, + 223, + 34, + 211, + 61, + 56, + 138, + ], + "type": "Buffer", + }, + }, }, SideEffectLinkedToNoteHash { "counter": Fr { @@ -84444,2598 +76270,3086 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - }, - ], - "nullifiedCommitments": [ - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 1000000n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 15, - 66, - 64, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", - }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + SideEffectLinkedToNoteHash { + "counter": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, - }, - Fr { - "asBigInt": 0n, - "asBuffer": { - "data": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - "type": "Buffer", + "noteHash": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, + }, + "value": Fr { + "asBigInt": 0n, + "asBuffer": { + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "type": "Buffer", + }, }, }, ], diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 5348bb9e487..5116e63311d 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -48,20 +48,24 @@ use dep::types::{ }, }; -pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { +pub fn validate_arrays(app_public_inputs: PrivateCircuitPublicInputs) { // Each of the following arrays is expected to be zero-padded. // In addition, some of the following arrays (new_commitments, etc...) are passed // to push_array_to_array() routines which rely on the passed arrays to be well-formed. - + validate_array(app_public_inputs.return_values); validate_struct_array(app_public_inputs.read_requests, |r: SideEffect| r.is_empty()); - validate_struct_array(app_public_inputs.new_commitments, |c: SideEffect| c.is_empty()); - validate_struct_array(app_public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_empty()); - validate_array(app_public_inputs.nullified_commitments); + validate_struct_array( + app_public_inputs.new_commitments, + |c: SideEffect| c.is_empty() + ); + validate_struct_array( + app_public_inputs.new_nullifiers, + |n: SideEffectLinkedToNoteHash| n.is_empty() + ); validate_array(app_public_inputs.private_call_stack_hashes); validate_array(app_public_inputs.public_call_stack_hashes); validate_array(app_public_inputs.new_l2_to_l1_msgs); - // encrypted_logs_hash and unencrypted_logs_hash have their own integrity checks. } @@ -75,14 +79,14 @@ pub fn validate_arrays(app_public_inputs : PrivateCircuitPublicInputs) { pub fn validate_read_requests( historical_note_hash_tree_root: Field, read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL], - read_request_membership_witnesses: [ReadRequestMembershipWitness; MAX_READ_REQUESTS_PER_CALL], + read_request_membership_witnesses: [ReadRequestMembershipWitness; MAX_READ_REQUESTS_PER_CALL] ) { // membership witnesses must resolve to the same private data root // for every request in all kernel iterations for rr_idx in 0..MAX_READ_REQUESTS_PER_CALL { let read_request = read_requests[rr_idx].value; let witness = read_request_membership_witnesses[rr_idx]; - + // A pending commitment is the one that is not yet added to note hash tree // A "transient read" is when we try to "read" a pending commitment within a transaction // between function calls, as opposed to reading the outputs of a previous transaction @@ -91,18 +95,20 @@ pub fn validate_read_requests( // We determine if it is a transient read depending on the leaf index from the membership witness // Note that the Merkle membership proof would be null and void in case of an transient read // but we use the leaf index as a placeholder to detect a 'pending note read'. - + if (read_request != 0) & (witness.is_transient == false) { let root_for_read_request = read_request_root_from_siblings(read_request, witness.leaf_index, witness.sibling_path); assert(root_for_read_request == historical_note_hash_tree_root, "note hash tree root mismatch"); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1354): do we need to enforce // that a non-transient read_request was derived from the proper/current contract address? } } } -pub fn initialize_end_values(previous_kernel : PreviousKernelData, public_inputs : &mut KernelCircuitPublicInputsBuilder) { +pub fn initialize_end_values( + previous_kernel: PreviousKernelData, + public_inputs: &mut KernelCircuitPublicInputsBuilder +) { public_inputs.constants = previous_kernel.public_inputs.constants; // Ensure the arrays are the same as previously, before we start pushing more data onto them in other @@ -113,7 +119,6 @@ pub fn initialize_end_values(previous_kernel : PreviousKernelData, public_inputs public_inputs.end.new_commitments = struct_array_to_bounded_vec(start.new_commitments, |c: SideEffect| c.is_empty(), SideEffect::empty()); public_inputs.end.new_nullifiers = struct_array_to_bounded_vec(start.new_nullifiers, |c: SideEffectLinkedToNoteHash| c.is_empty(), SideEffectLinkedToNoteHash::empty()); - public_inputs.end.nullified_commitments = array_to_bounded_vec(start.nullified_commitments); public_inputs.end.private_call_stack = struct_array_to_bounded_vec(start.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); public_inputs.end.public_call_stack = struct_array_to_bounded_vec(start.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); @@ -134,8 +139,15 @@ fn perform_static_call_checks(private_call: PrivateCallData) { let is_static_call = public_inputs.call_context.is_static_call; if is_static_call { // No state changes are allowed for static calls: - assert(is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.is_empty()), "new_commitments must be empty for static calls"); - assert(is_empty_struct_array(public_inputs.new_nullifiers, |n: SideEffectLinkedToNoteHash| n.is_empty()), "new_nullifiers must be empty for static calls"); + assert( + is_empty_struct_array(public_inputs.new_commitments, |c: SideEffect| c.is_empty()), "new_commitments must be empty for static calls" + ); + assert( + is_empty_struct_array( + public_inputs.new_nullifiers, + |n: SideEffectLinkedToNoteHash| n.is_empty() + ), "new_nullifiers must be empty for static calls" + ); } } @@ -150,9 +162,11 @@ fn is_valid_caller(request: CallRequest, private_call: PrivateCallData) -> bool fn validate_call_requests( call_requests: BoundedVec, hashes: [Field; N], - private_call: PrivateCallData, + private_call: PrivateCallData ) { - assert_eq(array_length(hashes), call_requests.len(), "call requests length does not match the expected length"); + assert_eq( + array_length(hashes), call_requests.len(), "call requests length does not match the expected length" + ); for i in 0..N { let hash = hashes[i]; if hash != 0 { @@ -174,21 +188,19 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern let new_commitments = private_call_public_inputs.new_commitments; let new_nullifiers = private_call_public_inputs.new_nullifiers; - let nullified_commitments = private_call_public_inputs.nullified_commitments; let storage_contract_address = private_call_public_inputs.call_context.storage_contract_address; - + // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) let mut siloed_read_requests: BoundedVec = BoundedVec::new(SideEffect::empty()); for i in 0..MAX_READ_REQUESTS_PER_CALL { let read_request = read_requests[i].value; let witness = read_request_membership_witnesses[i]; - if witness.is_transient & (read_request != 0) { // only forward transient to public inputs - siloed_read_requests.push(SideEffect{ - counter: read_requests[i].counter, - value: silo_commitment(storage_contract_address, read_request) - }) + if witness.is_transient & (read_request != 0) { // only forward transient to public inputs + siloed_read_requests.push( + SideEffect { counter: read_requests[i].counter, value: silo_commitment(storage_contract_address, read_request) } + ) } } public_inputs.end.read_requests.push_vec(siloed_read_requests); @@ -198,13 +210,22 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern // nullifiers let mut siloed_new_nullifiers: BoundedVec = BoundedVec::new(SideEffectLinkedToNoteHash::empty()); for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { - let new_nullifier = new_nullifiers[i].value; - if new_nullifier != 0 { - siloed_new_nullifiers.push(SideEffectLinkedToNoteHash{ - value: silo_nullifier(storage_contract_address, new_nullifier), - counter: new_nullifiers[i].counter, - note_hash: new_nullifiers[i].note_hash, - }); + let new_nullifier = new_nullifiers[i]; + if new_nullifier.value != 0 { + let siloed_note_hash = if new_nullifier.note_hash == 0 { + 0 + } else if new_nullifier.note_hash == EMPTY_NULLIFIED_COMMITMENT { + EMPTY_NULLIFIED_COMMITMENT + } else { + silo_commitment(storage_contract_address, new_nullifier.note_hash) + }; + siloed_new_nullifiers.push( + SideEffectLinkedToNoteHash { + value: silo_nullifier(storage_contract_address, new_nullifier.value), + counter: new_nullifier.counter, + note_hash: siloed_note_hash + } + ); } } public_inputs.end.new_nullifiers.push_vec(siloed_new_nullifiers); @@ -215,50 +236,36 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern let new_commitment = new_commitments[i].value; if new_commitment != 0 { siloed_new_commitments.push( - SideEffect{ - value: silo_commitment(storage_contract_address, new_commitment), - counter: new_commitments[i].counter}); + SideEffect { value: silo_commitment(storage_contract_address, new_commitment), counter: new_commitments[i].counter } + ); } } public_inputs.end.new_commitments.push_vec(siloed_new_commitments); - // nullified commitments (for matching transient nullifiers to transient commitments) - // Since every new_nullifiers entry is paired with a nullified_commitment, EMPTY - // is used here for nullified_commitments of persistable nullifiers. EMPTY will still - // take up a slot in the nullified_commitments array so that the array lines up properly - // with new_nullifiers. This is necessary since the constant-size circuit-array functions - // we use assume that the first 0-valued array entry designates the end of the array. - let mut siloed_nullified_commitments: BoundedVec = BoundedVec::new(0); - for i in 0..MAX_NEW_NULLIFIERS_PER_CALL { - // TODO(David): There are two ways to specify that a nullified commitment is empty. - // Either with 0 or the special EMPTY_NULLIFIED_COMMITMENT constant - // We do not silo when the commitment is either one of these empty states. - - let nullified_commitment_is_zero = nullified_commitments[i] == 0; - let nullified_commitment_is_empty_constant = nullified_commitments[i] == EMPTY_NULLIFIED_COMMITMENT; - let siloed_nullified_commitment = if nullified_commitment_is_zero { - 0 - } else if nullified_commitment_is_empty_constant { - EMPTY_NULLIFIED_COMMITMENT - } else { - silo_commitment(storage_contract_address, nullified_commitments[i]) - }; - - if siloed_nullified_commitment != 0 { - siloed_nullified_commitments.push(siloed_nullified_commitment); - } - } - // TODO(Kev): These operations should be carefully checked with the cpp array_push code - public_inputs.end.nullified_commitments.push_vec(siloed_nullified_commitments); - // Call stacks // Private call stack. - let private_call_stack = struct_array_to_bounded_vec(private_call.private_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); - validate_call_requests(private_call_stack, private_call_public_inputs.private_call_stack_hashes, private_call); + let private_call_stack = struct_array_to_bounded_vec( + private_call.private_call_stack, + |c: CallRequest| c.is_empty(), + CallRequest::empty() + ); + validate_call_requests( + private_call_stack, + private_call_public_inputs.private_call_stack_hashes, + private_call + ); public_inputs.end.private_call_stack.push_vec(private_call_stack); // Public call stack. - let public_call_stack = struct_array_to_bounded_vec(private_call.public_call_stack, |c: CallRequest| c.is_empty(), CallRequest::empty()); - validate_call_requests(public_call_stack, private_call_public_inputs.public_call_stack_hashes, private_call); + let public_call_stack = struct_array_to_bounded_vec( + private_call.public_call_stack, + |c: CallRequest| c.is_empty(), + CallRequest::empty() + ); + validate_call_requests( + public_call_stack, + private_call_public_inputs.public_call_stack_hashes, + private_call + ); public_inputs.end.public_call_stack.push_vec(public_call_stack); // new l2 to l1 messages @@ -268,11 +275,13 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL { let msg_is_zero = new_l2_to_l1_msgs[i] == 0; if msg_is_zero == false { - let new_l2_to_l1_msgs = compute_l2_to_l1_hash(storage_contract_address, - private_call_public_inputs.version, - portal_contract_address, - private_call_public_inputs.chain_id, - new_l2_to_l1_msgs[i]); + let new_l2_to_l1_msgs = compute_l2_to_l1_hash( + storage_contract_address, + private_call_public_inputs.version, + portal_contract_address, + private_call_public_inputs.chain_id, + new_l2_to_l1_msgs[i] + ); new_l2_to_l1_msgs_to_insert.push(new_l2_to_l1_msgs) } } @@ -287,60 +296,67 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern let previous_unencrypted_logs_hash = public_inputs.end.unencrypted_logs_hash; let current_unencrypted_logs_hash = private_call_public_inputs.unencrypted_logs_hash; public_inputs.end.unencrypted_logs_hash = compute_logs_hash(previous_unencrypted_logs_hash,current_unencrypted_logs_hash); - + // Add log preimages lengths from current iteration to accumulated lengths public_inputs.end.encrypted_log_preimages_length = public_inputs.end.encrypted_log_preimages_length + private_call_public_inputs.encrypted_log_preimages_length; public_inputs.end.unencrypted_log_preimages_length = public_inputs.end.unencrypted_log_preimages_length + private_call_public_inputs.unencrypted_log_preimages_length; } -pub fn contract_logic(private_call : PrivateCallData, public_inputs : &mut KernelCircuitPublicInputsBuilder, contract_dep_data : ContractDeploymentData, function_data : FunctionData) { +pub fn contract_logic( + private_call: PrivateCallData, + public_inputs: &mut KernelCircuitPublicInputsBuilder, + contract_dep_data: ContractDeploymentData, + function_data: FunctionData +) { let private_call_public_inputs = private_call.call_stack_item.public_inputs; let portal_contract_address = private_call.portal_contract_address; let contract_address = private_call.call_stack_item.contract_address; // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3062): Why is this using a hash function from the stdlib::recursion namespace - let private_call_vk_hash = - stdlib_recursion_verification_key_compress_native_vk(private_call.vk); + let private_call_vk_hash = stdlib_recursion_verification_key_compress_native_vk(private_call.vk); let is_contract_deployment = public_inputs.constants.tx_context.is_contract_deployment_tx; // input storage contract address must be 0 if its a constructor call and non-zero otherwise if is_contract_deployment { //TODO(https://github.com/AztecProtocol/aztec-packages/issues/3062) use locally computed private_call_vk_hash here - let constructor_hash = compute_constructor_hash(function_data, private_call_public_inputs.args_hash, contract_dep_data.constructor_vk_hash); + let constructor_hash = compute_constructor_hash( + function_data, + private_call_public_inputs.args_hash, + contract_dep_data.constructor_vk_hash + ); let new_contract_address = CompleteAddress::compute( contract_dep_data.deployer_public_key, contract_dep_data.contract_address_salt, contract_dep_data.function_tree_root, - constructor_hash, + constructor_hash ).address; - + let new_contract_data = NewContractData { contract_address: new_contract_address, portal_contract_address, - function_tree_root: contract_dep_data.function_tree_root, + function_tree_root: contract_dep_data.function_tree_root }; public_inputs.end.new_contracts.push(new_contract_data); - + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3062) VKs are mocked out for now // assert(contract_dep_data.constructor_vk_hash == private_call_vk_hash, "constructor_vk_hash doesn't match private_call_vk_hash"); - - assert(contract_address.eq(new_contract_address), "contract address supplied does not match derived address"); + + assert( + contract_address.eq(new_contract_address), "contract address supplied does not match derived address" + ); let new_contract_address_nullifier = compute_new_contract_address_hash(new_contract_address); public_inputs.end.new_nullifiers.push( - SideEffectLinkedToNoteHash{ - value: new_contract_address_nullifier, - note_hash: new_contract_address.to_field(), // check this - counter: 0, - }); + SideEffectLinkedToNoteHash { value: new_contract_address_nullifier, note_hash: EMPTY_NULLIFIED_COMMITMENT, counter: 0 } + ); } else { // non-contract deployments must specify contract address being interacted with assert(!contract_address.is_zero(), "contract address cannot be zero"); - /* We need to compute the root of the contract tree, starting from the function's VK: + /* We need to compute the root of the contract tree, starting from the function's VK: * - Compute the vk_hash (done above) * - Compute the function_leaf: hash(function_selector, is_internal, is_private, vk_hash, acir_hash) * - Hash the function_leaf with the function_leaf's sibling_path to get the function_tree_root @@ -349,22 +365,28 @@ pub fn contract_logic(private_call : PrivateCallData, public_inputs : &mut Kerne */ // The logic below ensures that the contract exists in the contracts tree - let computed_function_tree_root = function_tree_root_from_siblings(private_call.call_stack_item.function_data.selector, - private_call.call_stack_item.function_data.is_internal, - true, // is_private - private_call_vk_hash, - private_call.acir_hash, - private_call.function_leaf_membership_witness.leaf_index, - private_call.function_leaf_membership_witness.sibling_path); - - let computed_contract_tree_root = contract_tree_root_from_siblings(computed_function_tree_root, - contract_address, - portal_contract_address, - private_call.contract_leaf_membership_witness.leaf_index, - private_call.contract_leaf_membership_witness.sibling_path); + let computed_function_tree_root = function_tree_root_from_siblings( + private_call.call_stack_item.function_data.selector, + private_call.call_stack_item.function_data.is_internal, + true, // is_private + private_call_vk_hash, + private_call.acir_hash, + private_call.function_leaf_membership_witness.leaf_index, + private_call.function_leaf_membership_witness.sibling_path + ); + + let computed_contract_tree_root = contract_tree_root_from_siblings( + computed_function_tree_root, + contract_address, + portal_contract_address, + private_call.contract_leaf_membership_witness.leaf_index, + private_call.contract_leaf_membership_witness.sibling_path + ); let purported_contract_tree_root = private_call.call_stack_item.public_inputs.block_header.contract_tree_root(); - assert_eq(computed_contract_tree_root, purported_contract_tree_root, "computed_contract_tree_root does not match purported_contract_tree_root"); + assert_eq( + computed_contract_tree_root, purported_contract_tree_root, "computed_contract_tree_root does not match purported_contract_tree_root" + ); } } @@ -374,25 +396,38 @@ pub fn validate_previous_kernel_values(end: CombinedAccumulatedData) { pub fn validate_call_against_request(private_call: PrivateCallData, request: CallRequest) { let call_stack_item = private_call.call_stack_item; - assert(request.hash == call_stack_item.hash(), "calculated private_call_hash does not match provided private_call_hash at the top of the call stack"); + assert( + request.hash == call_stack_item.hash(), "calculated private_call_hash does not match provided private_call_hash at the top of the call stack" + ); let call_context = call_stack_item.public_inputs.call_context; // Ensures that if the function is internal, only the contract itself can call it. if call_stack_item.function_data.is_internal { - assert(call_context.msg_sender.eq(call_context.storage_contract_address), "call is internal but msg_sender is not self"); + assert( + call_context.msg_sender.eq(call_context.storage_contract_address), "call is internal but msg_sender is not self" + ); } if call_context.is_delegate_call { let caller_context = request.caller_context; assert(!caller_context.is_empty(), "caller context cannot be empty for delegate calls"); - assert(call_context.msg_sender.eq(caller_context.msg_sender), "call stack msg_sender does not match expected msg_sender for delegate calls"); - assert(call_context.storage_contract_address.eq(caller_context.storage_contract_address), "call stack storage address does not match expected contract address for delegate calls"); - assert(!call_stack_item.contract_address.eq(call_context.storage_contract_address), - "curent contract address must not match storage contract address for delegate calls"); + assert( + call_context.msg_sender.eq(caller_context.msg_sender), "call stack msg_sender does not match expected msg_sender for delegate calls" + ); + assert( + call_context.storage_contract_address.eq(caller_context.storage_contract_address), "call stack storage address does not match expected contract address for delegate calls" + ); + assert( + !call_stack_item.contract_address.eq(call_context.storage_contract_address), "curent contract address must not match storage contract address for delegate calls" + ); } else { let caller_contract_address = request.caller_contract_address; - assert(call_context.msg_sender.eq(caller_contract_address), "call stack msg_sender does not match caller contract address"); - assert(call_context.storage_contract_address.eq(call_stack_item.contract_address), "call stack storage address does not match expected contract address"); + assert( + call_context.msg_sender.eq(caller_contract_address), "call stack msg_sender does not match caller contract address" + ); + assert( + call_context.storage_contract_address.eq(call_stack_item.contract_address), "call stack storage address does not match expected contract address" + ); } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index fe15a8312cf..bcc8abfa724 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -71,11 +71,7 @@ impl PrivateKernelInputsInit { value: self.tx_request.hash(), note_hash: EMPTY_NULLIFIED_COMMITMENT, counter: 0, - }); - - // Push an empty nullified commitment too since each nullifier must - // be paired with a nonzero (real or "empty") nullified commitment - public_inputs.end.nullified_commitments.push(EMPTY_NULLIFIED_COMMITMENT); + }); // Note that we do not need to nullify the transaction request nonce anymore. // Should an account want to additionally use nonces for replay protection or handling cancellations, @@ -311,15 +307,6 @@ mod tests { builder.failed(); } - #[test(should_fail_with = "invalid array")] - fn input_validation_malformed_arrays_nullified_commitments() { - let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); - - builder.private_call.public_inputs.nullified_commitments.push_array([0, 9123]); - - builder.failed(); - } - #[test(should_fail_with = "invalid array")] fn input_validation_malformed_arrays_private_call_stack() { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index fe6cc2cee3b..308bdd33039 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -506,15 +506,6 @@ mod tests { builder.failed(); } - #[test(should_fail_with = "invalid array")] - fn input_validation_malformed_arrays_nullified_commitments() { - let mut builder = PrivateKernelInnerInputsBuilder::new(); - - builder.private_call.public_inputs.nullified_commitments.push_array([0, EMPTY_NULLIFIED_COMMITMENT]); - - builder.failed(); - } - #[test(should_fail_with = "invalid array")] fn input_validation_malformed_arrays_private_call_stack() { let mut builder = PrivateKernelInnerInputsBuilder::new(); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index e6dbf76538c..83020896274 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -66,13 +66,13 @@ impl PrivateKernelInputsOrdering { fn match_nullifiers_to_commitments_and_squash(self, public_inputs: &mut KernelCircuitPublicInputsBuilder) { // Remark: The commitments in public_inputs.end have already been siloed by contract address! // Match nullifiers/nullified_commitments to commitments from the previous call(s) - let nullified_commitments = public_inputs.end.nullified_commitments.storage; let mut new_commitments = public_inputs.end.new_commitments.storage; let mut new_nullifiers = public_inputs.end.new_nullifiers.storage; for n_idx in 0..MAX_NEW_NULLIFIERS_PER_TX { + let nullifier = new_nullifiers[n_idx]; // TODO - should not be able to squash the first nullifier. - let nullified_commitment = nullified_commitments[n_idx]; + let nullified_commitment = nullifier.note_hash; let nullifier_commitment_hint = self.nullifier_commitment_hints[n_idx]; let hint_pos = nullifier_commitment_hint as u64; @@ -80,7 +80,7 @@ impl PrivateKernelInputsOrdering { // nullifier in which case no attempt will be made to match it to a commitment. // Non-empty nullified_commitment implies transient nullifier which MUST be matched to a commitment below! // 0-valued nullified_commitment is empty and will be ignored - if (nullified_commitments[n_idx] != 0) & (nullified_commitments[n_idx] != EMPTY_NULLIFIED_COMMITMENT) { + if (nullified_commitment != 0) & (nullified_commitment != EMPTY_NULLIFIED_COMMITMENT) { assert(hint_pos < MAX_NEW_COMMITMENTS_PER_TX as u64, "New nullifier is transient but hint is invalid"); assert_eq(nullified_commitment, new_commitments[hint_pos].value, "Hinted commitment does not match"); // match found! @@ -149,9 +149,6 @@ impl PrivateKernelInputsOrdering { // Do this before any functions can modify the inputs. common::initialize_end_values(self.previous_kernel, &mut public_inputs); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1486): validate that `len(new_nullifiers) == - // len(nullified_commitments)` - self.match_reads_to_commitments(&mut public_inputs); self.match_nullifiers_to_commitments_and_squash(&mut public_inputs); @@ -231,7 +228,7 @@ mod tests { } pub fn nullify_transient_commitment(&mut self, nullifier_index: Field, commitment_index: Field) { - self.previous_kernel.end.nullified_commitments.storage[nullifier_index] = self.previous_kernel.end.new_commitments.get(commitment_index).value; + self.previous_kernel.end.new_nullifiers.storage[nullifier_index].note_hash = self.previous_kernel.end.new_commitments.get(commitment_index).value; self.nullifier_commitment_hints[nullifier_index] = commitment_index; } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr index c650e5047c7..8e90a9337d1 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/combined_accumulated_data.nr @@ -32,9 +32,6 @@ struct CombinedAccumulatedData { new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_TX], - // TODO: delete nullified_commitments - nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], - private_call_stack: [CallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX], public_call_stack: [CallRequest; MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX], new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_TX], @@ -61,11 +58,6 @@ struct FinalAccumulatedData { new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_TX], - // TODO: delete nullified_commitments - nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_TX], - - // For pending nullifiers, we have: - // nullifiedCommitments[j] != 0 <==> newNullifiers[j] nullifies nullifiedCommitments[j] private_call_stack: [CallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX], public_call_stack: [CallRequest; MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX], @@ -90,7 +82,6 @@ struct CombinedAccumulatedDataBuilder { new_commitments: BoundedVec, new_nullifiers: BoundedVec, - nullified_commitments: BoundedVec, private_call_stack: BoundedVec, public_call_stack: BoundedVec, @@ -122,7 +113,6 @@ impl CombinedAccumulatedDataBuilder { new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, - nullified_commitments: self.nullified_commitments.storage, private_call_stack: self.private_call_stack.storage, public_call_stack: self.public_call_stack.storage, @@ -154,7 +144,6 @@ impl CombinedAccumulatedDataBuilder { new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, - nullified_commitments: self.nullified_commitments.storage, private_call_stack: self.private_call_stack.storage, public_call_stack: self.public_call_stack.storage, @@ -170,4 +159,4 @@ impl CombinedAccumulatedDataBuilder { optionally_revealed_data: self.optionally_revealed_data, } } -} \ No newline at end of file +} diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index a059d6fe2a1..ca6f350af3c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -35,7 +35,6 @@ struct PrivateCircuitPublicInputs { new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], // todo: add the notehash to these, for squashing new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], - nullified_commitments: [Field; MAX_NEW_NULLIFIERS_PER_CALL], // todo: include counters as part of the hash? private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], @@ -75,7 +74,6 @@ impl PrivateCircuitPublicInputs { for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{ fields.push_array(self.new_nullifiers[i].serialize()); } - fields.push_array(self.nullified_commitments); fields.push_array(self.private_call_stack_hashes); fields.push_array(self.public_call_stack_hashes); fields.push_array(self.new_l2_to_l1_msgs); @@ -119,6 +117,21 @@ impl PrivateCircuitPublicInputs { fields.push_array(self.contract_deployment_data.serialize()); fields.push(self.chain_id); fields.push(self.version); + + assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH); + fields.storage } } + +#[test] +fn serialization_smoke() { + let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed(); + let _serialized = pcpi.serialize(); +} + +#[test] +fn hash_smoke() { + let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed(); + let _hashed = pcpi.hash(); +} diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index f397bca99d2..6fb0d8665ea 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -101,16 +101,16 @@ global CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6; // Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. // In other words, if the structure/size of the public inputs of a function call changes then we // should change this constant as well as the offsets in private_call_stack_item.nr -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 235; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 188; global CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3; global CONTRACT_STORAGE_READ_LENGTH: Field = 2; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; -global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 210; +global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 194; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87; -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 192; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 176; global COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; global PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr index 0efb3f14661..685cd8e861b 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr @@ -47,9 +47,9 @@ impl PreviousKernelDataBuilder { let mut end: CombinedAccumulatedDataBuilder = dep::std::unsafe::zeroed(); end.new_nullifiers.push(SideEffectLinkedToNoteHash{ value: 321, - note_hash: 0, - counter: 0}); // 0th nullifier must be non-zero. - end.nullified_commitments.push(EMPTY_NULLIFIED_COMMITMENT); + note_hash: EMPTY_NULLIFIED_COMMITMENT, + counter: 0 + }); // 0th nullifier must be non-zero. let tx_context = build_tx_context(false); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr index fcb7556f3ba..4823fd6fa51 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -34,7 +34,6 @@ struct PrivateCircuitPublicInputsBuilder { new_commitments: BoundedVec, new_nullifiers: BoundedVec, - nullified_commitments: BoundedVec, private_call_stack_hashes: BoundedVec, public_call_stack_hashes: BoundedVec, @@ -115,7 +114,6 @@ impl PrivateCircuitPublicInputsBuilder { new_commitments: self.new_commitments.storage, new_nullifiers: self.new_nullifiers.storage, - nullified_commitments: self.nullified_commitments.storage, private_call_stack_hashes: self.private_call_stack_hashes.storage, public_call_stack_hashes: self.public_call_stack_hashes.storage, @@ -135,4 +133,4 @@ impl PrivateCircuitPublicInputsBuilder { version: self.version, } } -} \ No newline at end of file +} diff --git a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex index 8f56fecf236..2b3265f3c4b 100644 --- a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex +++ b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c1d403f541c3e02d398a00624511712e9df58e0d5657793447a4cc8009192812c1d403f541c3e02d398a00624511712e9df58e0d5657793447a4cc80091928000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cf9ed41136bb778b2901df15f9fc6f8ba8af5d98e5a2987f6ea3543f871b65821c7567771cf00145ab2417a35926ecd141bc7ef996169e668fa25204ea9cfdc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb2000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f698b9b0327624dedfeccc1157e90ef8f1afdb48df0edc88a7eebe6989cbff80396172e4091d25053d94be57ef77ae90c4a6ada847b9e94500bda9730fc0fba1d509db892e1ed7285e25200e2db867550f08c5378dae55c9b9c0bbc053070c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800ee926c1883c295ad082b62585e213517d840eb2d600b946d85e2458696df4d200000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0256baaf04f8525675dcc0918f8a0a40ffd66a999dca04ed44f567a472329c9170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000000005ed8133575bc9acba41c89b1a0a37b03f207d4b8a042b0e85bdb5cc058ff7aa03a47ddb43a8c7fa24b14e91fc67a13cb7d0e42a73da18f5cbdad6312d16bb3f0d3add2818008dab491973a48f624825d113a0f78c44aa7dfc3adb5c2c3d8ef63037eca2ba33389be6422fa2fc15af40ce49d06b021341a21e19034f67c7bf720906bca100010021c7567771cf00145ab2417a35926ecd141bc7ef996169e668fa25204ea9cfdc3037eca2ba33389be6422fa2fc15af40ce49d06b021341a21e19034f67c7bf7200000000000000000000000000000000000000000000000000000000000000000906bca100000000000000000000000000000000000000000000000000000000000000000000001124bf00bac5cd7fc8570fe0e40c34b8d093801a155d53e0b478d960b3a424810000000000000000000000000000000000000000000000000000000000007a6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040f698b9b0327624dedfeccc1157e90ef8f1afdb48df0edc88a7eebe6989cbff80396172e4091d25053d94be57ef77ae90c4a6ada847b9e94500bda9730fc0fba1d509db892e1ed7285e25200e2db867550f08c5378dae55c9b9c0bbc053070c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800ee926c1883c295ad082b62585e213517d840eb2d600b946d85e2458696df4d200000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0256baaf04f8525675dcc0918f8a0a40ffd66a999dca04ed44f567a472329c9170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000000000000000000000000000000000000000000000000000000000722a1419dd08e208cd862bb66fb009fa540fb7178d01108f79eb78a891064685603f30687851ce0bc4df8e4fa8a5809643e9ae7f752a3ec1e3c120b251036c92e14ae899cd34041169f2476b70040373713d6eb363e74dca7f7f70f36d286b92f044b59fe1a64065611c9ec171fc760af4337fd13bbb833a9b021cfdde27a7f621a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550287b0f02c657f859cdfc5c124d306d2ecbf3cb775173f08f0b9f866eb53b8f4b06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa015d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a900c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b022ced19489ab456b8b6c424594cdbbae59c36dfdd4c4621c4032da2d8a9674be51df5a245ffc1da14b46fe56a605f2a47b1cff1592bab4f66cfe5dfe990af6ab52871d090615d14eadb52228c635c90e0adf31176f0814f6525c23e7d7b318c931a2b85ff013d4b2b25074297c7e44aa61f4836d0862b36db2e6ce2b5542f9ea9177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce94300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ddebd4b13d510fe7dc6e64e117d68c2c544baf037f1b07ee4fdb6847448c7400000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acdc6161f12ed1313edb1ead23fbf736117d85cdbeb2ac4117b0d8cf0e9bae01ad5bb85b11e6c1048c30661e39f241fe336191b8066405aa0c091230b0c496000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb2000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc00fd4042d411524cc9b2a0bad6227ee6359ffce754b2cac8180a82ecf556d245a88c02a3d95797d2966438fd3616cd72fb2c831d5acdb46f8eebc9cb9f5f70bb40cf56934547568a267a1c2668b181f50a1cb16a6d6e205acc543f13283e81864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f802ef9f26959a5f33f7c7af777b2781018841dcc9113ed6a807f877b04f9576f7c00000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e01194b792909c5c575c7b8608a9e7e48c03937e3ffc467050c2da4fed951a0f130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000eeab96a3e9ecd4dd083f3e76c9e2f63ab3b968d2886f943f753074d5bdaba27019f59df7c9bf1fea039b74f08c13398568e91b7d94e5e2ef05f3b7da65874d90a710c569e59ccd821057306e66935a56564993832c004e197778c5ae3a06e371584bfe43499007bffdc5ffb81c81b6e26adc5cefbab1d3a0bb37ddadd17aea50906bca10001001ad5bb85b11e6c1048c30661e39f241fe336191b8066405aa0c091230b0c49601584bfe43499007bffdc5ffb81c81b6e26adc5cefbab1d3a0bb37ddadd17aea500000000000000000000000000000000000000000000000000000000000000000906bca100000000000000000000000000000000000000000000000000000000000000000000001124bf00bac5cd7fc8570fe0e40c34b8d093801a155d53e0b478d960b3a424810000000000000000000000000000000000000000000000000000000000007a6a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000041dc00fd4042d411524cc9b2a0bad6227ee6359ffce754b2cac8180a82ecf556d245a88c02a3d95797d2966438fd3616cd72fb2c831d5acdb46f8eebc9cb9f5f70bb40cf56934547568a267a1c2668b181f50a1cb16a6d6e205acc543f13283e81864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f802ef9f26959a5f33f7c7af777b2781018841dcc9113ed6a807f877b04f9576f7c00000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e01194b792909c5c575c7b8608a9e7e48c03937e3ffc467050c2da4fed951a0f130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000000000000000000000000000000000000000000000000000000000722a1419dd08e208cd862bb66fb009fa540fb7178d01108f79eb78a891064685603f30687851ce0bc4df8e4fa8a5809643e9ae7f752a3ec1e3c120b251036c92e14ae899cd34041169f2476b70040373713d6eb363e74dca7f7f70f36d286b92f044b59fe1a64065611c9ec171fc760af4337fd13bbb833a9b021cfdde27a7f621a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed27226b3cd220f546e8e5cee1c4042fb865614459a2da969c40f28b83b7e0c2e30bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa015d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a900c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b022ced19489ab456b8b6c424594cdbbae59c36dfdd4c4621c4032da2d8a9674be51df5a245ffc1da14b46fe56a605f2a47b1cff1592bab4f66cfe5dfe990af6ab52871d090615d14eadb52228c635c90e0adf31176f0814f6525c23e7d7b318c931a2b85ff013d4b2b25074297c7e44aa61f4836d0862b36db2e6ce2b5542f9ea9177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce94300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits/src/index.test.ts b/yarn-project/noir-protocol-circuits/src/index.test.ts index d3dd434b5b3..c315087a714 100644 --- a/yarn-project/noir-protocol-circuits/src/index.test.ts +++ b/yarn-project/noir-protocol-circuits/src/index.test.ts @@ -113,9 +113,6 @@ describe('Private kernel', () => { Fr.ZERO, ); - const nullifiedCommitments = makeTuple(MAX_NEW_NULLIFIERS_PER_CALL, () => Fr.ZERO); - nullifiedCommitments[0] = Fr.fromString('0x0f4240'); - const callContext = new CallContext( AztecAddress.ZERO, contractAddress, @@ -145,7 +142,6 @@ describe('Private kernel', () => { makeTuple(MAX_READ_REQUESTS_PER_CALL, () => SideEffect.empty()), newCommitments, newNullifiers, - nullifiedCommitments, makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, () => Fr.ZERO), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, () => Fr.ZERO), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, () => Fr.ZERO), @@ -223,16 +219,11 @@ describe('Private kernel', () => { Fr.ZERO, ); - const nullifiedCommitments = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, () => Fr.ZERO); - nullifiedCommitments[0] = Fr.fromString('0x0f4240'); - nullifiedCommitments[1] = Fr.fromString('0x0f4240'); - const combinedAccumulatedData = new CombinedAccumulatedData( AggregationObject.makeFake(), makeTuple(MAX_READ_REQUESTS_PER_TX, () => SideEffect.empty()), newCommitments, newNullifiers, - nullifiedCommitments, makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, () => CallRequest.empty()), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, () => CallRequest.empty()), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, () => new Fr(0n)), diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index e65d760ba4c..c009c481931 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -551,7 +551,6 @@ export function mapPrivateCircuitPublicInputsToNoir( read_requests: mapTuple(privateCircuitPublicInputs.readRequests, mapSideEffectToNoir), new_commitments: mapTuple(privateCircuitPublicInputs.newCommitments, mapSideEffectToNoir), new_nullifiers: mapTuple(privateCircuitPublicInputs.newNullifiers, mapSideEffectLinkedToNoir), - nullified_commitments: mapTuple(privateCircuitPublicInputs.nullifiedCommitments, mapFieldToNoir), private_call_stack_hashes: mapTuple(privateCircuitPublicInputs.privateCallStackHashes, mapFieldToNoir), public_call_stack_hashes: mapTuple(privateCircuitPublicInputs.publicCallStackHashes, mapFieldToNoir), new_l2_to_l1_msgs: mapTuple(privateCircuitPublicInputs.newL2ToL1Msgs, mapFieldToNoir), @@ -801,7 +800,6 @@ export function mapCombinedAccumulatedDataFromNoir( mapTupleFromNoir(combinedAccumulatedData.read_requests, MAX_READ_REQUESTS_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(combinedAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(combinedAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), - mapTupleFromNoir(combinedAccumulatedData.nullified_commitments, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), mapTupleFromNoir( combinedAccumulatedData.private_call_stack, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, @@ -847,7 +845,6 @@ export function mapFinalAccumulatedDataFromNoir(finalAccumulatedData: FinalAccum AggregationObject.makeFake(), mapTupleFromNoir(finalAccumulatedData.new_commitments, MAX_NEW_COMMITMENTS_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(finalAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), - mapTupleFromNoir(finalAccumulatedData.nullified_commitments, MAX_NEW_NULLIFIERS_PER_TX, mapFieldFromNoir), mapTupleFromNoir( finalAccumulatedData.private_call_stack, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, @@ -885,7 +882,6 @@ export function mapCombinedAccumulatedDataToNoir( read_requests: mapTuple(combinedAccumulatedData.readRequests, mapSideEffectToNoir), new_commitments: mapTuple(combinedAccumulatedData.newCommitments, mapSideEffectToNoir), new_nullifiers: mapTuple(combinedAccumulatedData.newNullifiers, mapSideEffectLinkedToNoir), - nullified_commitments: mapTuple(combinedAccumulatedData.nullifiedCommitments, mapFieldToNoir), private_call_stack: mapTuple(combinedAccumulatedData.privateCallStack, mapCallRequestToNoir), public_call_stack: mapTuple(combinedAccumulatedData.publicCallStack, mapCallRequestToNoir), new_l2_to_l1_msgs: mapTuple(combinedAccumulatedData.newL2ToL1Msgs, mapFieldToNoir), diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts index 5159caee860..1cfac4d57f5 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts @@ -94,7 +94,6 @@ export interface PrivateCircuitPublicInputs { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack_hashes: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; @@ -202,7 +201,6 @@ export interface CombinedAccumulatedData { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts index e9edc868637..9229dfecd6c 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts @@ -85,7 +85,6 @@ export interface CombinedAccumulatedData { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; @@ -172,7 +171,6 @@ export interface PrivateCircuitPublicInputs { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack_hashes: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts index 402950ad892..a8be9f52b73 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_ordering_types.ts @@ -85,7 +85,6 @@ export interface CombinedAccumulatedData { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; @@ -164,7 +163,6 @@ export interface FinalAccumulatedData { aggregation_object: AggregationObject; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts b/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts index a72feb311bd..e1d22f2a387 100644 --- a/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/public_kernel_private_previous_types.ts @@ -85,7 +85,6 @@ export interface CombinedAccumulatedData { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts b/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts index cb23c7555e9..15846483a46 100644 --- a/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/public_kernel_public_previous_types.ts @@ -85,7 +85,6 @@ export interface CombinedAccumulatedData { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; diff --git a/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts b/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts index 75c44b894f0..560b066eec0 100644 --- a/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/rollup_base_types.ts @@ -85,7 +85,6 @@ export interface CombinedAccumulatedData { read_requests: FixedLengthArray; new_commitments: FixedLengthArray; new_nullifiers: FixedLengthArray; - nullified_commitments: FixedLengthArray; private_call_stack: FixedLengthArray; public_call_stack: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; diff --git a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts index 06ec0dd73dc..86c54d6add1 100644 --- a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts +++ b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts @@ -27,7 +27,7 @@ import { makeTuple, } from '@aztec/circuits.js'; import { padArrayEnd } from '@aztec/foundation/collection'; -import { Tuple, assertLength } from '@aztec/foundation/serialize'; +import { Tuple, assertLength, mapTuple } from '@aztec/foundation/serialize'; import { pushTestData } from '@aztec/foundation/testing'; import { KernelProofCreator, ProofCreator, ProofOutput, ProofOutputFinal } from './proof_creator.js'; @@ -173,7 +173,7 @@ export class KernelProver { ); const nullifierCommitmentHints = this.getNullifierHints( - output.publicInputs.end.nullifiedCommitments, + mapTuple(output.publicInputs.end.newNullifiers, n => n.noteHash), output.publicInputs.end.newCommitments, ); From 34f3dee4b1dfbc779421c386ae93223d031d6470 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 13:09:17 +0000 Subject: [PATCH 67/71] feat: remove EMPTY_NULLIFIED_COMMITMENT --- .../src/core/libraries/ConstantsGen.sol | 1 - .../src/client/execution_note_cache.ts | 5 ++- .../src/client/private_execution.test.ts | 3 +- yarn-project/aztec-nr/authwit/src/auth.nr | 34 +++++++++++++------ yarn-project/aztec-nr/aztec/src/context.nr | 16 +++------ .../aztec-nr/aztec/src/note/lifecycle.nr | 9 +++-- .../src/state_vars/immutable_singleton.nr | 3 +- .../aztec/src/state_vars/singleton.nr | 9 ++--- yarn-project/circuits.js/src/constants.gen.ts | 1 - .../easy_private_voting_contract/src/main.nr | 3 +- .../src/contracts/test_contract/src/main.nr | 5 ++- .../src/__snapshots__/index.test.ts.snap | 16 ++++----- .../crates/private-kernel-lib/src/common.nr | 5 +-- .../src/private_kernel_init.nr | 3 +- .../src/private_kernel_inner.nr | 1 - .../src/private_kernel_ordering.nr | 5 ++- .../crates/public-kernel-lib/src/common.nr | 1 - .../src/crates/types/src/constants.nr | 1 - .../src/tests/previous_kernel_data_builder.nr | 3 +- .../pxe/src/kernel_prover/kernel_prover.ts | 3 +- 20 files changed, 60 insertions(+), 67 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 910463bc83f..5b9bc9e09bc 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -76,7 +76,6 @@ library Constants { uint256 internal constant CONTRACT_STORAGE_READ_LENGTH = 2; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; - uint256 internal constant EMPTY_NULLIFIED_COMMITMENT = 1000000; uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 194; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 176; diff --git a/yarn-project/acir-simulator/src/client/execution_note_cache.ts b/yarn-project/acir-simulator/src/client/execution_note_cache.ts index de471d914f1..dab6e05fd97 100644 --- a/yarn-project/acir-simulator/src/client/execution_note_cache.ts +++ b/yarn-project/acir-simulator/src/client/execution_note_cache.ts @@ -1,4 +1,3 @@ -import { EMPTY_NULLIFIED_COMMITMENT } from '@aztec/circuits.js'; import { siloNullifier } from '@aztec/circuits.js/abis'; import { AztecAddress } from '@aztec/foundation/aztec-address'; import { Fr } from '@aztec/foundation/fields'; @@ -38,7 +37,7 @@ export class ExecutionNoteCache { * @param contractAddress - Contract address of the note. * @param storageSlot - Storage slot of the note. * @param innerNullifier - Inner nullifier of the note. - * @param innerNoteHash - Inner note hash of the note. If this value equals EMPTY_NULLIFIED_COMMITMENT, it means the + * @param innerNoteHash - Inner note hash of the note. If this value equals 0, it means the * note being nullified is from a previous transaction (and thus not a new note). */ public nullifyNote(contractAddress: AztecAddress, innerNullifier: Fr, innerNoteHash: Fr) { @@ -48,7 +47,7 @@ export class ExecutionNoteCache { this.nullifiers.set(contractAddress.toBigInt(), nullifiers); // Find and remove the matching new note if the emitted innerNoteHash is not empty. - if (!innerNoteHash.equals(new Fr(EMPTY_NULLIFIED_COMMITMENT))) { + if (!innerNoteHash.equals(Fr.ZERO)) { const notes = this.newNotes.get(contractAddress.toBigInt()) ?? []; const noteIndexToRemove = notes.findIndex(n => n.innerNoteHash.equals(innerNoteHash)); if (noteIndexToRemove === -1) { diff --git a/yarn-project/acir-simulator/src/client/private_execution.test.ts b/yarn-project/acir-simulator/src/client/private_execution.test.ts index 9f0ba52828a..52849aff210 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.test.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.test.ts @@ -3,7 +3,6 @@ import { CallContext, CompleteAddress, ContractDeploymentData, - EMPTY_NULLIFIED_COMMITMENT, FieldsOf, FunctionData, L1_TO_L2_MSG_TREE_HEIGHT, @@ -515,7 +514,7 @@ describe('Private Execution test suite', () => { storageSlot, nonce: Fr.ZERO, note, - innerNoteHash: new Fr(EMPTY_NULLIFIED_COMMITMENT), + innerNoteHash: Fr.ZERO, siloedNullifier: Fr.random(), index: 1n, }, diff --git a/yarn-project/aztec-nr/authwit/src/auth.nr b/yarn-project/aztec-nr/authwit/src/auth.nr index 30bb0ba5c67..5279aa53d2f 100644 --- a/yarn-project/aztec-nr/authwit/src/auth.nr +++ b/yarn-project/aztec-nr/authwit/src/auth.nr @@ -2,7 +2,6 @@ use dep::protocol_types::{ abis::function_selector::FunctionSelector, address::AztecAddress, constants::{ - EMPTY_NULLIFIED_COMMITMENT, GENERATOR_INDEX__SIGNATURE_PAYLOAD, }, hash::{ @@ -26,7 +25,7 @@ global IS_VALID_PUBLIC_SELECTOR = 0xf3661153; pub fn assert_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, message_hash: Field) { let is_valid_selector = FunctionSelector::from_field(IS_VALID_SELECTOR); let result = context.call_private_function(on_behalf_of, is_valid_selector, [message_hash])[0]; - context.push_new_nullifier(message_hash, EMPTY_NULLIFIED_COMMITMENT); + context.push_new_nullifier(message_hash, 0); assert(result == IS_VALID_SELECTOR, "Message not authorized by account"); } // docs:end:assert_valid_authwit @@ -35,8 +34,12 @@ pub fn assert_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAdd // Assert that `on_behalf_of` have authorized the current call with a valid authentication witness pub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) { // message_hash = H(caller, contract_this, selector, args_hash) - let message_hash = pedersen_hash([context.msg_sender().to_field(), context.this_address().to_field(), context.selector().to_field(), context.args_hash], - GENERATOR_INDEX__SIGNATURE_PAYLOAD); + let message_hash = pedersen_hash( + [ + context.msg_sender().to_field(), context.this_address().to_field(), context.selector().to_field(), context.args_hash + ], + GENERATOR_INDEX__SIGNATURE_PAYLOAD + ); assert_valid_authwit(context, on_behalf_of, message_hash); } // docs:end:assert_current_call_valid_authwit @@ -46,7 +49,7 @@ pub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf pub fn assert_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, message_hash: Field) { let is_valid_public_selector = FunctionSelector::from_field(IS_VALID_PUBLIC_SELECTOR); let result = context.call_public_function(on_behalf_of, is_valid_public_selector, [message_hash])[0]; - context.push_new_nullifier(message_hash, EMPTY_NULLIFIED_COMMITMENT); + context.push_new_nullifier(message_hash, 0); assert(result == IS_VALID_SELECTOR, "Message not authorized by account"); } // docs:end:assert_valid_authwit_public @@ -55,17 +58,28 @@ pub fn assert_valid_authwit_public(context: &mut PublicContext, on_behalf_of: Az // Assert that `on_behalf_of` have authorized the current call in a public context pub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) { // message_hash = H(caller, contract_this, selector, args_hash) - let message_hash = pedersen_hash([context.msg_sender().to_field(), context.this_address().to_field(), context.selector().to_field(), context.args_hash], - GENERATOR_INDEX__SIGNATURE_PAYLOAD); + let message_hash = pedersen_hash( + [ + context.msg_sender().to_field(), context.this_address().to_field(), context.selector().to_field(), context.args_hash + ], + GENERATOR_INDEX__SIGNATURE_PAYLOAD + ); assert_valid_authwit_public(context, on_behalf_of, message_hash); } // docs:end:assert_current_call_valid_authwit_public // docs:start:compute_authwit_message_hash // Compute the message hash to be used by an authentication witness -pub fn compute_authwit_message_hash(caller: AztecAddress, target: AztecAddress, selector: FunctionSelector, args: [Field; N]) -> Field { +pub fn compute_authwit_message_hash( + caller: AztecAddress, + target: AztecAddress, + selector: FunctionSelector, + args: [Field; N] +) -> Field { let args_hash = hash_args(args); - pedersen_hash([caller.to_field(), target.to_field(), selector.to_field(), args_hash], - GENERATOR_INDEX__SIGNATURE_PAYLOAD) + pedersen_hash( + [caller.to_field(), target.to_field(), selector.to_field(), args_hash], + GENERATOR_INDEX__SIGNATURE_PAYLOAD + ) } // docs:end:compute_authwit_message_hash \ No newline at end of file diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index ce63019bf64..ecb1adb0655 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -15,7 +15,6 @@ use dep::protocol_types::{ EthAddress, }, constants::{ - EMPTY_NULLIFIED_COMMITMENT, MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, @@ -193,17 +192,10 @@ impl PrivateContext { self.side_effect_counter = self.side_effect_counter + 1; } - // We never push a zero nullified_commitment as zero is used to indicate the end - // of a field array in private kernel. This routine transparently replaces a - // zero value into the special placeholder: EMPTY_NULLIFIED_COMMITMENT. pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) { - let mut non_zero_nullified = nullified_commitment; - if (non_zero_nullified == 0) { - non_zero_nullified = EMPTY_NULLIFIED_COMMITMENT; - } let side_effect = SideEffectLinkedToNoteHash { value: nullifier, - note_hash: non_zero_nullified, + note_hash: nullified_commitment, counter: self.side_effect_counter, }; self.new_nullifiers.push(side_effect); @@ -232,7 +224,7 @@ impl PrivateContext { let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_messages_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret); // Push nullifier (and the "commitment" corresponding to this can be "empty") - self.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT) + self.push_new_nullifier(nullifier, 0) } // docs:end:consume_l1_to_l2_message @@ -570,7 +562,7 @@ impl PublicContext { pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) { let side_effect = SideEffectLinkedToNoteHash { value: nullifier, - note_hash: EMPTY_NULLIFIED_COMMITMENT, // cannot nullify pending notes in public context + note_hash: 0, // cannot nullify pending notes in public context counter: self.side_effect_counter }; self.new_nullifiers.push(side_effect); @@ -588,7 +580,7 @@ impl PublicContext { let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_messages_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret); // Push nullifier (and the "commitment" corresponding to this can be "empty") - self.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT) + self.push_new_nullifier(nullifier, 0) } pub fn accumulate_encrypted_logs(&mut self, log: [Field; N]) { diff --git a/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr b/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr index b36d7e3fc06..0eb21346f8d 100644 --- a/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr +++ b/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr @@ -9,7 +9,6 @@ use crate::note::{ utils::compute_inner_note_hash, }; use crate::oracle::notes::{notify_created_note, notify_nullified_note}; -use dep::protocol_types::constants::EMPTY_NULLIFIED_COMMITMENT; pub fn create_note( context: &mut PrivateContext, @@ -53,9 +52,13 @@ pub fn create_note_hash_from_public( context.push_new_note_hash(inner_note_hash); } -pub fn destroy_note(context: &mut PrivateContext, note: Note, note_interface: NoteInterface) { +pub fn destroy_note( + context: &mut PrivateContext, + note: Note, + note_interface: NoteInterface +) { let mut nullifier = 0; - let mut nullified_commitment: Field = EMPTY_NULLIFIED_COMMITMENT; + let mut nullified_commitment: Field = 0; let compute_nullifier = note_interface.compute_nullifier; nullifier = compute_nullifier(note); diff --git a/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr b/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr index 350a4cda013..2fa991f125e 100644 --- a/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr +++ b/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr @@ -1,7 +1,6 @@ use dep::std::option::Option; use dep::protocol_types::{ address::AztecAddress, - constants::EMPTY_NULLIFIED_COMMITMENT, }; use crate::context::{PrivateContext, Context}; @@ -60,7 +59,7 @@ impl ImmutableSingleton { // Nullify the storage slot. let compute_initialization_nullifier = self.compute_initialization_nullifier; let nullifier = compute_initialization_nullifier(self.storage_slot, owner); - context.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT); + context.push_new_nullifier(nullifier, 0); create_note( context, diff --git a/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr b/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr index 4007e27f770..28cd3ae23b8 100644 --- a/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr +++ b/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr @@ -3,7 +3,6 @@ use dep::std::option::Option; use dep::protocol_types::{ address::AztecAddress, constants::{ - EMPTY_NULLIFIED_COMMITMENT, GENERATOR_INDEX__INITIALIZATION_NULLIFIER, }, hash::pedersen_hash, @@ -24,8 +23,10 @@ use crate::oracle::{ pub fn compute_singleton_initialization_nullifier(storage_slot: Field, owner: Option) -> Field { if owner.is_some() { let secret = get_secret_key(owner.unwrap_unchecked()); - pedersen_hash([storage_slot, secret.low, secret.high], - GENERATOR_INDEX__INITIALIZATION_NULLIFIER) + pedersen_hash( + [storage_slot, secret.low, secret.high], + GENERATOR_INDEX__INITIALIZATION_NULLIFIER + ) } else { pedersen_hash([storage_slot], GENERATOR_INDEX__INITIALIZATION_NULLIFIER) } @@ -77,7 +78,7 @@ impl Singleton { // Nullify the storage slot. let compute_initialization_nullifier = self.compute_initialization_nullifier; let nullifier = compute_initialization_nullifier(self.storage_slot, owner); - context.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT); + context.push_new_nullifier(nullifier, 0); create_note(context, self.storage_slot, note, self.note_interface, broadcast); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index ed242adcc77..9df77cf03cc 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -62,7 +62,6 @@ export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; -export const EMPTY_NULLIFIED_COMMITMENT = 1000000; export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 194; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 176; diff --git a/yarn-project/noir-contracts/src/contracts/easy_private_voting_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/easy_private_voting_contract/src/main.nr index b3a5b86f280..08536385f51 100644 --- a/yarn-project/noir-contracts/src/contracts/easy_private_voting_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/easy_private_voting_contract/src/main.nr @@ -2,7 +2,6 @@ contract EasyPrivateVoting { // docs:start:imports use dep::protocol_types::{ address::AztecAddress, - constants::EMPTY_NULLIFIED_COMMITMENT, }; use dep::aztec::{ context::{PrivateContext, Context}, @@ -74,7 +73,7 @@ contract EasyPrivateVoting { fn cast_vote(candidate: Field) { let secret = get_secret_key(context.msg_sender()); // get secret key of caller of function let nullifier = dep::std::hash::pedersen_hash([context.msg_sender().to_field(), secret.low, secret.high]); // compute nullifier with this secret key so others can't descrypt it - context.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT); // push nullifier + context.push_new_nullifier(nullifier, 0); // push nullifier context.call_public_function( context.this_address(), compute_selector("add_to_tally_public(Field)"), diff --git a/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr index ed5a753c26b..90b2b6b3d2a 100644 --- a/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr @@ -1,7 +1,6 @@ // A contract used for testing a random hodgepodge of small features from simulator and end-to-end tests. contract Test { use dep::std::option::Option; - use dep::protocol_types::constants::EMPTY_NULLIFIED_COMMITMENT; use dep::protocol_types::address::{ AztecAddress, EthAddress, @@ -134,13 +133,13 @@ contract Test { let note = DummyNote::new(amount, secret_hash); // Public oracle call to emit new commitment. - context.push_new_nullifier(note.get_commitment(), EMPTY_NULLIFIED_COMMITMENT); + context.push_new_nullifier(note.get_commitment(), 0); } // Forcefully emits a nullifier (for testing purposes) #[aztec(private)] fn emit_nullifier(nullifier: Field) { - context.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT); + context.push_new_nullifier(nullifier, 0); } #[aztec(private)] diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index d1de0ce4f93..3e9561d53a8 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -6538,7 +6538,7 @@ KernelCircuitPublicInputs { }, }, "noteHash": Fr { - "asBigInt": 1000000n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -6570,9 +6570,9 @@ KernelCircuitPublicInputs { 0, 0, 0, - 15, - 66, - 64, + 0, + 0, + 0, ], "type": "Buffer", }, @@ -6782,7 +6782,7 @@ KernelCircuitPublicInputs { }, }, "noteHash": Fr { - "asBigInt": 1000000n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -6814,9 +6814,9 @@ KernelCircuitPublicInputs { 0, 0, 0, - 15, - 66, - 64, + 0, + 0, + 0, ], "type": "Buffer", }, diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr index 5116e63311d..ef676202151 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/common.nr @@ -15,7 +15,6 @@ use dep::types::{ address::{AztecAddress, EthAddress}, contrakt::deployment_data::ContractDeploymentData, constants::{ - EMPTY_NULLIFIED_COMMITMENT, MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_COMMITMENTS_PER_CALL, @@ -214,8 +213,6 @@ pub fn update_end_values(private_call: PrivateCallData, public_inputs: &mut Kern if new_nullifier.value != 0 { let siloed_note_hash = if new_nullifier.note_hash == 0 { 0 - } else if new_nullifier.note_hash == EMPTY_NULLIFIED_COMMITMENT { - EMPTY_NULLIFIED_COMMITMENT } else { silo_commitment(storage_contract_address, new_nullifier.note_hash) }; @@ -350,7 +347,7 @@ pub fn contract_logic( let new_contract_address_nullifier = compute_new_contract_address_hash(new_contract_address); public_inputs.end.new_nullifiers.push( - SideEffectLinkedToNoteHash { value: new_contract_address_nullifier, note_hash: EMPTY_NULLIFIED_COMMITMENT, counter: 0 } + SideEffectLinkedToNoteHash { value: new_contract_address_nullifier, note_hash: 0, counter: 0 } ); } else { // non-contract deployments must specify contract address being interacted with diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr index bcc8abfa724..2a7d6decb5e 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_init.nr @@ -7,7 +7,6 @@ use dep::types::{ kernel_circuit_public_inputs::{KernelCircuitPublicInputs, KernelCircuitPublicInputsBuilder}, side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, - constants::EMPTY_NULLIFIED_COMMITMENT, mocked::{Proof, verify_previous_kernel_state}, transaction::request::TxRequest, utils::arrays::{is_empty_array, is_empty_struct_array}, @@ -69,7 +68,7 @@ impl PrivateKernelInputsInit { // Since it's the first iteration, we need to push the the tx hash nullifier into the `new_nullifiers` array public_inputs.end.new_nullifiers.push(SideEffectLinkedToNoteHash{ value: self.tx_request.hash(), - note_hash: EMPTY_NULLIFIED_COMMITMENT, + note_hash: 0, counter: 0, }); diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr index 308bdd33039..7ce6caf57a0 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -83,7 +83,6 @@ impl PrivateKernelInputsInner { mod tests { use crate::private_kernel_inner::PrivateKernelInputsInner; use dep::types::constants::{ - EMPTY_NULLIFIED_COMMITMENT, MAX_READ_REQUESTS_PER_CALL, MAX_NEW_COMMITMENTS_PER_TX, }; diff --git a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr index 83020896274..db8a5144533 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/private-kernel-lib/src/private_kernel_ordering.nr @@ -11,7 +11,6 @@ use dep::types::{ side_effect::{SideEffect, SideEffectLinkedToNoteHash}, }, constants::{ - EMPTY_NULLIFIED_COMMITMENT, MAX_NEW_COMMITMENTS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_READ_REQUESTS_PER_TX, @@ -76,11 +75,11 @@ impl PrivateKernelInputsOrdering { let nullifier_commitment_hint = self.nullifier_commitment_hints[n_idx]; let hint_pos = nullifier_commitment_hint as u64; - // Nullified_commitment of value `EMPTY_NULLIFIED_COMMITMENT` implies non-transient (persistable) + // Nullified_commitment of value `0` implies non-transient (persistable) // nullifier in which case no attempt will be made to match it to a commitment. // Non-empty nullified_commitment implies transient nullifier which MUST be matched to a commitment below! // 0-valued nullified_commitment is empty and will be ignored - if (nullified_commitment != 0) & (nullified_commitment != EMPTY_NULLIFIED_COMMITMENT) { + if nullified_commitment != 0 { assert(hint_pos < MAX_NEW_COMMITMENTS_PER_TX as u64, "New nullifier is transient but hint is invalid"); assert_eq(nullified_commitment, new_commitments[hint_pos].value, "Hinted commitment does not match"); // match found! diff --git a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr index f70719ebe07..f80543eacf0 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/public-kernel-lib/src/common.nr @@ -19,7 +19,6 @@ use dep::types::{ storage_update_request::StorageUpdateRequest, }, constants::{ - EMPTY_NULLIFIED_COMMITMENT, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index 6fb0d8665ea..f8adc834f94 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -107,7 +107,6 @@ global CONTRACT_STORAGE_READ_LENGTH: Field = 2; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; -global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 194; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87; global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 176; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr index 685cd8e861b..e1e0905ca20 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/previous_kernel_data_builder.nr @@ -21,7 +21,6 @@ use crate::{ transaction::context::TxContext, }; use crate::constants::{ - EMPTY_NULLIFIED_COMMITMENT, MAX_NEW_COMMITMENTS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, @@ -47,7 +46,7 @@ impl PreviousKernelDataBuilder { let mut end: CombinedAccumulatedDataBuilder = dep::std::unsafe::zeroed(); end.new_nullifiers.push(SideEffectLinkedToNoteHash{ value: 321, - note_hash: EMPTY_NULLIFIED_COMMITMENT, + note_hash: 0, counter: 0 }); // 0th nullifier must be non-zero. diff --git a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts index 86c54d6add1..a09699540cf 100644 --- a/yarn-project/pxe/src/kernel_prover/kernel_prover.ts +++ b/yarn-project/pxe/src/kernel_prover/kernel_prover.ts @@ -3,7 +3,6 @@ import { AztecAddress, CONTRACT_TREE_HEIGHT, CallRequest, - EMPTY_NULLIFIED_COMMITMENT, Fr, MAX_NEW_COMMITMENTS_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, @@ -307,7 +306,7 @@ export class KernelProver { ): Tuple { const hints = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, Fr.zero); for (let i = 0; i < MAX_NEW_NULLIFIERS_PER_TX; i++) { - if (!nullifiedCommitments[i].isZero() && !nullifiedCommitments[i].equals(new Fr(EMPTY_NULLIFIED_COMMITMENT))) { + if (!nullifiedCommitments[i].isZero()) { const equalToCommitment = (cmt: SideEffect) => cmt.value.equals(nullifiedCommitments[i]); const result = commitments.findIndex(equalToCommitment); if (result == -1) { From 2b15b873ee73b26c0dd2cf42a398969135455379 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 13:37:37 +0000 Subject: [PATCH 68/71] chore: remove extraneous log --- .../sequencer-client/src/sequencer/public_processor.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 18c1d0ca34d..85e59b19423 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -179,7 +179,6 @@ describe('public_processor', () => { }); const [processed, failed] = await processor.process([tx]); - log(failed); expect(processed).toHaveLength(1); expect(processed).toEqual([await expectedTxByHash(tx)]); From e480699a1b96151d257da5bda442c19bcd7eca10 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 13:55:25 +0000 Subject: [PATCH 69/71] chore: various chores --- noir/noir_stdlib/src/eddsa.nr | 2 +- .../src/crates/types/src/abis/private_circuit_public_inputs.nr | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/noir/noir_stdlib/src/eddsa.nr b/noir/noir_stdlib/src/eddsa.nr index 06fe94544e4..39051e23233 100644 --- a/noir/noir_stdlib/src/eddsa.nr +++ b/noir/noir_stdlib/src/eddsa.nr @@ -2,7 +2,7 @@ use crate::hash::poseidon; use crate::ec::consts::te::baby_jubjub; use crate::ec::tecurve::affine::Point as TEPoint; // Returns true if x is less than y -pub fn lt_bytes32(x: Field, y: Field) -> bool { +fn lt_bytes32(x: Field, y: Field) -> bool { let x_bytes = x.to_le_bytes(32); let y_bytes = y.to_le_bytes(32); let mut x_is_lt = false; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index ca6f350af3c..34401b13944 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -33,7 +33,6 @@ struct PrivateCircuitPublicInputs { read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL], new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], - // todo: add the notehash to these, for squashing new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], // todo: include counters as part of the hash? From 115fd0afe8cab93e0e666e80116f56972f9e4d76 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 14:16:48 +0000 Subject: [PATCH 70/71] fix: end sideffect counter in public inputs --- .../src/core/libraries/ConstantsGen.sol | 6 +- .../acir-simulator/src/acvm/deserialize.ts | 2 + .../acir-simulator/src/acvm/serialize.ts | 1 + yarn-project/aztec-nr/aztec/src/context.nr | 2 + .../src/abis/__snapshots__/abis.test.ts.snap | 58 +-- yarn-project/circuits.js/src/abis/abis.ts | 1 + yarn-project/circuits.js/src/constants.gen.ts | 6 +- .../structs/private_circuit_public_inputs.ts | 7 + .../circuits.js/src/tests/factories.ts | 1 + .../src/__snapshots__/index.test.ts.snap | 370 +++++++++--------- .../src/abis/private_circuit_public_inputs.nr | 5 +- .../src/crates/types/src/constants.nr | 6 +- .../private_circuit_public_inputs_builder.nr | 1 + .../nested-call-private-kernel-inner.hex | 2 +- .../noir-protocol-circuits/src/index.test.ts | 1 + .../src/type_conversion.ts | 1 + .../src/types/private_kernel_init_types.ts | 1 + .../src/types/private_kernel_inner_types.ts | 1 + 18 files changed, 246 insertions(+), 226 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 5b9bc9e09bc..4b0aecbc3ce 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -71,14 +71,14 @@ library Constants { uint256 internal constant BLOCK_HEADER_LENGTH = 7; uint256 internal constant FUNCTION_DATA_LENGTH = 4; uint256 internal constant CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 188; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 189; uint256 internal constant CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; uint256 internal constant CONTRACT_STORAGE_READ_LENGTH = 2; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; - uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 194; + uint256 internal constant CALL_PRIVATE_FUNCTION_RETURN_SIZE = 195; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 176; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 177; uint256 internal constant COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 1024; diff --git a/yarn-project/acir-simulator/src/acvm/deserialize.ts b/yarn-project/acir-simulator/src/acvm/deserialize.ts index f5a97f42146..e9320f92c2b 100644 --- a/yarn-project/acir-simulator/src/acvm/deserialize.ts +++ b/yarn-project/acir-simulator/src/acvm/deserialize.ts @@ -183,6 +183,7 @@ export function extractPrivateCircuitPublicInputs( const privateCallStack = witnessReader.readFieldArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL); const publicCallStack = witnessReader.readFieldArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL); const newL2ToL1Msgs = witnessReader.readFieldArray(MAX_NEW_L2_TO_L1_MSGS_PER_CALL); + const endSideEffectCounter = witnessReader.readField(); const encryptedLogsHash = witnessReader.readFieldArray(NUM_FIELDS_PER_SHA256); const unencryptedLogsHash = witnessReader.readFieldArray(NUM_FIELDS_PER_SHA256); @@ -221,6 +222,7 @@ export function extractPrivateCircuitPublicInputs( privateCallStack, publicCallStack, newL2ToL1Msgs, + endSideEffectCounter, encryptedLogsHash, unencryptedLogsHash, encryptedLogPreimagesLength, diff --git a/yarn-project/acir-simulator/src/acvm/serialize.ts b/yarn-project/acir-simulator/src/acvm/serialize.ts index 0a9c8c26cea..3c577e161ea 100644 --- a/yarn-project/acir-simulator/src/acvm/serialize.ts +++ b/yarn-project/acir-simulator/src/acvm/serialize.ts @@ -149,6 +149,7 @@ export function toACVMPublicInputs(publicInputs: PrivateCircuitPublicInputs): AC ...publicInputs.privateCallStackHashes.map(toACVMField), ...publicInputs.publicCallStackHashes.map(toACVMField), ...publicInputs.newL2ToL1Msgs.map(toACVMField), + toACVMField(publicInputs.endSideEffectCounter), ...publicInputs.encryptedLogsHash.map(toACVMField), ...publicInputs.unencryptedLogsHash.map(toACVMField), diff --git a/yarn-project/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index ecb1adb0655..bc8139e6b80 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -162,6 +162,7 @@ impl PrivateContext { private_call_stack_hashes: self.private_call_stack_hashes.storage, public_call_stack_hashes: self.public_call_stack_hashes.storage, new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage, + end_side_effect_counter: self.side_effect_counter, encrypted_logs_hash: encrypted_logs_hash, unencrypted_logs_hash: unencrypted_logs_hash, encrypted_log_preimages_length: encrypted_log_preimages_length, @@ -299,6 +300,7 @@ impl PrivateContext { private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]), public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]), new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]), + end_side_effect_counter: reader.read(), encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]), unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]), encrypted_log_preimages_length: reader.read(), diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index bf37b64865c..1410cd8307f 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -53,41 +53,41 @@ Fr { exports[`abis compute private call stack item hash 1`] = ` Fr { - "asBigInt": 12059257310848051064422198195395904684446263082512520258641028259263903818171n, + "asBigInt": 16865740224106637312048204066423595287637012547473437662620907740307887613802n, "asBuffer": { "data": [ - 26, - 169, + 37, + 73, + 171, + 177, + 192, + 99, + 255, + 255, + 248, + 50, + 253, + 100, + 252, + 131, + 150, + 255, 76, + 95, 57, - 230, + 79, + 225, + 224, + 18, + 59, 180, - 240, - 231, - 24, - 48, - 196, - 44, - 4, - 108, - 184, - 247, - 28, - 1, - 155, - 143, - 248, - 71, - 143, - 76, - 160, - 71, - 179, - 148, - 161, - 61, + 144, + 60, + 66, + 124, 225, - 187, + 231, + 106, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index 7c79e4dce23..fb343965154 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -547,6 +547,7 @@ function computePrivateInputsHash(input: PrivateCircuitPublicInputs) { ...input.privateCallStackHashes.map(fr => fr.toBuffer()), ...input.publicCallStackHashes.map(fr => fr.toBuffer()), ...input.newL2ToL1Msgs.map(fr => fr.toBuffer()), + input.endSideEffectCounter.toBuffer(), ...input.encryptedLogsHash.map(fr => fr.toBuffer()), ...input.unencryptedLogsHash.map(fr => fr.toBuffer()), input.encryptedLogPreimagesLength.toBuffer(), diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 9df77cf03cc..79cd3856feb 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -57,14 +57,14 @@ export const CALL_CONTEXT_LENGTH = 8; export const BLOCK_HEADER_LENGTH = 7; export const FUNCTION_DATA_LENGTH = 4; export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 188; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 189; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 190; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; -export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 194; +export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 195; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 87; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 176; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 177; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 1024; diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index 6d060a15f0d..e0cf7cfdd98 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -60,6 +60,10 @@ export class PrivateCircuitPublicInputs { * New L2 to L1 messages created by the corresponding function call. */ public newL2ToL1Msgs: Tuple, + /** + * The end side effect counter for this call. + */ + public endSideEffectCounter: Fr, /** * Hash of the encrypted logs emitted in this function call. * Note: Represented as an array of 2 fields in order to fit in all of the 256 bits of sha256 hash. @@ -124,6 +128,7 @@ export class PrivateCircuitPublicInputs { reader.readArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, Fr), reader.readArray(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr), reader.readArray(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, Fr), + reader.readObject(Fr), reader.readArray(NUM_FIELDS_PER_SHA256, Fr), reader.readArray(NUM_FIELDS_PER_SHA256, Fr), reader.readObject(Fr), @@ -150,6 +155,7 @@ export class PrivateCircuitPublicInputs { makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, Fr.zero), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, Fr.zero), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, Fr.zero), + Fr.ZERO, makeTuple(NUM_FIELDS_PER_SHA256, Fr.zero), makeTuple(NUM_FIELDS_PER_SHA256, Fr.zero), Fr.ZERO, @@ -203,6 +209,7 @@ export class PrivateCircuitPublicInputs { fields.privateCallStackHashes, fields.publicCallStackHashes, fields.newL2ToL1Msgs, + fields.endSideEffectCounter, fields.encryptedLogsHash, fields.unencryptedLogsHash, fields.encryptedLogPreimagesLength, diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 2c59a5aca08..15131f04e31 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -692,6 +692,7 @@ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicIn privateCallStackHashes: makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x600), publicCallStackHashes: makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, fr, seed + 0x700), newL2ToL1Msgs: makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, fr, seed + 0x800), + endSideEffectCounter: fr(seed + 0x850), encryptedLogsHash: makeTuple(NUM_FIELDS_PER_SHA256, fr, seed + 0x900), unencryptedLogsHash: makeTuple(NUM_FIELDS_PER_SHA256, fr, seed + 0xa00), encryptedLogPreimagesLength: fr(seed + 0xb00), diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index 3e9561d53a8..b5a6325e15c 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -32629,121 +32629,121 @@ KernelCircuitPublicInputs { "constants": CombinedConstantData { "blockHeader": BlockHeader { "archiveRoot": Fr { - "asBigInt": 21248009016811456836438392746926422387444685174609687677496002645263704878972n, + "asBigInt": 3299595034698027116738088638163396111360028306801805379304156120235869845371n, "asBuffer": { "data": [ - 46, + 7, + 75, + 129, + 45, 249, - 242, - 105, - 89, - 165, - 243, - 63, - 124, - 122, - 247, - 119, - 178, - 120, + 140, + 58, + 172, + 75, + 153, 16, - 24, - 132, - 29, + 20, + 63, + 150, + 246, + 163, + 224, + 99, + 39, + 175, + 89, + 147, + 23, + 121, + 147, 204, - 145, - 19, - 237, - 106, - 128, - 127, - 135, + 156, + 180, + 11, + 229, + 183, 123, - 4, - 249, - 87, - 111, - 124, ], "type": "Buffer", }, }, "contractTreeRoot": Fr { - "asBigInt": 5293563243298452294329687170607903856184752120049447872889625129684495926248n, + "asBigInt": 2879234336266878181756829670765400405971457647584261815888127470791174819386n, "asBuffer": { "data": [ - 11, - 180, - 12, - 245, - 105, - 52, - 84, - 117, - 104, - 162, - 103, - 161, - 194, - 102, + 6, + 93, + 150, + 193, + 23, + 240, + 156, + 175, + 64, + 114, 139, - 24, - 31, - 80, 161, - 203, - 22, - 166, - 214, - 226, + 45, 5, - 172, - 197, - 67, - 241, - 50, - 131, + 225, + 173, 232, + 56, + 22, + 137, + 115, + 178, + 218, + 102, + 11, + 243, + 169, + 102, + 226, + 118, + 142, + 58, ], "type": "Buffer", }, }, "globalVariablesHash": Fr { - "asBigInt": 7952078762465698624974698704580114660240621367204697569325144091506842930963n, + "asBigInt": 18254267241644890096728458946550484409940937079286178749169742669812331885298n, "asBuffer": { "data": [ - 17, - 148, - 183, - 146, - 144, - 156, - 92, - 87, - 92, - 123, - 134, - 8, - 169, - 231, - 228, + 40, + 91, 140, - 3, 147, - 126, - 63, - 252, - 70, - 112, + 74, + 62, + 47, + 64, + 236, + 84, + 190, + 127, + 168, + 224, + 62, + 116, + 135, + 215, + 129, + 120, + 214, + 16, + 179, 80, - 194, - 218, - 79, - 237, - 149, - 26, - 15, - 19, + 25, + 105, + 252, + 49, + 42, + 150, + 178, + 242, ], "type": "Buffer", }, @@ -32789,81 +32789,81 @@ KernelCircuitPublicInputs { }, }, "noteHashTreeRoot": Fr { - "asBigInt": 13456416487495936025137262152176817403686146401482537158236896741637640639853n, + "asBigInt": 20703490723412199954362500516772754147411917280953300915777405940555593478689n, "asBuffer": { "data": [ - 29, - 192, - 15, - 212, - 4, 45, - 65, - 21, - 36, - 204, - 155, - 42, - 11, - 173, - 98, + 197, + 194, + 175, + 81, + 222, + 190, + 31, + 122, 39, - 238, - 99, - 89, - 255, - 206, - 117, - 75, - 44, - 172, - 129, - 128, - 168, - 46, - 207, - 85, - 109, + 236, + 120, + 188, + 231, + 38, + 223, + 14, + 174, + 178, + 71, + 135, + 50, + 140, + 92, + 94, + 242, + 192, + 182, + 240, + 118, + 242, + 33, ], "type": "Buffer", }, }, "nullifierTreeRoot": Fr { - "asBigInt": 16443222603089018571645509412600324577768319305078929397179037535489308095991n, + "asBigInt": 17652333472279191628437064764403898538839808648712907820426539548317448237907n, "asBuffer": { "data": [ - 36, - 90, + 39, + 6, + 221, + 222, + 228, + 197, + 54, + 156, + 4, + 14, + 202, + 231, + 239, 136, - 192, - 42, + 56, + 187, + 11, + 132, 61, - 149, - 121, - 125, - 41, - 102, - 67, - 143, - 211, - 97, - 108, - 215, - 47, - 178, - 200, - 49, - 213, - 172, - 219, - 70, - 248, - 238, - 188, - 156, - 185, - 245, - 247, + 32, + 78, + 231, + 77, + 63, + 38, + 33, + 135, + 88, + 88, + 145, + 115, + 83, ], "type": "Buffer", }, @@ -39062,7 +39062,7 @@ KernelCircuitPublicInputs { }, }, "noteHash": Fr { - "asBigInt": 1000000n, + "asBigInt": 0n, "asBuffer": { "data": [ 0, @@ -39094,49 +39094,49 @@ KernelCircuitPublicInputs { 0, 0, 0, - 15, - 66, - 64, + 0, + 0, + 0, ], "type": "Buffer", }, }, "value": Fr { - "asBigInt": 392100845881711986920690467434459771564810763634304623570999539934442065012n, + "asBigInt": 439257366008177876615157226684274709274740260231685565681056234861272560222n, "asBuffer": { "data": [ 0, - 221, - 235, - 212, - 177, - 61, - 81, - 15, - 231, - 220, - 110, - 100, - 225, - 23, - 214, - 140, - 44, - 84, - 75, - 175, - 3, - 127, + 248, + 156, + 97, + 60, + 193, + 49, + 109, + 87, + 103, + 168, + 144, + 202, + 124, + 132, + 122, + 167, 27, - 7, - 238, - 79, - 219, - 104, - 71, - 68, - 140, - 116, + 144, + 231, + 198, + 201, + 143, + 233, + 125, + 145, + 132, + 41, + 183, + 72, + 242, + 94, ], "type": "Buffer", }, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index 34401b13944..726868af6fe 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -34,11 +34,10 @@ struct PrivateCircuitPublicInputs { new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL], - - // todo: include counters as part of the hash? private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL], new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL], + end_side_effect_counter : Field, encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256], unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256], @@ -76,6 +75,7 @@ impl PrivateCircuitPublicInputs { fields.push_array(self.private_call_stack_hashes); fields.push_array(self.public_call_stack_hashes); fields.push_array(self.new_l2_to_l1_msgs); + fields.push(self.end_side_effect_counter); fields.push_array(self.encrypted_logs_hash); fields.push_array(self.unencrypted_logs_hash); fields.push(self.encrypted_log_preimages_length); @@ -108,6 +108,7 @@ impl PrivateCircuitPublicInputs { fields.push_array(self.private_call_stack_hashes); fields.push_array(self.public_call_stack_hashes); fields.push_array(self.new_l2_to_l1_msgs); + fields.push(self.end_side_effect_counter); fields.push_array(self.encrypted_logs_hash); fields.push_array(self.unencrypted_logs_hash); fields.push(self.encrypted_log_preimages_length); diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index f8adc834f94..1efc6014122 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -101,15 +101,15 @@ global CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6; // Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. // In other words, if the structure/size of the public inputs of a function call changes then we // should change this constant as well as the offsets in private_call_stack_item.nr -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 188; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189; global CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3; global CONTRACT_STORAGE_READ_LENGTH: Field = 2; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; -global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 194; +global CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195; global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87; -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 176; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177; global COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; global PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr index 4823fd6fa51..160f5bc12ff 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -118,6 +118,7 @@ impl PrivateCircuitPublicInputsBuilder { private_call_stack_hashes: self.private_call_stack_hashes.storage, public_call_stack_hashes: self.public_call_stack_hashes.storage, new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage, + end_side_effect_counter: 10, encrypted_logs_hash: self.encrypted_logs_hash, unencrypted_logs_hash: self.unencrypted_logs_hash, diff --git a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex index 2b3265f3c4b..5b60aa0a6fb 100644 --- a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex +++ b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ddebd4b13d510fe7dc6e64e117d68c2c544baf037f1b07ee4fdb6847448c7400000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acdc6161f12ed1313edb1ead23fbf736117d85cdbeb2ac4117b0d8cf0e9bae01ad5bb85b11e6c1048c30661e39f241fe336191b8066405aa0c091230b0c496000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb2000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc00fd4042d411524cc9b2a0bad6227ee6359ffce754b2cac8180a82ecf556d245a88c02a3d95797d2966438fd3616cd72fb2c831d5acdb46f8eebc9cb9f5f70bb40cf56934547568a267a1c2668b181f50a1cb16a6d6e205acc543f13283e81864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f802ef9f26959a5f33f7c7af777b2781018841dcc9113ed6a807f877b04f9576f7c00000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e01194b792909c5c575c7b8608a9e7e48c03937e3ffc467050c2da4fed951a0f130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000eeab96a3e9ecd4dd083f3e76c9e2f63ab3b968d2886f943f753074d5bdaba27019f59df7c9bf1fea039b74f08c13398568e91b7d94e5e2ef05f3b7da65874d90a710c569e59ccd821057306e66935a56564993832c004e197778c5ae3a06e371584bfe43499007bffdc5ffb81c81b6e26adc5cefbab1d3a0bb37ddadd17aea50906bca10001001ad5bb85b11e6c1048c30661e39f241fe336191b8066405aa0c091230b0c49601584bfe43499007bffdc5ffb81c81b6e26adc5cefbab1d3a0bb37ddadd17aea500000000000000000000000000000000000000000000000000000000000000000906bca100000000000000000000000000000000000000000000000000000000000000000000001124bf00bac5cd7fc8570fe0e40c34b8d093801a155d53e0b478d960b3a424810000000000000000000000000000000000000000000000000000000000007a6a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000041dc00fd4042d411524cc9b2a0bad6227ee6359ffce754b2cac8180a82ecf556d245a88c02a3d95797d2966438fd3616cd72fb2c831d5acdb46f8eebc9cb9f5f70bb40cf56934547568a267a1c2668b181f50a1cb16a6d6e205acc543f13283e81864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f802ef9f26959a5f33f7c7af777b2781018841dcc9113ed6a807f877b04f9576f7c00000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e01194b792909c5c575c7b8608a9e7e48c03937e3ffc467050c2da4fed951a0f130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000000000000000000000000000000000000000000000000000000000722a1419dd08e208cd862bb66fb009fa540fb7178d01108f79eb78a891064685603f30687851ce0bc4df8e4fa8a5809643e9ae7f752a3ec1e3c120b251036c92e14ae899cd34041169f2476b70040373713d6eb363e74dca7f7f70f36d286b92f044b59fe1a64065611c9ec171fc760af4337fd13bbb833a9b021cfdde27a7f621a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed27226b3cd220f546e8e5cee1c4042fb865614459a2da969c40f28b83b7e0c2e30bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa015d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a900c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b022ced19489ab456b8b6c424594cdbbae59c36dfdd4c4621c4032da2d8a9674be51df5a245ffc1da14b46fe56a605f2a47b1cff1592bab4f66cfe5dfe990af6ab52871d090615d14eadb52228c635c90e0adf31176f0814f6525c23e7d7b318c931a2b85ff013d4b2b25074297c7e44aa61f4836d0862b36db2e6ce2b5542f9ea9177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce94300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f89c613cc1316d5767a890ca7c847aa71b90e7c6c98fe97d918429b748f25e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000179e8197f0e67b6fb7a3b790dd5c1252e735ee560df89d1c72042bb3309f562a0079a595831a8626aa3bc41db79e8f59cbcc0e811f8b511634651b6d416c997900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb2000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dc5c2af51debe1f7a27ec78bce726df0eaeb24787328c5c5ef2c0b6f076f2212706dddee4c5369c040ecae7ef8838bb0b843d204ee74d3f2621875858917353065d96c117f09caf40728ba12d05e1ade838168973b2da660bf3a966e2768e3a1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80074b812df98c3aac4b9910143f96f6a3e06327af5993177993cc9cb40be5b77b00000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0285b8c934a3e2f40ec54be7fa8e03e7487d78178d610b3501969fc312a96b2f20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000001de3e3a312406f1cc4bd44a25b3a826f60ac227760cd564f0a239af234e340b20388a53040e1fda7ea40c501ee9af343d7a495a4886734cb0ea6f7943d814e871b36f5070d67d75f4f16d194141a5601171d2e5997221d9674c7ed66c8f66b8a25fd053f219608ec8c79a81d9bddaf834d51cef1a223d1e10ab92f41f8b3c38f0906bca10001000079a595831a8626aa3bc41db79e8f59cbcc0e811f8b511634651b6d416c997925fd053f219608ec8c79a81d9bddaf834d51cef1a223d1e10ab92f41f8b3c38f00000000000000000000000000000000000000000000000000000000000000000906bca100000000000000000000000000000000000000000000000000000000000000000000001124bf00bac5cd7fc8570fe0e40c34b8d093801a155d53e0b478d960b3a424810000000000000000000000000000000000000000000000000000000000007a6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000042dc5c2af51debe1f7a27ec78bce726df0eaeb24787328c5c5ef2c0b6f076f2212706dddee4c5369c040ecae7ef8838bb0b843d204ee74d3f2621875858917353065d96c117f09caf40728ba12d05e1ade838168973b2da660bf3a966e2768e3a1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80074b812df98c3aac4b9910143f96f6a3e06327af5993177993cc9cb40be5b77b00000000000000000000000000000000000000000000000000000000000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0285b8c934a3e2f40ec54be7fa8e03e7487d78178d610b3501969fc312a96b2f20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000000000000000000000000000000000000000000000000000000000722a1419dd08e208cd862bb66fb009fa540fb7178d01108f79eb78a891064685603f30687851ce0bc4df8e4fa8a5809643e9ae7f752a3ec1e3c120b251036c92e14ae899cd34041169f2476b70040373713d6eb363e74dca7f7f70f36d286b92f044b59fe1a64065611c9ec171fc760af4337fd13bbb833a9b021cfdde27a7f621a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed0aa5aaf3632eb02010fb1cefb82a6de258870b1c579d3fd3bf435631ead8fcb90bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa015d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a900c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b022ced19489ab456b8b6c424594cdbbae59c36dfdd4c4621c4032da2d8a9674be51df5a245ffc1da14b46fe56a605f2a47b1cff1592bab4f66cfe5dfe990af6ab52871d090615d14eadb52228c635c90e0adf31176f0814f6525c23e7d7b318c931a2b85ff013d4b2b25074297c7e44aa61f4836d0862b36db2e6ce2b5542f9ea9177b9a10bbee32f77c719c6f8d071a18476cbeb021e155c642bbf93c716ce94300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits/src/index.test.ts b/yarn-project/noir-protocol-circuits/src/index.test.ts index c315087a714..3a5986cffa2 100644 --- a/yarn-project/noir-protocol-circuits/src/index.test.ts +++ b/yarn-project/noir-protocol-circuits/src/index.test.ts @@ -145,6 +145,7 @@ describe('Private kernel', () => { makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, () => Fr.ZERO), makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, () => Fr.ZERO), makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_CALL, () => Fr.ZERO), + Fr.ZERO, [Fr.fromString('0x9cc0744c0dde14f24854659b052ffb7e'), Fr.fromString('0x28120e19a5cc9ec344f3d6d41b6fada2')], [Fr.fromString('0xe3b0c44298fc1c149afbf4c8996fb924'), Fr.fromString('0x27ae41e4649b934ca495991b7852b855')], Fr.fromString('0xf8'), diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index 992a7844db8..ae18fef11c1 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -554,6 +554,7 @@ export function mapPrivateCircuitPublicInputsToNoir( private_call_stack_hashes: mapTuple(privateCircuitPublicInputs.privateCallStackHashes, mapFieldToNoir), public_call_stack_hashes: mapTuple(privateCircuitPublicInputs.publicCallStackHashes, mapFieldToNoir), new_l2_to_l1_msgs: mapTuple(privateCircuitPublicInputs.newL2ToL1Msgs, mapFieldToNoir), + end_side_effect_counter: mapFieldToNoir(privateCircuitPublicInputs.endSideEffectCounter), encrypted_logs_hash: mapTuple(privateCircuitPublicInputs.encryptedLogsHash, mapFieldToNoir), unencrypted_logs_hash: mapTuple(privateCircuitPublicInputs.unencryptedLogsHash, mapFieldToNoir), encrypted_log_preimages_length: mapFieldToNoir(privateCircuitPublicInputs.encryptedLogPreimagesLength), diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts index 1cfac4d57f5..7136810817f 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_init_types.ts @@ -97,6 +97,7 @@ export interface PrivateCircuitPublicInputs { private_call_stack_hashes: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; + end_side_effect_counter: Field; encrypted_logs_hash: FixedLengthArray; unencrypted_logs_hash: FixedLengthArray; encrypted_log_preimages_length: Field; diff --git a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts index 9229dfecd6c..f7cc09a9a8a 100644 --- a/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts +++ b/yarn-project/noir-protocol-circuits/src/types/private_kernel_inner_types.ts @@ -174,6 +174,7 @@ export interface PrivateCircuitPublicInputs { private_call_stack_hashes: FixedLengthArray; public_call_stack_hashes: FixedLengthArray; new_l2_to_l1_msgs: FixedLengthArray; + end_side_effect_counter: Field; encrypted_logs_hash: FixedLengthArray; unencrypted_logs_hash: FixedLengthArray; encrypted_log_preimages_length: Field; From 936d619e059700c89907565aa40f861153fbaaf3 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Wed, 3 Jan 2024 14:47:15 +0000 Subject: [PATCH 71/71] chore: format --- .../sequencer-client/src/sequencer/public_processor.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 85e59b19423..21c7863789d 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -38,7 +38,6 @@ import { } from '@aztec/types'; import { MerkleTreeOperations, TreeInfo } from '@aztec/world-state'; -import { log } from 'console'; import { MockProxy, mock } from 'jest-mock-extended'; import times from 'lodash.times';