@aztec/accounts 0.55.1 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.34.0+e0185e75e65df08b5334856f8bf63fa3aed7049a","name":"SchnorrSingleKeyAccount","functions":[{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2z1i2z1i2z1i2z1i2zw5UKhvL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9jnL9jnL9jnL9jnL9vmBSmVn2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2b5g2b5g2b5g2b5g2b44UKkcLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXd7d93a8vnpe3ex/n44v1iIhfrz7/c79PIpIXXp+jry/PsX5/819H1T1HtT1H9T1HjT1HzT1HrT1H7T1HnTVHvbuL/caj7mlLCW5LMtlvbz11yJWjqk6/tmC145g/vf6P44Ib01cc13cdF9ycvuK44Pb0FccFN6ivOO6dW1Slvr245cMdhHt78Cvj3NuDXxuHddeb5cGD5cHj3h782t+dYI2TrHGKNQ4rlYuVys1K5Xt78GvjsFL5zh5cVd8aj2Ze6VNnuX0b/vx0zY/96M5+/Objx88eP3/2+KxPlWZ9qjTrU+XOnv3v/LvW9vY1MY+48EXuzv795uPrzx7/4qfc63/FcWV0G3m9e2oTcuHt/WvfPr727fNr376+9u37a99+fvJf/Dx+dGrm8aNTM48fnZp5oL8bXB8f/d3g+vio34NMlq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq9Plq/PO/v6v+8+dE69/9j9ON5/w/kfgSTp5N9nufFRyb/7cuOj1p6j9p6jkn+yfdujsvYwJOsZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ8vUJsvUJsvUJusZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ8vUJusZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ+sZy8l6xnKynrGcrGcsJ+sZy8V6xnKxnrFcrGcsF+sZy3WgUrlYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYBrRYz1gu1jOWi/WM5WI9Y7lYz1gu1jOWi2X7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7mmX7mmX7mmX7mmX7+kClcrNsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7Ns37Bs37Bs37Bs37Bs3xyoVB6W7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuU7dMDZfvOcUipfI5DSuVzHFIqn+PcO5W7X188L2/3Ps7HF+sREb9eff7nfp9EJC+8PkdfX55j/f7mv44ae46ae45ae47ae446a456ZwOqUfM6fB5Xjtpqr6O3+Z8P+sfwN/isT3sb/rdreXH4znr9c+pKvzDPDT7sp94/MPXK35vz5yNvf2/mtyt/6e+B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s56nmaznaWazUrlZqcwyt8kyt8kyt8kyt8kyt8kytzmsVB5WKrOep5ms52km63maxXqeZrGep1ms52kW63madaBSuVjmtljmtg5UKteBSuU6WKksrFQWVioLK5WFlcrCSmXW8zSL9TzNElYqCyuVhZXKykplZaUy63maxXqeZikrlZWVyspKZZbtK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5bta5bta5bta5bta5bt6wOVys2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfcOyfcOyfcOyfcOyfXOgUnlYtm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Qts8OlO07xyGl8jkOKZXPcUipfI5DSuVzHFIqn+OQUvkch5TK5zikVD7HYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiqVhWX7hGX7hGX7hGX75EClsrBsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Bsn7Jsn7Jsn7Jsn7Jsnx6oVFaW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7VOW7TOW7TOW7TOW7TOW7bMDlcrGsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Gsn3Osn3Osn3Osn3Osn1+oFLZWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbbPWbYvWLYvWLYvWLYvWLYvDlQqB8v2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Bcv2Jcv2Jcv2Jcv2Jcv25YFK5WTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmTZvmLZvmLZvmLZvmLZvjpQqVws21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs21cs29cs29cs29cs29cs29cHKpWbZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuaZfuGZfuGZfuGZfuGZfvmQKXysGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfsGzfoGyfHyjbd45DSuVzHFIqn+OQUvkch5TK5zikVD7HIaXyOQ4plc9xSKl8jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxUKgvL9gnL9gnL9gnL9smBSmVh2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5h2T5l2T5l2T5l2T5l2T49UKmsLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNunLNtnLNtnLNtnLNtnLNtnByqVjWX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX77M62T488fr1Y5Yjfx7n04oh4ffUR/f5ykUuvz9HXl+dYv7/5H0e9sxv81qPKnqPqnqPanqP6nqPGnqPmnqPWnqP2nqOC25JMtr9VvTrkylFVp9/e/fyB/vzp9X89boAb01ccF9yavuK44Ob0FccFt6evOK7vOu4NWpS8zVQ2V75WV759ra5+n7/61zjJGqdY4/R9x+njeP+LXB/HGdQ4tzDbtxxHUH93bmG2bzmOscZx1jisVE5WKicrlbNZ4wxqnGKlcglrHGWNY6xx7pvKqvrWljXz93EuvHPkW3OXKMmP3briZ4+fP3v8+tnjsz5VivWp0gdrHCH/XWvr17fOIy7cBGj92ePbzx7/4qfc63/FcWV0G3m9824TcuHt42vfPr/27etr376/9u3nS99+jh/9F39+dmrOz07N+dmpeQuj/p3jo78bXB8/UV8Up1jjsO7TD+o+vR+oO0J+oO4I+YG6I+QH6o6QH84aJ1jjoFLZD1Qq+4FKZT9YqSysVBZWKgsrlYWVysJKZWGlsrBSWVipLKxUFlYqKyuVlZXKykplZaWyslJZWamsrFRWViorK5WVlcrGSmVjpbKxUtlYqWysVDZWKhsrlY2VysZKZWOlsrNS2Vmp7KxUdlYqOyuVnZXKzkplZ6Wys1LZWakcrFQOVioHK5WDlcrBSuVgpXKwUjlYqcyyks6yks6ykp6sVE5WKicrlZOVyslK5WSlcrJSOVmpnKxUZllJZ1lJZ1lJZ1lJL1YqFyuVi5XKxUrlYqVysVK5WancrFRuVio3K5WblcrNSuVmpXKzUrlZqdysVB5WKg8rlYeVysNK5WGl8rBSmWX7nGX7nGX7nGX7gmX7gmX7gmX7gmX74kClcrBsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX7BsX9z5+bZq87o0Tv33Z2JcXO2evz1wrI7D3l7+jzxwI+787NxvParsOaruOartOarvOSrqiZvBeg5ysJ6DHKznIAfrOcjBeg5ysJ6DHKznIAfrOcjBeg5ysJ6DHKznIAfrOcjBeg5yGCuVnZXKzkplZ6Wys1LZWansrFR2Vio7K5WdlcrOSuVgpXKwUjlYqRysVA5WKgcrlYOVysFK5WClcrBSOVmpnKxUTlYqJyuVk5XKyUrlZKVyslI5WamcrFQuVioXK5WLlcrFSuVipXKxUrlYqVysVC5WKhcrlZuVys1K5WalcrNSuVmp3KxUblYqNyuVm5XKzUrlYaXysFJ5WKk8rFQeVioPK5WHlcrDSuVhpfKgUjkPVCrngUrlPFCpnAcqlfNApXIeqFTOA5XKeaBSOQ9UKufBSmVhpbKwUllYqSysVBZWKgsrlYWVysJKZWGlsrBSWVmprKxUVlYqKyuVlZXKLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNuXLNtXLNtXLNtXLNtXLNtXByqVi2X7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7imX7mmX7mmX7mmX7mmX7+kClcrNsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7NsX7Ns37Bs37Bs37Bs37Bs3xyoVB6W7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7RuU7YsDZfvOcUipfI5DSuVzHFIqn+OQUvkch5TK5zikVD7HIaXyOQ4plc9xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOg0plYdk+Ydk+Ydk+Ydk+OVCpLCzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbpyzbpyzbpyzbpyzbpwcqlZVl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+4xl+4xl+4xl+4xl++xApbKxbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+zbJ+zbJ+zbJ+zbJ8fqFR2lu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu0Llu0Llu0Llu0Llu2LA5XKwbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9cWfbp0cev16scsTv41x68fkv//XVR/T7y0UuvT5HX1+eY/3+5r+OmnuOWnuO2nuOOmuOemen+a1HxXx6X3jx+xgS8/7Opr8+Pjhi9B8ZHtMM/pHhnfsvRCbb345ah1z5F6I6/fbudhzzp9f/cVxwT/mK44K7ylccF9xXvuK44M4i5/Tvn26HxIXxH6mHtL19OHfo33449yP1kCtHlT1H1T1HtT1H9Uc6aufbd4bjw3eGfqS7NleO+kh3ba4c9ZHu2lw56iPdtbly1IdqS58edR6qLX1+1IdqS58f9aHa0udHfai29PlRfc9R97Sl2dOWZk9bmj1tada0pTzWtKU81rSlPNa0pTzWtKU8fM9R17SlPNa0pTzWtKU81rSlPPa0JdnTlmRPW5I9bUn2tKU7bzT61qPuaUuypy3JnrYke9qS7GlLuqct6Z62pHvaku5pS3feNPatR93TlnRPW9I9bUn3tCXd05ZsT1uyPW3J9rQl29OW7rwB8FuPuqct2Z62ZHvaku1pS7anLfmetuR72pLvaUu+py3deTPntx51T1vyPW3J97Ql39OWfE9bij1tKfa0pdjTlmJPW7rzxtxvPeqethR72lLsaUuxpy3FnraUe9pS7mlLuact5Z62dOdN1t961D1t6aG2ZF856p629FBbsq8cdU9beqgt2VeOuqct1Z62VHvaEnlf962Puqctkfd03/qoe9oSeT/3rY+6py091i7vz4+6py091i7vz4+6py3t2eWde3Z5555d3rlnl3fu2eWde3Z5555d3rlnl3fu2eWde3Z5555d3rlnl3fu2eWde3Z5555d3rlnl3ft2eVde3Z5155d3rVnl3cdvueoa9pS7dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2efeeXd69Z5d379nl3Xt2effhe466pi31nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeXd+/Z5d17dnn3nl3evWeX9+zZ5T17dnnPnl3es2eX9xy+56hr2tLs2eU9e3Z5z55d3rNnl/fs2eU9e3Z5z55d3rNnl/fs2eU9e3Z5z55d3rNnl/fs2eU9e3Z5z55d3rNnl/fs2eU9D7XLezTejmofj+p7jnrntmSjr8P779NcGl1edg++vnUeMX866h/j588ev8Dj5/H+1inqF8bvnz3+/Ojx773v+tbjC3n8qddXSx2HXf3otLeQ7dC/Ddl777D+zqPanqP6nqOSW8KNj0puFH/3UT9t9IZuH7c9Krqp3Pao6FZz06M6ugHd9qgP1ZY+P+pDtaXPj/pQbenzo/qeoz5UW/r8qHvaku9pS76nLfmethR72lLsaUuxpy3FnrZ07x3W33nUPW0p9rSl2NOWYk9bij1tKfe0pdzTlnJPW8o9beneO6y/86h72lLuaUu5py3lnraUe9pS7WlLtact1Z62VHva0r13WH/nUfe0pdrTlmpPW6o9ban2tKXe05Z6T1vqPW2p97Sle++w/s6j7mlLvact9Z621HvaUu9pS7OnLc2etjR72tLsaUv3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ZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfuCZfuCZfuCZfuCZfviQKVysGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsmxfsmxfsmxfsmxfHqhUTpbtS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btK5btK5btK5btK5btqwOVysWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWy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WLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWbbPWbbPWbbPWbbPD1QqO8v2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Bcv2Bcv2Bcv2Bcv2xYFK5WDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmTZvmTZvmTZvmTZvjxQqZws25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs21cs21cs21cs21cs21cHKpWLZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuaZfuaZfuaZfuaZfv6QKVys2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2zfsGzfsGzfsGzfsGzfHKhUHpbtG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5Tt6wNl+85xSKl8jkNK5XMcUiqf45BS+RyHlMrnOKRUPschpfI5DimVz3FYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVL6z7dMjj18vVjni93EuvTgiXl99RL+/XOTS63P09eU51u9v/uuoseeoueeoteeoveeos+aodzag33pU2XNU3XNU23NU5x5VJtvfql4dcuWoqtNv727nT2X/9Po/jgtuTF9xXHBr+orjgpvTVxwX3J6+4rjgBvUFx72F2Za3mcrmytfqyrev1dXv81f/GkdY4yhrHLvvOH0c73+R6+M4zhonWOMk6+9OscZp1jiDGqdYqVysVC5WKpexxnHWOKxUrmSNU6xxmjXOfVNZVd/asmb+Ps6Fd458a+4SJfmxW/fxs8eXnz2+/uzxWZ8qtzDntxwnWOMk+e9aW7++dZ73Ny78XaufPX7/7PEvfsq9/lccV0a3kdc77zYhH9/+smm/3dvL1769fu3b29e+vX/t28eP/os/Pzs152en5vzs1Bz0d4Nr48uB/m5wfXwhfVGUQ1njoO7Ty+GscVB3hORA3RGSA3VHSA7UHSE5BjWOHKxxWKksrFQWVioLK5WFlcrCSmVhpbKwUllYqaysVFZWKisrlZWVyspKZWWlsrJSWVmprKxUVlYqGyuVjZXKxkplY6WysVLZWKlsrFQ2ViobK5WNlcrOSmVnpbKzUtlZqeysVHZWKjsrlZ2Vys5KZWelcrBSOVipHKxUDlYqByuVg5XKwUrlYKVysFI5WKmcrFROVionK5VZVlJYVlJYVlKSlcrJSuVkpXKyUrlYqVysVC5WKhcrlYuVyiwrKSwrKSwrKSwrKcVK5WalcrNSuVmp3KxUblYqNyuVm5XKzUrlZqVys1J5WKk8rFQeVioPK5WHlcrDSuVhpfKwUnlYqTyoVNYDlcrKsn3Ksn3Ksn16oFJZWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZPWbZP7/x8W7V5XRqn/vszMS6uds/fHjhWx2FvL/9HHrihd3527rceNfcctfYctfccddYclfUcZGU9B1lZz0FW1nOQlfUcZGU9B1lZz0FW1nOQlfUcZGU9B1lZz0FW1nOQlfUcZGU9B1mdlcrOSmVnpbKzUtlZqeysVA5WKgcrlYOVysFK5WClcrBSOVipHKxUDlYqByuVk5XKyUrlZKVyslI5WamcrFROVionK5WTlcrJSuVipXKxUrlYqVysVC5WKhcrlYuVysVK5WKlcrFSuVmp3KxUblYqNyuVm5XKzUrlZqVys1K5WancrFQeVioPK5WHlcrDSuVhpfKwUnlYqTysVB5WKg8qle1ApbIdqFS2A5XKdqBS2Q5UKtuBSmU7UKlsByqV7UClsh2sVBZWKgsrlYWVysJKZWGlsrBSWVipLKxUFlYqCyuVlZXKykplZaWyslJZWamsrFRWViorK5WVlcrKSmWW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7XOW7XOW7XOW7XOW7fMDlcrOsn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Osn3Bsn3Bsn3Bsn3Bsn1xoFI5WLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWLYvWbYvWbYvWbYvWbYvD1QqJ8v2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Jcv2Fcv2Fcv2Fcv2Fcv21YFK5WLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmLZvmbZvmbZvmbZvmbZvj5Qqdws29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs29cs2zcs2zcs2zcs2zcs2zcHKpWHZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfuGZfsGZfvmQNm+cxxSKp/jkFL5HIeUyuc4pFQ+xyGl8jkOKZXPcUipfI5DSuVzHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad46BSWVi2T1i2T1i2T1i2Tw5UKgvL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9gnL9inL9inL9inL9inL9umBSmVl2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T5l2T69s+3TI49fL1Y54vdxLr04Il5ffUS/v1zk0uvz/Mz79fIc6/c3/3VU2XNU3XNU23NU33PU2HNUzKf3hRe/jyEx7+9s+vrxgfms/0eGxzSDf2T44f4Lkcn2t6PWIVf+hZw/bO+3d7fjmD+9/q/HbXBP+YrjgrvKVxwX3Fe+4rjgziLn9O+fbofEhfH9gT6c294+nDv0bz+c+5F6yJWj5p6j1p6j9p6jghvR33/UzrfvDMeH7wzzSHdtrhz1ke7aXDnqI921uXLUR7prc+WovueoD9WWPj/qQ7Wlz4/6UG3p86M+VFv6/Khr2pIda9qSHWvakh1r2pIda9qSHb7nqGvakh1r2pIda9qSHWvakh172pLsaUuypy3JnrYke9rSnbfgfOtR97Ql2dOWZE9bkj1tSfa0Jd3TlnRPW9I9bUn3tKU7b6f61qPuaUu6py3pnrake9qS7mlLtqct2Z62ZHvaku1pS3feGvetR93TlmxPW7I9bcn2tCXb05Z8T1vyPW3J97Ql39OW7rzN8VuPuqct+Z625Hvaku9pS76nLcWethR72lLsaUuxpy3decvqtx51T1uKPW0p9rSl2NOWYk9byj1tKfe0pdzTlnJPW7rz9uNvPeqetpR72lLuaUu5py3lnrb0UFuyrxx1T1t6qC3ZV466py091JbsK0fd05ZqT1uqPW2p9rQl8r7uGx+VvKv71kfd05bIO7pvfdQ9bemxdnl/ftQ9bemxdnl/ftQ9bemxdnl/ftQ9bWnPLm/bs8vb9uzytj27vG3PLm/bs8vb9uzytj27vG3PLm/bs8vb9+zy9j27vH3PLm/fs8vbD99z1DVtyffs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7x9zy5v37PL2/fs8vY9u7xjzy7v2LPLO/bs8o49u7zj8D1HXdOWYs8u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv27PKOPbu8Y88u79izyzv37PLOPbu8c88u79yzyzsP33PUNW0p9+zyzj27vHPPLu/cs8s79+zyzj27vHPPLu/cs8s79+zyzj27vHPPLu/cs8s79+zyzj27vHPPLu/cs8s79+zyzj27vHPPLu/cs8s79+zyzj27vPOhdnmPxttR7eNRH6ktfX7Ue+/yttHX4f33aS6NLtHWr2993pyfPx31j/HlZ4+v4PHPW6xvb33erfIL49vPHt9/9vjxs8dP8vhTr6+WOg67+tFpbyHboR9CtvYctfccddYc1ckt4cZHJTeKv/uonzZ6R7eP2x4V3VRue1Tfc1R0A7rtUR+qLX1+1IdqS58f9aHa0udHfai29OlR46Ha0udH3dOWYk9bij1t6d47rL/zqHvaUuxpS7GnLcWethR72lLuaUu5py3lnraUe9rSvXdYf+dR97Sl3NOWck9byj1tKfe0pdrTlmpPW6o9ban2tKV777D+zqPuaUu1py3VnrZUe9pS7WlLvact9Z621HvaUu9pS/feYf2dR93TlnpPW+o9ban3tKXe05ZmT1uaPW1p9rSl2dOW7r3D+juPuqctzZ62NHva0uxpS7OmLdWxpi3VsaYt1bGmLdWxpi3V4XuOuqYt1bGmLdWxpi3VsaYt1bGnLcmetiR72pLsaUuypy3de4f1dx51T1uSPW1J9rQl2dOWZE9b0j1tSfe0Jd3TlnRPW7r3DuvvPOqetqR72pLuaUu6py3pnraE3mF946PuaUvs3di3PeqetsTeuX3bo+5pS4+1y/vzo+5pS4+1y/vzo+5pS4+1y/vzo+5pS3t2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2eddD7fIejbej2oejPtQu7ytHvXNbOvJ4PaocceWoL5uaX9/6ZTXUlaOqTr+9ux3H/On1fxxXdx3Xdh3Xdx03dh03dx23dh23dx13Vh333vu+v/u4u1rVnfd+y28NeGZ+P+4f4xhrHGeNE6xxbvCpLm9/n8vmyjjnj5jfXtzvf/erf41TrHGaNc6Qxulb7EW+5TjCGkdZ4xhrHGeNE6xxkvQh0cedU/lMlvfZ6+PVadY4gxpHDtY4whoH1ZVbUF255b6prKpvX2008/c/rAvvHPn2NUuiJD98EWqJnz1+/uzx62eP3z97/EElyZ33Wl4dR1jjsD6FlPUpdOc9i1fHufip8vrP8bgyio28/gDYJuTjP9zL+wdv9/b1tW/fX/v286Vvf3mf3O3eXr727fVr396+9u39a98edZ+1jfWN3tBdra1f3zqPmAt/uOiudn38+dHj+/Gzx5efPb7+7PHtZ4/vP3t89B2S6+Oj75BcH79QJeDOe4yujsO6gxGsOxjBuoMRrDsYwbqDcef9NFfHufNPN6/8DCaSNQ7rp5vB+ulmsH66mayfbibrp5uprHGMNY6zxmHdoUrWHapkpXKyUjlZqVysVC5WKherKxerKxcrlYvVlYvVlYuVysVK5WLdwWjWHYxm3cFoVio3K5XvbHmvjsNK5WalcrNSuVmp3KyuPKyuPKyuPKw7GMO6g3ELy3jLcVh3MIZ1B2NYqTysVB5UKs+BSuU5UKk8ByqV50Cl8hyoVJ4D1ZXnQHXlOVC/gzEH6ncw5kDdwRhB3cEYQd3BGJZlHJZlnFtYxluOw0plYaWyoLryCKorj7C6srK6srK6srK6srK68i1s3y3HQd3BGEXdwRhlpbKyUllZqWysVDZWKhurKxurKxsrlY3VlY3VlY2VysZKZWPdwXDWHQxn3cFwVio7K5VvYQ1vOQ4rlZ2Vys5KZWelsrO6crC6crC6crDuYATrDsYtbN8tx2HdwQjWHQyW7RuW7RuW7RuW7RuW7RuW7RuW7RuW7ZtkdeVkdeVk/Q5Gsn4HI1l3MIp1B6NYdzBYtm9Ytm/u/Czdq+OwUpll+4Zl+4Zl+6ZYXblZXblZXblZXblZXfkWtu+W47DuYDTrDgbL9g3L9g3L9g3L9g3L9g3rOYXDek7hsGzfDKsrD6srs2zfsGzfDOkOhhzHQbqF8TIP6R7GyzykYH6Zh5TML/M4bB5SNr/MQwrnl3lI6fwyDymeX+YhteZzHtQjC1/mIfXml3lItzNe5iHdz3iZh1SdX+Yh3dF4mYd0S+NlHlg+o7jfyzywfEaBv5d5YPmMIn8v88DyGYX+XuaB9WeF9We97+9nqM3r54W69e+fFxfeOX/7dKnzq+Lby18es/Lx9Tn6+qC4nN/f/PWsveiss+esdiw6qyw6qy46qy06qy86ayw6ay46K+n3Wl/mIf1i68s8sJ8LoXDuyzywnwuheO7LPLCfC6GA7ss8sPuODrvviHr+5ss8sHxGPYHznAf1CM6XeWD5jHoI58s8sHxGPYbzZR5YPqOw7ss8sHwOWD4HLJ8Tls8Jy+eE5XPC8jlh+Yx6IufLPLB8Rrndl3lg+YySu+c8KLr7Mg8sn1F492UeWD6j+O7LPLB8Llg+FyyfC5bPqOdznvOgHtD5Mg8sn1GP6HyZB5bPqId0vswDy2cU5X2ZB5bPDcvnhuXzwPJ5YPmMAr0v88DyeWD5jHpe58s8sHweWD4PLJ9hrldgrldgrldgrldgrlcOVj7LwcpnOVj5LKhnd77Mw8pnQT2985wH9fjOl3lg+Yx6gOfLPLB8Rj3C82UeWD7DXK8ILJ8Fls8Cy2eF5bPC8llh+aywfFZYPqOe5vkyDyyfFZbPCstnheWzwfLZYPmMeqjnyzywfDZYPhssnw2WzzA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/KDA/qDA/qDA/qDA/qDA/qAcrnxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBw3mBw3mBw3mBw3mB+1g5bPB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDB/KDD/KDD/KDD/KDD/KAfrHx2mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB90mB8MmB8MmB8MmB8MmB+Mg5XPAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODAfODCfODCfODCfODCfODebDyOWF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+MGF+sGB+sGB+sGB+sGB+sA5WPhfMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDxbMDzbMDzbMDzbMDzbMD/bByueG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGB+cGB+cGB+cGB+cE5WPk8MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84LD8oB8sPnvOg8vmcB5XP5zyofD7nQeXzOQ8qn895UPl8zoPK53MeVD6f88DymeUHz3lg+czyg+c8sHxm+cFzHlg+s/zgOQ8sn1l+8JwHls8sP3jOA8tnlh8854HlM8sPnvPA8pnlB895YPnM8oPnPLB8ZvnBcx5YPrP84DkPLJ9ZfvCcB5bPLD94zgPLZ5YfPOeB5TPLD57zwPKZ5QfPeWD5zPKD5zywfGb5wXMeWD6z/OA5DyyfWX7wnAeWzyw/eM4Dy2eWHzzngeUzyw+e88DymeUHz3lg+czyg+c8sHxm+cFzHlg+s/zgOQ8sn1l+8JwHls8sP3jOA8tnlh8854HlM8sPnvPA8pnlB895YPnM8oPnPLB8ZvnBcx5YPrP84DkPLJ9ZfvCcB5bPLD94zgPLZ5YffHkAKmweWD6z/ODLA11g88DymeUHXxbUwuaB5TPLD74s3IHNA8tnlh98AYSoeQTmBwXmBwXmBwXmB88feMPmYeWzwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwPygwvygwvygwvygwvygHqx8VpgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfVJgfNJgfNJgfNJgfNJgftIOVzwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgwbzgw7zgw7zgw7zgw7zg36w8tlhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhftBhfjBgfjBgfjBgfjBgfjAOVj4HzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8GzA8mzA8mzA8mzA8mzA/mwcrnhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBhPnBgvnBgvnBgvnBgvnBOlj5XDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/WDA/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/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDC/KDB/KDB/KDB/KDB/KAdrHw2mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB80mB90mB90mB90mB90mB/0g5XPDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODDvODAfODAfODAfODAfODcbDyOWB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGB+MGF+MGF+MGF+MGF+MA9WPifMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDybMDxbMDxbMDxbMDxbMD9bByueC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGC+cGG+cGG+cGG+cGG+cE+WPncMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD/YMD84MD84MD84MD84MD84ByufB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YHB+YH585+UI88fr1Y5Yjf57n04oh4ffUR/f5ykUuvz/Onnb9enueN2vc3fz1rLjprLTprLzrr7DnrnS3o954V8zl+4cXvY0jM+zubvn6KcFTqPzQ9piP8Q9M791+JnN8n/O2sdciVfyX68o/+9d3tOOZPr/91XnBj+ZLzglvLl5wX3Fy+5Lzg9iLn+O+fcofEpfkfqZG0vX1Kd+iHT+l5pEZy7ayy6Ky66Ky26Kz+SGftfPsGcXz8BjGPdCfn2lkf6U7OtbM+0p2ca2d9pDs51876UL3ps7OexfehetOVsz5Ub7py1ofqTVfO+lC96cpZfdFZ1/Sm86xretN51jW96Tzrmt70chNtz1llUW+SRb1JFvUmWdSb7ryd5XvPuqg3yaLeJIt6kyzqTbKoN+mi3qSLepMu6k26qDfdeWvS9551UW/SRb1JF/UmXdSbdFFvskW9yRb1JlvUm2xRb7rzNrPvPeui3mSLepMt6k22qDfZot7ki3qTL+pNvqg3+aLedOctg9971kW9yRf1Jl/Um3xRb/JFvSkW9aZY1JtiUW+KRb3pzts/v/esi3pTLOpNsag3xaLeFIt6Uy7qTbmoN+Wi3pSLetOdt/J+71kX9aZc1JtyUW/KRb0pF/WmWtSbalFvqkW9qRb1pjtvy/7esy7qTQ+1ifvaWRf1pofaxH3trIt600Nt4r521kW9qRf1pl7Um8g7wW9+1kW9ibwL/OZnXdSbyDvAb37WRb3psfaFXznrot70WPvCr5x1UW/asy/8POui3rRnX/h51kW9ac++8POse3qTLNoXLov2hcuifeGyaF+4HL7orHt6kyzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXLon3hsmhfuCzaFy6L9oXron3humhfuC7aF66L9oXr4YvOuqc36aJ94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gu2heui/aF66J94bpoX7gt2hdui/aF26J94bZoX7gdvuise3qTLdoXbov2hduifeG2aF+4LdoXbov2hduifeG2aF+4LdoXbov2hduifeG2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P1iw5w8W7PmDBXv+YMGeP1gwP1gwP1gNy+eG5fPA8nlg+TywfIb5wYL5wRpYPsOeP1iw5w/WwPJ5WPncMD/YMD/YMD/YMD/YByufG+YH+2Dlcx+sfG7Y8wcb9vzBhj1/sGHPH2zY8wcb9vzBhj1/sGHPH2yYH2yYH2yB5bPA8llh+aywfFZYPissnxWWzwrLZ9jzBxv2/MGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGG+cGB+cGB+cGB+cGB+cE5WPk8MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84MD84LD/oB8sPnvOg8vmcB5XP5zyofD7nQeXzOQ8qn895UPl8zoPK53MeVD6f88DymeUHz3lg+czyg+c8sHxm+cFzHlg+s/zgOQ8sn1l+8JwHls8sP3jOA8tnlh8854HlM8sPnvPA8pnlB895YPnM8oPnPLB8ZvnBcx5YPrP84DkPLJ9ZfvCcB5bPLD94zgPLZ5YfPOeB5TPLD57zwPKZ5QfPeWD5zPKD5zywfGb5wXMeWD6z/OA5DyyfWX7wnAeWzyw/eM4Dy2eWHzzngeUzyw+e88DymeUHz3lg+czyg+c8sHxm+cFzHlg+///l3etu3Fh6LuBb4ndYp4vZ2JgEQTDAIAlyAnL3oXssWTNSuyNYpX6M/mNAMPnppUp8q4riU8vyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOex+jkwPxiYHwzMDwbmB+Oy+jkwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBifjAxP5iYH0zMD+Zl9XNifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHC/GBhfrAwP1iYH6zL6ufC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84ON+cHG/GBjfrAxP9iX1c+N+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcH5gcH5gcH5gcH5gfHZfXzwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgxPzgxPzgxPzgxPzgvKx+npgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfXJgfXJgfXJgfXJgfXJfVzwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgxvzgxvzgxvzgxvzg/uy+nljfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfvBgfvBgfvBgfvBgfvBcVj8fzA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8e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","brillig_names":["get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_format","notify_set_min_revertible_side_effect_counter","directive_invert","directive_integer_quotient"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(view)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9WdBXgUVxeGN9kkxIDgDkGKQ3ey0ba0UKwUK5SWOkQ2QIGEQoBC3d3d3d1doaWlpe7u7u79vxPmwslwoUDu8Oeb53mfnZzM3nnPvTOzs3PvziRFVk4nRSORidGV80kg6r8mg9xAzLzq+TTLctmWWBNLLMcSa26JtQGDA7EuluVyLbGullg3S6ynH9NTkv862H+Nxwrz8xNFeQkv7pXG8krKigti+QVlhcVesVdQXFCRVxyPJ4rzi4tKykqKYiVefjzhVRaUxCtjK6cbk1eXFavXlFcepudNzjxjsTA9b954z7xgwGxnKcpV2usff75XZPX8TSp+sz9v3ncL/r4V3AZuT14dN1NyoA5i9Zu8ng7r8w537e7pfUvKzQ3UQ5LjekhxWA+RELfZO90dAxJhet618Z4FwYBt37pT7UMymflOav6uwL51N/6+B9wL7rPsW1HH21Rnh2Xdneyube4P6fjsuv56OSzrHof194DD+rNt2/erbfsBNX+vmr8vsG0/iL8fAg+DR/xtO1WVGZxcHz8fdFgnTZTno/4H3hL/dan/+pj/+rj/usx/fcJ/fdJ/Xe6/PuW/Pu2/rkheWQeD/fU8g7+fBc+B58EL4EXwEngZvAJeBa+B18Eb4E3wFngbvAPeBe+B98EH4EPwEfgYfAI+BZ+Bz8EX4EvwFfgafAO+Bd+B78EP4EfwE/gZ/AJ+Bb+B38Ef4E/wF/hbtgXwr+SGnTAJJIMoSAGpIA00AukgA2SCLJANGvs7bpPgifrS5DVP2JdZYsstsRWWmFRyeiD2rCX2nCX2vCX2giX2oiX2kiX2siX2iiX2qiX2miX2uiX2hiX2piX2liX2tiX2jiX2riX2niX2viX2gSX2oSX2kSX2sSX2iSX2qSX2mSX2uSX2hSX2pSX2lSX2tSX2jSX2rSX2nSX2vSX2gyX2oyX2kyX2syX2iyX2qyX2myX2uyX2hyX2pyX2lyX2tyX2jyX2ryUmM8FYkiWWbIlFLbEUSyzVEkuzxBpZYumWWIYllmmJZVli2ZZYYz/mf96smpL818H+a6x+k9MP3ly/nKZwzwHNQHPQArQErUBr0Aa0Be1Ae9ABdASdQGfQBeSCrqAb6A56gM1AT9AL9AZ9QF/QD/QHA8BAvwJ1XTa11G+OJdbMEmtuibWwxFpaYq0ssdaWWBtLrK0l1s4Sa2+JdbDEOlpinSyxzpZYF0ss1xLraol1s8S6W2I9LLHNLLGellgvS6y3JdbHEutrifWzxPpbYgMssYF+TE/mJHuw/xqr31Rnn63vlxHZN+pbVqJSppiXE3XnNTcazpfMYFvUJ2dpi2ZO6m9luzavf1l5fv15LRy2xbyG3Bb5qzy9lvXLOaZy9lrVp6y8OvXntXbYFjUNsy1iAU+vzUbmXFi5Rs5e240rq9hSf147h20xv6G1RbHV02u/4TkXrSVnr8OGllW01vrzOjpsiwUNpy3y1uHpddqQnIvWmbPXef3LKv+P+vO6OGyLhQ2hLYr+09PLXb+cY+uRs9d1fcqKrVf9ed0ctsW+/9+2KFhPT6/7f+Wcv945ez3WWVZ+5QbUn7eZw7ZY9P9qi6IN8vR6rj3n4g3M2eu1lrJKKje4/rzeDtti8aZvi9hGeHp9bDnHNipnr++aZXkbWX9eP4dtsd+mbIuKjfb0+tfNOV6PnL0Bqqy8ynrVnzfQYVvsv4naIla/yXN4fcBz+P3Wq3HYFgeQtIXD70Gew/N4b6HDtjiQpC0cnu95Ds9XvMUO2+IgkrZw+LnmOTwuewc4bIuDQ2qLqOO2cLj/eg63P89l/dX2V0ZW9kPIABcz2OdxNa/HUOixE3rMhB4rocdI6LERekyEHguhx0DosQ96zIMe66DHOOixDXpMgx7LoMcw6LELesyCHqugxyjosQl6TIIei6DHIOixB3rMgR5roMcY6LEFekyBHkugxxDosQN6zIAeK6DHCOixAXpMgB4LoMcA6L5/3eev+/p1H7/u29d9+rovX/fh67573Wev++rr9NGred0nr/vidR+87nvXfe66r133seu+dd2nbvrScyMrJ91PF+zH0/18uh9Q9xPqfkTdz6j7IXU/pe7H1P2cuh9U95PqflTdz6r7YXU/re7H1f28uh9Y9xPrfmTdz6z7oXU/te7H1v3cuh9c95PrfnTdz2764Tc3B3fVHjIN9l9j9Zu8zR1+vskgyGTlGKa3DFZ0VFZM+8aiIQpL4a7L9Rw2YFh5e2ojdlTuJt3YloS0seVFQxTOC2FjizfwjU3yjoewsdlc65v/Un/HSHZcBy4PCPlRzh32sZB22IJoiMIFIeywhQ18h5W8C8k/HR4PaWMrioYoXBTCxlbcwDc2ybuY5NNhmb9juP50cHlAKImGW4ex+k21Zyv5Ufdts0UDz1u28ZIQ8t6S9GzgiZAO0FtFQxTeKoQD9KAGfoCWvAeRnw08GdLGtnU0ROGtQ9jYtmngG5vkvQ3J2cByf8dwfTbg8oAwuIF/Ksqn9pYhfCoOaeB51+6HIeS9LenZwFMhHaCHRkMUHhrCAXpYAz9AS97DyM8Gng5pYxseDVF4eAgb24gGvrFJ3iNIzgZW+DuG67MBlweEkQ38U1E+tbcN4VNxuwaet2zjI0PIe1RIY5tce27vzDOeH6bn6I33rAgGascrROre+EjqwYxzki5aM79EzY+O1r3x0Rj8PRaMA+Oj4d/Ua6m7D09vjMNj2w4hbeuu689hL5g31mH9TSCpP4cdO944h/U3Mer2pDJ4bNhBHRsmqPmJan584NiwI/6eBHYCO2+CY8Myh22zo8O2mUyybTu8Ju5Nclh/u5DUn8PLvN5ODutv15CPDZPVMWAXNb+rmt85cGzYDX/vDvYAe26CY8Nyh22zm8O22Ytk23Z4hczb3WH9TSGpP4cXfbw9HNbf1JCPDXupY8AUNT9Vze8ZODaU4u8yUA4qNsGxYYXDtil12DaJkNsmodqgTM2Xq/mKQNtU4u9pYDqYEa1bnm4TF9dMRoVwTWJvd3XqRdTk2nOmO89Km1+sfpMn28HeIbTPLJJrRrM33jMeDNj2zZlqH5yl5puo+dmBfbMKf1eDOWCf6H8/vKC+dZDkcHuqctxzmBRZ896fenLlnRSxdxq5WEd+UUVpeUVR3Fq468Z0WSm9I+HsxA15A+5DknOyw5z7kuQcdZhzv8im+YCK1W/y+kfcHhvW1jax+k3eAIeetyRztM1AVVZeQWlBeaKgqLwoXlxemogXl8WLKgrzS4sLE2VxdNtUFJRVJmLx0kShVxjPi5fGK0risZL8gkRpYSJWklcapufmEY76jJF4eiSeeSSecRLPfBLPAhLPQhLPIhLPYhLPEhLPLUg8tyTx3IrEcxCJ59YkntuQeA4m8RxC4rktiedQEs9hJJ7DSTxHkHiOJPHcjsRzFInn9iSeo0k8x5B4jiXxHEfiOZ7EcwcSzwkknhNJPHck8ZxE4rkTiefOJJ6TSTx3IfHclcRzNxLP3Uk89yDx3JPEcy8SzykknlNJPEtJPMtIPMtJPCtIPBMknpUkntNIPKeTeM4g8dybxHMmiecsEs/ZJJ5VJJ7VJJ5zSDz3IfGcS+I5j8SzhsRzPonnAhLPhSSe+5J4LiLxXEziuR+J5/4kngeQeB5I4nkQiefBJJ6HkHgeSuJ5GInn4SSeR5B4HknieRSJ59EknseQeB5L4nkciefxJJ4nkHieSOJ5EonnySSep5B4nkrieRqJ5+kknmeQeJ5J4nkWiefZJJ7nkHieS+J5Honn+SSeF5B4XkjieRGJ58UknpeQeF5K4nkZieflJJ5XkHheSeJ5FYnn1SSe15B4XkvieR2J5/UknjeQeN5I4nkTiefNJJ63kHjeSuJ5G4nn7SSed5B43knieReJ590knveQeN5L4nkfief9JJ4PkHg+SOL5EInnwySej5B4PkriuYTEcymJ52Mkno+TeC4j8XyCxPNJEs/lJJ5PkXg+TeK5gsTzGRLPZ0k8nyPxfJ7E8wUSzxdJPF8i8XyZxPMVEs9XSTxfI/F8ncTzDRLPN0k83yLxfJvE8x0Sz3dJPN8j8XyfxPMDEs8PSTw/IvH8mMTzExLPT0k8PyPx/JzE8wsSzy9JPL8i8fyaxPMbEs9vSTy/I/H8nsTzBxLPH0k8fyLx/JnE8xcSz19JPH8j8fydxPMPEs8/STz/IvH8m8TzHxLPf0k8pUAGzyQSz2QSzyiJZwqJZyqJZxqJZyMSz3QSzwwSz0wSzywSz2wSz8Yknk1IPJuSeOaQeDYj8WxO4tmCxLMliWcrEs/WJJ5tSDzbkni2I/FsT+LZgcSzI4lnJxLPziSeXUg8c0k8u5J4diPx7E7i2YPEczMSz54knr1IPHuTePYh8exL4tmPxLM/iecAEs+BJJ6bk3jGSDw9Es88Es84iWc+iWcBiWchiWcRiWcxiWcJiecWJJ5bknhuReI5iMRzaxLPbUg8B5N4DiHx3JbEcyiJ5zASz+EkniNIPEeSeG5H4jmKxHN7Es/RJJ5jSDzHkniOI/EcT+K5A4nnBBLPiSSeO5J4TiLx3InEc2cSz8kknruQeO5K4rkbiefuJJ57kHjuSeK5F4nnFBLPqSSepSSeZSSe5SSeFSSeCRLPShLPaSSe00k8Z5B47k3iOZPEcxaJ52wSzyoSz2oSzzkknvuQeM4l8ZxH4llD4jmfxHMBiedCEs99STwXkXguJvHcj8RzfxLPA0g8DyTxPIjE82ASz0NIPA8l8TyMxPNwEs8jSDyPJPE8isTzaBLPY0g8jyXxPI7E83gSzxNIPE8k8TyJxPNkEs9TSDxPJfE8jcTzdBLPM0g8zyTxPIvE82wSz3NIPM8l8TyPxPN8Es8LSDwvJPG8iMTzYhLPS0g8LyXxvIzE83ISzytIPK8k8byKxPNqEs9rSDyvJfG8jsTzehLPG0g8byTxvInE82YSz1tIPG8l8byNxPN2Es87SDzvJPG8i8TzbhLPe0g87yXxvI/E834SzwdIPB8k8XyIxPNhEs9HSDwfJfFcQuK5lMTzMRLPx0k8l5F4PkHi+SSJ53ISz6dIPJ8m8VxB4vkMieezJJ7PkXg+T+L5AonniySeL5F4vkzi+QqJ56sknq+ReL5O4vkGieebJJ5vkXi+TeL5DonnuySe75F4vk/i+QGJ54cknh+ReH5M4vkJieenJJ6fkXh+TuL5BYnnlySeX5F4fk3i+Q2J57cknt+ReH5P4vkDieePJJ4/kXj+TOL5C4nnrySev5F4/k7i+QeJ558knn+ReP5N4vkPiee/JJ6RZA7PJBLPZBLPKIlnColnKolnGolnIxLPdBLPDBLPTBLPLBLPbBLPxiSeTUg8m5J45pB4NiPxbE7i2YLEsyWJZysSz9Yknm1IPNuSeLYj8WxP4tmBxLMjiWcnEs/OJJ5dSDxzSTy7knh2I/HsTuLZg8RzMxLPniSevUg8e5N49iHx7Evi2Y/Esz+J5wASz4EheSYHPOOxwvz8RFFewot7pbG8krLiglh+QVlhsVfsFRQXVOQVx+OJ4vziopKykqJYiZcfT3iVBSXxSr/sng5z3nwT5Ryr3+TFkt3V3x0k26NH4plH4hkn8cwn8Swg8Swk8Swi8Swm8Swh8dyCxHNLEs+tSDwHkXhuTeK5DYnnYBLPISSe25J4DiXxHEbiOZzEcwSJ50gSz+1IPEeReG5P4jmaxHMMiedYEs9xJJ7jSTx3IPGcQOI5kcRzRxLPSSSeO5F47kziOZnEcxcSz11JPHcj8dydxHMPEs89STz3IvGcQuI5lcSzlMSzjMSznMSzgsQzQeJZSeI5jcRzOonnDBLPvUk8Z5J4ziLxnE3iWUXiWU3iOYfEcx8Sz7kknvNIPGtIPOeTeC4g8VxI4rkvieciEs/FJJ77kXjuT+J5AInngSSeB5F4HkzieQiJ56EknoeReB5O4nkEieeRJJ5HkXgeTeJ5DInnsSSex5F4Hh+SZ3LAs76/g051mPMJJDmnOcz5RJKcGznM+SSSnNMd5nwySc4ZDnM+hSTnTIc5n0qSc5bDnE8jyTnbYc6nk+Tc2GHOZ5Dk3MRhzmeS5NzUYc5nkeSc4zDns0lybuYw53NIcm7uMOdzSXJu4TDn80hybukw5/NJcm7lMOcLSHJu7TDnC0lybuMw54tIcm7rMOeLSXJu5zDnS0hybu8w50tJcu7gMOfLSHLu6DDny0ly7uQw5ytIcu7sMOcrSXLu4jDnq0hyznWY89UkOXd1mPM1JDl3c5jztSQ5d3eY83UkOfdwmPP1JDlv5jDnGxzmLOMBUvyyeqv8k/w6iPr/l/5z6U+W/lXpb5T+N+mPkv4Z6a+Q6/dyPVuu78r1Trn+J9fD5PqQXC+R6wfyfVq+X8r3Lfn+Iefjcn4q52ty/iKf5/L5lgvk+CfHA9k/ZHuR+pN7wfdSjkcmr/buA/qCfqA/GAAGgs2ljoAH8qQdQT4oAIWgCBSDErAF2BJsBQaBrcE2frsNAduCoWAYGA5GgJFgOzAKbA9GgzFgLBgHxoMdwAQwEewIJoGdwM5gMtgF7Ap2A7uDPcCeYC8wBUwFpaAMlIMKkACVYBqYDmaAvcFMMAvMBlWgGswB+4C5YB6oAfPBArAQ7AsWgcVgP7A/OAAcCA4CB4NDwKHgMHA4OELqHxwFjgbHgGPBceB4cAI4EZwETgangFPBaeB0cAY4E5wFzgbngHPBeeB8cAG4EFwELgaXgEvBZeBycAW4ElwFrgbXgGvBdeB6cAO4EdwEbga3gFvBbeB2cAe4E9wF7gb3gHvBfeB+8AB4EDwEHgaPgEfBErAUPAYeB8vAE+BJsBw8BZ4GK8Az4FnwHHgevABeBC+Bl8Er4FXwGngdvAHeBG+Bt8E74F3wHngffAA+BB+Bj8En4FPwGfgcfAG+BF+Br8E34FvwHfge/AB+BD+Bn8Ev4FfwG/gd/AH+BH+Bv8E/4F8gB4MkkAyiIAWkgjTQCKSDDJAJskA2aAyagKYgBzQDzUEL0BK0Aq1BG9AWtAPtQQfQEXQCnUEXkAu6gm6gO+gBNgM9QS/QG/QBfUE/0B8MAAPB5kAOch7IA3GQDwpAISgCxaAEbAG2BFuBQWBrsA0YDIaAbcFQMAwMByPASLAdGAW2B6PBGDAWjAPjwQ5gApgIdgSTwE5gZzAZ7AJ2BbuB3cEeYE+wF5gCpoJSUAbKQQVIgEowDUwHM8DeYCaYBWaDKlAN5oB9wFwwD9SA+WABWAj2BYvAYrAf2B8cAA4EB4GDwSHgUHAYOBwcAY4ER4GjwTHgWHAcOB6cAE4EJ4GTwSngVHAaOB2cAc4EZ4GzwTngXHAeOB9cAC4EF4GLwSXgUnAZuBxcAa4EV4GrwTXgWnAduB7cAG4EN4GbwS3gVnAbuB3cAe4Ed4G7wT3gXnAfuB88AB4ED4GHwSPgUbAELAWPgcfBMvAEeBIsB0+Bp8EK8Ax4FjwHngcvgBfBS+Bl8Ap4FbwGXgdvgDfBW+Bt8A54F7wH3gcfgA/BR+Bj8An4FHwGPgdfgC/BV+Br8A34FnwHvgc/gB/BT+Bn8Av4FfwGfgd/gD/BX+Bv8A/4F8iJQBJIBlGQAlJBGmgE0oE8l16e+S7PU5dnlctzwOUZ2/L8ank2tDx3WZ5pLM8LlmfxynNu5Rmy8nxWefapPFdUntkpz8OUZ03KcxzlGYny/MFcIM/Nk2fSyfPe5Flq8pwyeQaYPF9Lnl0lz4WSZy7J84zkWUHyHB55xo0880WepyLPF5Fnd8hzMeSZE/I8B3lWgjyHQO7xL/fPl3vTy33f5Z7qcr9yuRd47X22gdwfWu69LPc1lnsGy/145V63ch9ZuUer3P9U7i0q9+2Ue2LK/SblXo5yn0S5B6Hc30/unSf3pZN7vsn91OReZXIfMLnHlty/Su4NJfddknsayf2C5F48cp+bqUDuzyL3PpH7isg9O+R+GHKvCbmPg9wjQe4/IL/tl9/Ny2/S5ffe8ltq+Z2y/AZYfl8rv12V34XKby7l94zyW0H5HZ78xk1+Pya/zZLfPclviuT3OvJbGPmdycFAfh8hvz2Qcf0yZl7Go8v5l4yjljHKMv5XxtbKuFUZEypjJGXMoIyhkzFlMsZKxhzJGBwZkyJjNGTMgvThS5+29PFKn6f0AUqfmPQRSZ+J9CHINXW5xizXXOUapFyTk2tUcs1GrmHId3r5jivf+eQ7kHwnkHNkOT81U3M139F/La2pScyeU5NbU51bWlGRu3BGzfTc6gWJuZWzquW0qPbc1UyD/NcR86vKa2ZUV+ViuRmVi6bMmTtjQWlNYkrp/JrpKCC3vLQqt7pq1qLcsgTmZ81KVOTOqymtmSHzco5Ve5Jgpq7+69jEvHml0xK5VdU1uVJQ9dwZi/HGskW5peXl1fOr5IBde7Ys032qgHb+65C5c0sX5c6oqkjsm1s9vya3ujK3DO+rmKff+OjGvnHFBtadfu/L9Xjv6xsr/OHGvvGbDbWN+gvJqY1M8rUo2Y9JSL46Dfb/jtVv8jKUnNOyi0tqy04J0Ts1nLJrh/sOTV9ZlvE365KvpKZ9zDLpqmHl/8P8eFTFhgfKk9iI9DXLHunH0lRsOz/WSMVGqXWb2Pb+HxkqNtqPZarYGD+WpWJj/Vi2io1LXz1vXsf7sSZ+TOq+WWT1JPk19efNNis+zdXy7raxgtohuy3CKDuWXzt8MOrn20zVQYofa65iqX7MuMifP6j/n+z/PyeyejmznYzV5UTqTpJfWjj5JZIC60pR82admZHQ9jP59rRqPWb9Zl1m25Ht0Wxr0xI1Q/BBNnlGTRU+25KUlSllrIqZ12CWwWVkilpiMjVV/9O1EA1YRwPWOWp5fRSIBspfVwskq/elBZaTraKRKsPhVuGty8msMzMS1la5cqtoFFh/WqBOJP90tf5kd+uvPaJkhFO3tRdGMwK5ZQTqtnFk9dFat7E5Wqf678tUdWHqxiyTpd6Xqv4u9F9z1Pt1PWYG3DJV2TJJO8RUGVEVNy66PJefyo0jq7fFdLXeLdS6Q9onYvoYY+rfuDQKff0rz3bC2SZj5akqt+dVvZrydb1HlIOe1nbcygwsJzlkhZNHxbqczDozlVMYx62swPqD+4/kn62WcbTu2mNW43DykmuDq8o2eTUO1KvpqNExeZ85EzT7TBO1vKkXs0xT9b5U9fcE/zVHvT9bLWtikcA69DFrtCrDbBf6jNhs//q4MkmtIzOQhz7embhZ5i5VxmSVW5pyNOUGPwuCn3O2Y3JGwLVpZM2c6lt2I1V2eqDsEI9zeTYnm/fa9jPtbXIxy0Yja35mmvPDaKTuuU1EvSdYJ+Y9IdZD3JajrR6yA8tkWerB5JOtcg/JO9/mZPMOHk+yLd762BKyd4HNyeYdPNY0tnibXMyyUbWcPm4Ftzu9/qilTjbBdldoy9FWD00DyzSx1ENjNR8J17vI5mTzzgks09TibXLJCd+72OZk8w5eYcmxeJtczLJRtZz+bA1ud3r9UUudbILtrsSWo60emgeWaWapB5OPWTZE71Kbk827RWCZ5hZvk0uL8L3LbE4275aBZVpYvE0uZtmoKktf9Qtud/qaRtRSJ+Y9TVUsqtYbtSy/PtdlgmVlROpe/3H4vbHcVs/BK1zrqmedr6kvs2xjtZy+qmz+r68Mt1K5mlhrf16fB7fx5/Vnb1t/Xl8Zbqfmzavp7tDn+B2Uv4mZK+U5KtbJn9dXWTv78/oqaxd/Xn9m5vrz+oq5qbcWKmbqSNefaYtWKmbKaa1iZn1tVMzUb1sVM/Wr68fUb3sVM/XbQcVM/eqeBFO/nVTM1G9nFTP120XFTP3m+q9Zkbrng6Y+9HdSx9t/hT6vCn53ylZxs8z9/qs+pkaUW/AczbYvBc8/zXvMevW5ZXbodbDy+3OT9agDs8ySddSB7pHQ32VMj4TraypS7N9q3avaUq1vbefE62oT8x5TDzlqGX39YG3fgfQxP1OVpZfR10vNMs/4r7a61dcG9HEtWJ6+NqCPy1GLk/HW+1okkFtaYBl9rcEs88o6vMO7prZy/9XbqP6urevXLPPGOjxt24Ft/w22uXmPWe/avtvrfdmUlRyp+71fr19/t88MvCfEY2LMdi0/JeCn2/4j//W/jgf6mlQ4x4N8L3g8WLWtqvX91zXQdV23MPWgjwe6PYPXtILX4PV1+uB+pa/VmWW+9V/Xdjww+7Q+RwqWt0YfRDjH4trtJl2NGEhR6zL1n6yWSVceqervvyKr4xnmJMYvz2xLptza45sZVZC+9velBN6Xo5ZJU+9rFHhfI+Vdu2xk5WBimbIC649ayjHtmxYoJ1Utk5S0uuyoP6977PX+08zyfzMl1f1z1XZQO69GXmSE2P6ZgfY360pR+ZtlMgPtb/5umrQ6nrWW9s9Q7W+2m6z0tb8vNfC+HLVM+jq2mwxL+6f5fpmRuscVl301uq1lO+vjl8s50iq/IMTRUHnhjUCpO9IqVW0DMkXV/4YGtgPbKKzQRpsV5+eHWL9eiH3mtf0pwbEUJg99fSA4vmRdx7qGMgZEX8sxOW3qukyz1GVUfTaZ2KrPRxVLDWz38qe+bmDer9fRw5+X6xrDA59PDOce3SOr4w3x3MNco8ky74kE1hWp+x79/U+fg6YG3tco8L7syOpz3jml5TMnJmrmz62ap3c7XZyektW8vrwZPHzq5czmkGwpTzTMR5O8tgy8Z7D/d6x+U+1hrlU4Zcd0Mxl/fclT14Wrder6182tT0HN/9OVS5J7F08VWbvOYBvrS9Dmf/8DB/S5xmpVAgA=","debug_symbols":"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","brillig_names":["get_auth_witness","pack_returns","directive_invert"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9VWzU7DMAx2Wdqm6yomeAB6BA7QSUPacRK/D8ALTKMSu2xoLTw/S2dr39KyC4m0RaqcOLH95bOTNKBt05sv4H7IMqJ2kzVTlsX/2sihr8InzuBEcJ6dCM7eieBUDnEGHTiNVNw3586cuZi257E1icYm0T2YpwOOAiuoaXfQv2b5/rmo8vlqWa9n8zr/WJVVvlzV+XdV5l/rxc+sLs24rFosJwwIQU/dsDZKrI078z0ZzxPG7gH3g/Hb9+O7MIl91DvuCWKZonjlOZEBfxnPE9hntCucJ9BJwT2DTl6EF9DFtB/L4NF+8jXxmK8iAw4JYmDDwyb13idveW5endSK37fiNzllwjXoFA9S0IVWzZjhFcxr2JPM31p7Qyw9C4vxG/rggnMf+fBdFGPkUHVwGHZwGHVweLn53iw/BnesveBuXhQNGBXEEpxnsEYDjhDGN7TTJ1IE7E94Eb/nZu9SR/pvO2XZDWFNBHaxZRcD7mbt5su5nzKfeAc4/DMb2Xe2y78+PMuKfUss2U8Ia+5ZXlC7IQdEfu/ABDC5fiMP3a8S8xju14GFaQg6rMWB5Wtg+ToGu4z2uRWd3OUpyF9gHhYxHg4AAA==","debug_symbols":"lZDBCsMgDIbfJWcPo7oWfJUxirZaAhKL2sEQ333ptkOvXkK+5P8uf4XV2WObkXzMoB8VQlxMwUhMtQmwCUPAbb6e4XYONXzzeTd0Yi4mFdBynAQ4WnmbBvY9BgdaSdmeApTsV1S/cu9Xxk6lMb5MQmOD+zflD1ouxZX3/vtw+AM=","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_abi"}]}},"file_map":{"116":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::oracle::logs_traits::ToBytesForUnencryptedLog;\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (n as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"26":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_le_radix(256)\n }\n // docs:end:to_le_bytes\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_be_radix(256)\n }\n // docs:end:to_be_bytes\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_radix_example\n}\n"},"265":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"266":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"270":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"293":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"313":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"326":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"432":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr","source":"use dep::authwit::auth_witness;\nuse dep::aztec::{\n protocol_types::{address::PartialAddress, utils::arr_copy_slice},\n keys::{PublicKeys, PUBLIC_KEYS_LENGTH}\n};\n\nstruct AuthWitness {\n keys: PublicKeys,\n signature: [u8; 64],\n partial_address: PartialAddress,\n}\n\nimpl AuthWitness {\n fn deserialize(values: [Field; 77]) -> Self {\n let mut signature = [0; 64];\n for i in 0..64 {\n signature[i] = values[i + PUBLIC_KEYS_LENGTH] as u8;\n }\n Self {\n keys: PublicKeys::deserialize(arr_copy_slice(values, [0; PUBLIC_KEYS_LENGTH], 0)),\n signature,\n partial_address: PartialAddress::from_field(values[76])\n }\n }\n}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> AuthWitness {\n let witness: [Field; 77] = auth_witness::get_auth_witness(message_hash);\n AuthWitness::deserialize(witness)\n}\n"},"433":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr","source":"mod util;\nmod auth_oracle;\n\ncontract SchnorrSingleKeyAccount {\n use dep::aztec::prelude::PrivateContext;\n\n use dep::authwit::{entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions};\n\n use crate::{util::recover_address, auth_oracle::get_auth_witness};\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[aztec(private)]\n #[aztec(view)]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n let witness = unsafe {\n get_auth_witness(outer_hash)\n };\n recover_address(outer_hash, witness).eq(context.this_address())\n }\n}\n"},"434":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/util.nr","source":"use std::schnorr::verify_signature;\nuse dep::aztec::prelude::AztecAddress;\nuse crate::auth_oracle::AuthWitness;\n\npub fn recover_address(message_hash: Field, witness: AuthWitness) -> AztecAddress {\n let message_bytes: [u8; 32] = message_hash.to_be_bytes();\n // In a single key account contract we re-used ivpk_m as signing key\n let verification = verify_signature(\n witness.keys.ivpk_m.inner.x,\n witness.keys.ivpk_m.inner.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(witness.keys.hash(), witness.partial_address)\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"74":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field\n) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\nstruct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"78":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"86":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\nstruct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\ntrait ToPoint {\n fn to_point(self) -> Point;\n}\n\nstruct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nstruct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-x8664","name":"SchnorrSingleKeyAccount","functions":[{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","view"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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ZqQcMyPlmBkpx8xID14j/Z2djpmRcsyMlGNmpBwzI+WYGanGzEg1ZkaqMTNSjZmRHrxQ+js7HTMj1ZgZqcbMSDVmRqoxM1KPmZF6zIzUY2akHjMjPXi19Hd2OmZG6hPNSLf31vaJZqSDTk80Ix10Ct4vLe0ll0d71+1O1Va9V6IWkh8f/taskFdM379Z8Akc928WfArH/ZsFn8Rx/2Z9UrPgEznu3yz4VI77Nws+meP+zYJP57h/s5MmKHn0BLW9D8ayT70fm/2jHGGVo6xyjFWOs8pZrHKCVc6D368yLudXZMXncopVTqPKefDq38NyhFWOssoxVjnOKmexyglWOYl6k9BildOocow1K6M3gq6l73Xs/53x6YMHesvncfXoU+cOq/enrh596txh9ayPBcZ6AzLWG5Cx3oCc9QbkrJs113ciSqpfXsL8oCArey/IKj+duijXtxHe+TX8Aa+xHvAa8YDXyAe8Rj3gNfrrX+P6jrM7v4Y84DVYN2UX66YsekPW0WnOgt56dVw9+kThw+rJ3wY7rp78Da/j6snfbD+sHr0Z6rh69H2Uw+rR91EOq0ffRzms3lFv/cH6BWiw7nQE605HsO50BOtOR7LudCTrTkeyPgEl6xNQslI5WamcrFROVionK5WTlcrFSuVipXKxUrlYqVysVC5WKhcrlYuVysVK5WKlcrNSuVmp3KxUblYqNyuVm5XKzUrlZqVys1K5UamsGyqVdUOlsm6oVNYNlcq6oVJZN1Qq64ZKZd1QqawbKpV1Y6UyizsqizsqizsqizsqizsqizsqizuqsFJZWKksrFRWViorK5WVlcrKSmVlpbKyUllZqczijsrijsrijsrijmqsVDZWKhsrlY2VysZKZZYBVJYBVJYBVJYBVJYBVJYBVGelsrNS2Vmp7KxUdlYqOyuVnZXKzkrlxUrldaJDFW6uu9Z1okMVDjo90aEKB536mE5PdKjCQadTDlVQNKO9b6dTDlVQNM+9a6doynvfTsfMSMH6UBysD8UsxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxKssxGssxGssxGssxGssxGsbKpWNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXiNhXhtsVKZdeyqsY5dtcVK5cVK5cVK5cVK5cVK5cVK5WClcrBSmWX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7jGX7nGX7nGX7nGX7nGX7fEOlsrNsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Nsn7Ns32LZvsWyfYtl+xbL9q0NlcqLZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7Fsn2LZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7Fsn2LZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7Fsn2LZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b5g2b5g2b5g2b5g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lyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzblyzbVyzbVyzbVyzbVyzbVxsqlYtl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+4pl+5pl+5pl+5pl+5pl+3pDpXKzbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+jbJ9tKNu3l0NK5b0cUirv5ZBSeS+HlMp7OaRU3sshpfJeDimV93JIqbyXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pl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9i2W7Vss27dYtm+xbN9i2b7Fsn2LZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbFyzbFyzbFyzbFyzbFxsqlYNl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+4Jl+5Jl+5Jl+5Jl+5Jl+3JDpXKybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+ybF+xbF+xbF+xbF+xbF9tqFQulu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0rlu0r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Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ytm+Ztm+Ztm+Ztm+Ztm+3lCp3Czb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yzb1yjbtzaU7dvLIaXyXg4plfdySKm8l0NK5b0cUirv5ZBSeS+HlMp7OaRU3sthpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3b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L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1i2L1m2L1m2L1m2L1m2LzdUKifL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9iXL9hXL9hXL9hXL9hXL9tWGSuVi2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5i2b5m2b5m2b5m2b5m2b7eUKncLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvXLNvX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VyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzbVyzb1yzb1yzb1yzb1yzb1xsqlZtl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+5pl+xpl+3JD2b69HFIq7+WQUnkvh5TKezmkVN7LIaXyXg4plfdySKm8l0NK5b0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3loFJZWLZPWLZPWLZPWLZPNlQqC8v2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Ccv2Kcv2Kcv2Kcv2Kcv26YZKZWXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmXZPmPZPmPZPmPZPmPZPttQqWws22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cPtn26mf14sG5ZH8u59uDs7fLo0u3nc/uVh0drv1fd/qHVH53qmE5tTKc+ptM1ptMY02mO6bTGdNpDOvUHc9jv7BQ8I+3zXV2eur3rdqe6/36x3p98//VVfnz4H82Cx6T7NwuelO7frE9qFjwv3b9Z8Mh0/2b/+tSU8v4Skm4HH6Az8vLg+nllMn6UU6xyGlXOHXT2b5VT2+VuR5l+LkdY5SirHGP923FWOYtVTrDKYaWysFJZWKmsG6scYZXDSmU1VjnOKmexynlsKqvqezmqKR/LufLMa+l7Hft/Z3warTWfuvp66ur7mas31juKsd5RTFnlGPmfWvTlqVdLf/6n5k9d/Xrq6q++vUmqXyoyP6jfyt5fxCr982vkA16jHvAa/fWvcZ2O3/k15AGvoc/8U+FPnaf+1HnqT52njv64cFg9+uPCYfWF+uTojSpnsW7cL9aN+8W6RbRYt4juwN/vWg7rFtEKVjnJKoeVyouVysFK5WClcrBSOVipHKxUDlYqByuVg5XKwUrlYKVyslI5WamcrFROVionK5WTlcrJSuVkpXKyUjlZqVysVC5WKhcrlYuVysVK5WKlcrFSuVipXKxULlYqNyuVm5XKzUrlZqVys1K5WancrFRuVio3K5UblcprQ6Xy2lCpvDZUKq8NlcprQ6Xy2lCpvDZUKq8NlcprQ6Xy2lipzMKTi4UnFwtPLmGlsrBSWVipLKxUFlYqCyuVhZXKykplZaUyC08uFp5cLDy5WHhyKSuVlZXKykplZaWysVLZWKlsrFQ2ViobK5WNlcrGSmVjpbKxUtlYqeysVHZWKjsrlZ2Vys5KZWelsrNS2VmpzLJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7Fsn2LZfsWy/Ytlu1bLNu3WLZvsWzfevDRtmpxWbni8mHlytVN77FX/P7UUfGh1d8/dGM9+NTc7+zUxnTqYzpdYzqNMZ2ijtlcrMOPF+vw48U6/HixDj9erMOPF+vw48U6/HixDj9erMOPF+vw48U6/HixDj9erMOPV7NSuVmp3KxUblYqNyuVm5XKzUrlZqVyo1I5NlQqx4ZK5dhQqRwbKpVjQ6VybKhUjg2VyrGhUjk2VCrHxkplYaWysFJZWKksrFQWVioLK5WFlcrCSmVhpbKwUllZqaysVFZWKisrlZWVyspKZWWlsrJSWVmprKxUNlYqGyuVjZXKxkplY6WysVLZWKlsrFQ2ViobK5WdlcrOSmVnpbKzUtlZqeysVHZWKjsrlZ2Vys5K5cVK5cVK5cVK5cVK5cVK5cVK5cVK5cVK5cVK5cVK5WClcrBSOVipHKxUDlYqByuVg5XKwUrlYKVysFI5WamcrFROVionK5WTlcrJSuVkpTLL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9iXL9iXL9iXL9iXL9uWGSuVk2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5i2b5i2b5i2b5i2b7aUKlcLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNvXLNvXLNvXLNvXLNvXGyqVm2X7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7GmX7akPZvr0cUirv5ZBSeS+HlMp7OaRU3sshpfJeDimV93JIqbyXQ0rlvRxWKqNs3/5MrFRG2b79mVipjLJ9+zOxUhll+/ZnYqUyyvbtz8RKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nIem8q6/+L+x4N1f4P6WM61B2dvl0eXbj+f2688PFr7ver2D63+0emD2eB3dipjOtUxndqYTn1Mp5j37SsPXunvD17Vlwdr+I/iMe/y/57iMTPBv6f44v6A7J3W5anbu27/gKitqvcnt5D8+PA/mgXPJ/duVjbwiHL/ZsFTyv2bRQ8q+3vu5dG2+efqTzR8lF3ekmvFn96SZfMxna4xncaYTnNMp+AZ6Lc7vTw6WvRTpye6QXO7UznRDZqDTk90g+ag0xPdoDno9Ewz0u1OfUynZ5qRbnd6phnpdqdnmpFudzpmRpIxM5KOmZF0zIykY2YkHTMjPXhLx3d2OmZG0jEzko6ZkXTMjKRjZiQbMyPZmBnJxsxINmZGevDOnO/sdMyMZGNmJBszI9mYGcnGzEg+ZkbyMTOSj5mRfMyM9OANVt/Z6ZgZycfMSD5mRvIxM5KPmZHWmBlpjZmR1pgZaY2ZkR68T+47Ox0zI60xM9IaMyOtMTPSGjMjxZgZKcbMSDFmRooxM9KDtzt+Z6djZqQYMyPFmBkpxsxIMWZGyjEzUo6ZkXLMjJRjZqQH71r9zk7HzEg5ZkbKMTNSjpmRcsyMVGNmpBozI9WYGanGzEgP3nz8nZ2OmZFqzIxUY2akGjMjnWmB9e1Oz7TA+qDTMTPSmRZYH3Q6ZkY60wLrg07HzEg9ZkbqMTMSeY/2nTudMiMpeYP2nTudMiMpe3f2XTudMiPp5mM6nTIj6an2bN/udMqMpGP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzrWP2bOuYPds6Zs+2jtmzbWP2bNuYPds2Zs+2jdmzbZuP6XTKjGRj9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPto3Zs21j9mzbmD3bNmbPtj16z7bFeq/dRW53Kiu63p96tfTHTv+oXp+6eiNX3yt/Vv/2T+vP1ftTV7+euvp46uoTXH2U6ftTR4Udpav1peoVn9K1xnTaUzp99H7pb+yUPBvct1PyHPG7nd6c95I8c9y3Ux/TKXmWuW+n5Lnnvp2eaUa63emZZqTbnZ5pRrrZaZ1pRrrd6ZlmpNudjpmRasyM9Oj90t/Y6ZgZqcbMSDVmRqoxM1KNmZF6zIzUY2akHjMj9ZgZ6dH7pb+x0zEzUo+ZkXrMjNRjZqSeMiP5NmVG8m3KjOTblBnJtykzkm8+ptMpM5JvU2Yk36bMSL5NmZF8GzMjyZgZScbMSDJmRpIxM9Kj90t/Y6dj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bF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+zbF+jbF9vKNu3l0NK5b0cUirv5ZBSeS+HlMp7OaRU3sshpfJeDimV93JIqbyXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFQqC8v2Ccv2Ccv2Ccv2yYZKZWHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmHZPmXZPmXZPmXZPmXZPt1Qqaws26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs26cs22cs22cs22cs22cs22cbKpWNZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfuMZfucZfucZfucZfucZft8Q6Wys2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfs2yfP9j26Wb248G6ZX0s52rtdXnq9v758PJrz22r6v3JLSQ/PvyPZnNSszWp2R7U7INN5Tc3K5Oa/evv5CnvLyHpdvDmkJGXB9fPK5PxoxxjleOsctZjy6nt8k5epp/LCVY5ySqnWP92GlXOHTzoXcsRVjmsVG5WKjcrlXuxyglWOaxU7mKV06Ry1raxynlsKqvqezmqKR/LufLMa+l7Hft/Z/x5tF6bPnX19tTV+1NXj3pHWRvqHWVtySqnyP/Uoi9PvVr68z+1fubqZXvq6q++vUmqXyoyP6jfyt5fxCr982voA17DHvAa/oDXWA94jXjAa+RT/1Q8dZ7KU+epPnWeKvrjwmH16I8Lh9Ub6pPjHcDtXctB3bhfirpxvxR1i2gp6hbRUtYtImPdIjJhlaOsclipbKxUNlYqGyuVjZXKxkplY6Wys1LZWansrFR2Vio7K5WdlcrOSmVnpbKzUtlZqbxYqbxYqbxYqbxYqbxYqbxYqbxYqbxYqbxYqbxYqRysVA5WKgcrlYOVysFK5WClcrBSOVipHKxUDlYqJyuVk5XKyUrlZKVyslI5WamcrFROVionK5WTlcrFSuVipXKxUrlYqVysVGbhycXCk4uFJ1exUrlYqdysVG5WKjcrlZuVys1K5WalcrNSmYUnFwtPLhaeDBaejA2VyrGhUjk2VCrHhkrl2FCpHBsqlWNDpXJsqFSOjZXKwkplYaWysFJZWKksrFQWVioLK5WFlcrCSmVhpbKyUllZqaysVGbZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmAdphmswzSDdZhmsA7TDNZhmsE6TDNYh2kG6zDNYB2mGazDNIN1mGawDtMM1mGawTpMM1iHaQbrMM1gHaYZrMM0g3WYZrAO0wzWYZrBOkwzWIdpBuswzWAdphmswzSDdZhmsA7TDNZhmsE6TDOSlcrJSuVkpXKyUrlYqVysVC5WKhcrlYuVysVK5WKlcrFSuVipXKxUblYqNyuVm5XKzUrlZqVys1K5WancrFRuVio3KpVzQ6VybqhUzg2VyrmhUjk3VCrnhkrl3FCpnBsqlXNDpXJurFQWVioLK5WFlcrCSmVhpbKwUllYqSysVBZWKgsrlZWVyspKZWWlsrJSWVmprKxUVlYqKyuVlZXKykplY6WysVLZWKlsrFQ2ViobK5WNlcrGSmVjpbKxUtlZqeysVHZWKjsrlZ2Vys5KZZbtS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btK5btK5btK5btK5btqw2VysWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfc2yfc2yfc2yfc2yfb2hUrlZtq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Rtk+2DYX73uoh5fJbPaRgfquHlMxv9ZCi+a0eUja/1UMK57d6SOn8Vg8pnt/qgeUzivm91QPLZxT0e6sHls8o6vdWDyyfUdjvrR5YPqO431s9sHxGgb+3emD5jCJ/b/XA8hmF/t7qgeUziv291QPLZxT8e6sHls8o+vdWDyyfUfjvrR5YPqP431s9sHxGAcC3emD5jCKAb/XA8hmFAN/qgeUzigG+1QPLZxQEfKsHls8oCvhWDyyfURjwrR5YPqM44Fs9sHxGgcC3emD5jCKBb/XA8hmFAt/qgeUzigW+1QPLZxQMfKsHls8oGvhWDyyfUTjwrR5YPqN44Fs9sHxGAcG3emD5jCKCb/XA8hmFBN/qgeUzigm+1QPLZxQUfKsHls8oKvhWDyyfUVjwrR5YPqO44Fs9sHxGgcG3emD5jCKDb/XA8hmFBt/qgeUzig2+1QPLZxQcfKsHls8oOvhWDyyfUXjwrR5YPqP44Fs9rHwWmB8UmB8UmB8UmB+UjZXPAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODAvODcg8/2PXzJfqgns3M3h+9mefl4bbV1SdPvTTb8vPRfu3B+28/3h8s4R8f/KPZHtTsPeTj8zT719+2ut/L1023282uuDx4pXx48LXi1Va9X0e1kPz48B/l63OXb89dvj93+eu5y4/nLj+fu/x67vIf+3FON/vZa9bHcerq7FWXp27v+svdPhjLfl+3+//4T//1H//pn/7x//4//ulf/vM//Os//ss//7e3P7y9/T/XfyVX8j5O1IoPV0GvvLhnvv8jlJ/DRG1vl/n6L9ju9ezXf112t2eXL312/dJnty999qtv8RWXZ+918Ox2eXbL+jePfXv69bVPH1/79Pm1T19f+/T9pU9//Rco93t6+dqn1699evvap//an1r/2p9a/9qfWv/an1r/2p9a/9qf2vW1P7Xra39q19f+1K6v/aldX/tTG3/52vv2fjPJt/z09H+5+uXvj12tB48Nz8vsvj6VsjilBKeU5JRSnFIaU0punFKEU4pySjFOKZy0TU7aJidtk5O2yUnb5KRtcdK2OGlbnLQtTtoWJ23robmyft4arJ+/x7b9rvNeSj/2J2i73K3f4lMpwilFOaUYp5S//hMkdSnFjj4H6+WJTfPnM4v8/aZ2L1IxQSomH1tMbZdiPjz6vZgiFdOgYn6xHefLqrHt/cFmKp+rEVQ1iqrGUNX491XTn6tZqGoCVc1jk9gu30Ewa/9cTaGqaVI1sqGqeXAWd79X46Kfq1FUNYaqxlHVPDaLXS+/qfr7F67+XE2gqklUNYWqpr+vmvpUjW6oagRVzWOzeF1uB9iSz59g1FDVOKqaharmsVn888G27PMnGE1UNYWqpknV2GOzeHlcqlmfP0+ZoKpRVDWGqsa/rZrIz9UsVDWBquaxWRxymW/CPk+iVqhqmlSNb6hqHpvFYetSjX/OG1dUNYaqxlHVPDaLI/xSTX7+POWBqiZR1RSqmv62aio+VbM2VDWCquYLs/jvz/+X0zXyvYEo//z8/sXPv774+eNrn/+xX+a9+e0lefC3ebf32++h/rkWB9WyQLUEqJYE1VKgWppTS3G+kijF+U6iFOdLiVKcbyXKg7/Ye7uWBaolQLUkqJYC1dKcWkBfBRfQd8EF9GVwAX0bXBqUuw3K3b/+leebRlv++reY3d8/33nEn59f//r3kg+eX774+fWLn/8v/wy65eX58/Pz+xc///ri548vfv784uevL37+/trn/+vfZf3w/Gmfn1+++Pn1i5//r//86vtj3fzz8/sXP//64uePL37+/OLnry9+/v7a5//r3388eH754ufXL37+L/751S/++dUv/vnVL/751S/++dWv/Pnd/5e8PfIXR4/6+43J8g9fhlv59z+of/+D15eu1vs7Tn383WXIH+/4v/9H5Pf/iP7+H7Hf/yP++3/k6r/3Xu9/5ONq/rc/cu03jpevFOTH+8V95bF62fmvH2ajt8e+lRKcUpJTSnFK6TuWUvbnp7/+ddb7Pb187dNf/Qnviwl6O2H+4PlvXvzrXyG94/P7Fz//+srn3/+XvT3y+ja4vhzo0B/2fZj8fXv19a1tt/9I/f4f6d/+I9e3ld3+I/L7f0R//4/Y7/8R//0/sn7/j/z+337+/t9+/v7ffv7+3379/t9+/f7f/vVfW/baLn+kPv0R+/0/4r//R9bv/5H4/T+Sv/lH9v/lb4+8+ve5//Lq55FGHn8aUff/+f/+w3/9x3/4T//0X942xr/9X//7P//n9wXy+//81//v//nj/7I/+P8H","brillig_names":["get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3715688037512703171":{"error_kind":"fmtstring","item_types":[],"length":16}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9VYTXPaMBCVg41lUwe3gEnSQ3ttT3IwNNyY6ef/8KTX/IT89bBGOzw2xBkUaSZoxiNb0r59eitpbUdqV/T2iux9Yuuhel54zMbW5m2l9ohlQvKMzoTnxZnwHJwJz9gjz+gIT6pje0/7jvZcqnb78VknGlOgB9Cv+oCk10dbZxYInW08KZcJv96w75o2s9wD8F4Sbh4G21BAfuq99gp8UTD/2j6uI3sVtl+BfaH2Af8FbbxQfkMbn+R/oC1Vh76Ijw4Tr7uA8TIFaKjABxbcJLzecxUszl22GAn/ufDfxdQKrqEttg8jaEvEmqHHL9CvYU7c/13MDbkMBBfCTUJoYWM/DIFtTIMaxkc0TI5oODyi4WR7/RM4xDvVQXh3mUADxxh8Mc8LGKOBRwLP39S+PYOTPgZdGHdMc+d1pF+2i4VdCWOGYJcKuxR4d2O311d7P7J64hng701ltZZntj/sH4tM7feiZ973hP0hCHbTYReA7XP9EvZlGE1WhD0Og93l9jII9m2nyUfA9vjFUFMcP6nDQv4mQeJb1335k33mwClE/pwI/+wL8+dUcCqhDffVVGBNBRZpOYPxHtfcf+Q0O4ET2pWOdiNHu1N4knYVjPd49jbIqXKcy9jRLne0OyVWpN0cxntcdwfazR3n4qrdpaNd5mjnus5d5zcHvngG+/xLhJxii82+OM8kMObB1nQuXqnDQjyvgafHXHHblyuugRPfM7dccErewGmxWJt2tV6umrq9b9tFBNjMiZ/xf8eNGCNzDOn2OYxuBr9dbkAnfv9G7fibgLngt0sG9r459unIPkvBlXm8pj9pfQX3PJcC7DZe5rH7R4DvE+xrFkQ3s+zbE+wzV6He33bvTzPhfyL0J00qwamENoxlJbAqgfUe7PAfGc+V8sIT7yz2rOIYAAA=","debug_symbols":"tdnLaoNAFIDhd5m1C02cc/FVSgmaaBgQDWoKRXz3ml5oIOt/Ix498+++1azh0jb36ykN3TiH6m0N/XiulzQO+7RuWWim1Pfpenr+HPLHozx878+3eniM81JPS6jkkIV2uOwvup/uUt+GqizzLXvZ1L9N/d+Mvr1noTxi5RIrR6wsWFmxsmFlp8oxx8oFVsYMRsxgxAxGzGDEDEbMYMQMRsygYAYFMyiYQcEMCmZQMIOCGRTMoGAGBTOomEHFDCpmUDGDihlUzKBiBhUzqJhBxQwaZtAwg4YZNMygYQYNM2iYQcMMGmbQMIOOGXTMoGMGHTPomEHHDDpm0DGDjhl0zGCR51y64NIHLn3k0iWXjlxauLRyaePSnMYC0rjt00c9pbrp2997h+4+nJ+uIZbP28+fffkL","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_abi"}]}},"file_map":{"110":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(contract_address: AztecAddress, log: [u8; N]) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N-1-i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"264":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\npub struct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"308":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"313":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl <let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"314":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"317":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"440":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr","source":"mod util;\nmod auth_oracle;\n\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrSingleKeyAccount {\n use dep::aztec::prelude::PrivateContext;\n\n use dep::authwit::{entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions};\n\n use crate::{util::recover_address, auth_oracle::get_auth_witness};\n\n use dep::aztec::macros::{functions::{private, view}};\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[private]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n let witness = unsafe {\n get_auth_witness(outer_hash)\n };\n recover_address(outer_hash, witness).eq(context.this_address())\n }\n}\n"},"441":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/util.nr","source":"use std::schnorr::verify_signature;\nuse dep::aztec::prelude::AztecAddress;\nuse crate::auth_oracle::AuthWitness;\n\npub fn recover_address(message_hash: Field, witness: AuthWitness) -> AztecAddress {\n let message_bytes: [u8; 32] = message_hash.to_be_bytes();\n // In a single key account contract we re-used ivpk_m as signing key\n let verification = verify_signature(\n witness.keys.ivpk_m.inner.x,\n witness.keys.ivpk_m.inner.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(witness.keys.hash(), witness.partial_address)\n}\n"},"442":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr","source":"use dep::authwit::auth_witness;\nuse dep::aztec::{\n protocol_types::{address::PartialAddress, utils::arr_copy_slice},\n keys::{PublicKeys, PUBLIC_KEYS_LENGTH}\n};\n\npub struct AuthWitness {\n keys: PublicKeys,\n signature: [u8; 64],\n partial_address: PartialAddress,\n}\n\nimpl AuthWitness {\n fn deserialize(values: [Field; 77]) -> Self {\n let mut signature = [0; 64];\n for i in 0..64 {\n signature[i] = values[i + PUBLIC_KEYS_LENGTH] as u8;\n }\n Self {\n keys: PublicKeys::deserialize(arr_copy_slice(values, [0; PUBLIC_KEYS_LENGTH], 0)),\n signature,\n partial_address: PartialAddress::from_field(values[76])\n }\n }\n}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> AuthWitness {\n let witness: [Field; 77] = auth_witness::get_auth_witness(message_hash);\n AuthWitness::deserialize(witness)\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"}}}