@aztec/accounts 0.55.1 → 0.56.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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ZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfuCZfuCZfuCZfuCZfviQKVysGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsmxfsmxfsmxfsmxfHqhUTpbtS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btK5btK5btK5btK5btqwOVysWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfc2yfc2yfc2yfc2yfX2gUrlZtq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztm9Ytm9Ytm9Ytm9Ytm8OVCoPy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNyvbVgbJ95zikVD7HIaXyOQ4plc9xSKl8jkNK5XMcUiqf45BS+RyHlMrnOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x0GlsrBsn7Bsn7Bsn7BsnxyoVBaW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7ROW7VOW7VOW7VOW7VOW7dMDlcrKsn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Ksn3Gsn3Gsn3Gsn3Gsn12oFLZWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWbbPWbbPWbbPWbbPD1QqO8v2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Bcv2Bcv2Bcv2Bcv2xYFK5WDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmTZvmTZvmTZvmTZvjxQqZws25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs21cs21cs21cs21cs21cHKpWLZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuKZfuaZfuaZfuaZfuaZfv6QKVys2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2xfs2zfsGzfsGzfsGzfsGzfHKhUHpbtG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5btG5Tt6wNl+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+5pS3t2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61Z5d37dnlXXt2edeeXd61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BxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBxXmBw3mBw3mBw3mBw3mB+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+///l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nJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfnJgfXJgfXJgfXJgfXJgfXJfVzwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgwvzgxvzgxvzgxvzgxvzg/uy+nljfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfnBjfvBgfvBgfvBgfvBgfvBcVj8fzA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8ezA8eyw+Oy/KDdx6qn+88VD/feah+vvNQ/Xznofr5zkP1852H6uc7D9XPdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnwfrZ8oN3HqyfLT9458H62fKDdx6sny0/eOfB+tnyg3cerJ8tP3jnsfo5MD8YmB8MzA8G5gfjsvo5MD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYn4wMT+YmB9MzA/mZfVzYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBwvxgYX6wMD9YmB+sy+rnwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODjfnBxvxgY36wMT/Yl9XPjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrA/2Q/mNa+vG2dc42Wet8LP3c/p1xXPm0e8tX3m2c/T67rO32z/9XjjD3a8+Qc73vqDHW//wY53/MGO9wOe3+M51KrzG88Xaz4/X6z97QDWfsqzsDwby3M+N8++rm+/zOt1no/wpx+aJ7A8af3+fIQ//dA8jeUZWB6snwfWzwPr53GsPPPC8mD9PBPLU1iexvJ8bj9n5vMr6JzzZZ43Jo/5/Go+xor5xuvtOX/y/Osnz79/8vzY88vCnl9WYHlS/n3btZ9Gz2u8dX1g1U+ev3/y/G8+3z19j+s3steJ8XXTOiPemj8fPH89eP5+8Pzz2Plv+9YPnB8/9+///sn7c//k/bl/8v7c9PuF/0N++v3C/yH/st4/7o3lwa7nH+x6/sGuFx3setHBrhd9hOf90DwDyzOxPFg/H6yfj9XP47L6eVxWP4/L6udxWf08Lqufx2X187isfh6X1c/jsvp5XFg/B9bPgfVzYP0cWD8H1s+B9XNg/RxYPwfWz4H1c2L9nFg/J9bPifVzYv2cWD8n1s+J9XNi/ZxYPxfWz4X1c2H9XFg/F9bPhfVzYf1cWD8X1s+F9XNj/dxYPzfWz431c2P93Fg/N9bPjfVzY/2MecyBecyBecwxsH4eWD8PrJ8H1s8D6+eB9fPA+nlg/TyxfsY85sA85sA85sA85phYP0+snyfWzxPr54n188L6eWH9vLB+Xlg/L6yfF9bPC+vnhfXzwvp5Yf28sX7eWD9vrJ831s8b6+eN9fPG+hnzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgwPzgxPzgxPzgxPzgxPzg/Oy+nlifnBifnBifnBifnBifnBi64FObD3Qia0HOrH1QCe2HujE1gOd2HqgE1sPdGLrgU5sPdCJrQc6sfVAJ7Ye6MTWA53YeqATWw90YuuBTmw90ImtBzqx9UAnth7oxNYDndh6oBNbD3Ri64FObD3Qia0HOrH1QCe2HujE1gOdjfVzY/3cWD831s+N9XNj/dxYPzfWz431c2P9PLB+Hlg/D6yfB9bPA+vngfXzwPp5YP08sH4eWD9PrJ8n1s8T6+eJ9fPE+nli/Tyxfp5YP0+snyfWzwvr54X188L6eWH9vLB+Xlg/L6yfF9bPC+vnhfXzxvp5Y/28sX7eWD9vrJ831s8b6+eN9fPG+nlj/Xywfj5YPx+snw/Wzwfr54P188H6+WD9fLB+PlY/r8vq53VZ/bwuq5/XZfXzuqx+XpfVz+uy+nldVj+vy+rndWH9jPnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBhfnBjfnBjfnBjfnBjfnBfVn9vDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/uDE/eDA/eDA/eDA/eDA/eC6rnw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mBw/mB4/lB+dl+cE7D9XPdx6qn+88VD/feah+vvNQ/Xznofr5zkP1852H6uc7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNg/Wz5wTsP1s+WH7zzYP1s+cE7D9bPlh+882D9bPnBOw/Wz5YfvPNY/RyYHwzMDwbmBwPzg3FZ/RyYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAwPxiYHwzMDwbmBwPzg4H5wcD8YGB+MDA/GJgfDMwPBuYHA/ODgfnBwPxgYH4wMD8YmB8MzA8G5gcD84OB+cHA/GBgfjAxP5iYH0zMDybmB/Oy+jkxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBifjAxP5iYH0zMDybmBxPzg4n5wcT8YGJ+MDE/mJgfTMwPJuYHE/ODifnBxPxgYn4wMT+YmB9MzA8m5gcT84OJ+cHE/GBhfrAwP1iYHyzMD9Zl9XNhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHC/GBhfrAwP1iYHyzMDxbmBwvzg4X5wcL8YGF+sDA/WJgfLMwPFuYHC/ODhfnBwvxgYX6wMD9YmB8szA8W5gcL84OF+cHG/GBjfrAxP9iYH+zL6ufG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84ON+cHG/GBjfrAxP9iYH2zMDzbmBxvzg435wcb8YGN+sDE/2JgfbMwPNuYHG/ODjfnBxvxgY36wMT/YmB9szA825gcb84MD84MD84MD84MD84Pjsvp5YH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYn5wYn5wYn5wYn5wXlY/T8wPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPTswPzg/wg/v087dY4zfyXFX1tPVVvZ43z3W9OXx8O9g79NPW1W9tHNf1tHH0ebnx14ONP9LB5h/pYH/8aevs83XjvGJ+/2DvwU95xtrfDjW+7Phq68yznzbPuq7zN9t/PYD+2Q9g/OwHMH/2A1g/+wHsn/0Azk9+AB+gVX/nA/jct3d5zedEcY2XL6/e+tHM/eL59IqPON78wxzv/dU//Puf//KXP//z///Lv/7jn/7zz//6L//xZe/ryz9vXybf1/46b4988XPIN757f/uZRX87sPryg377ovdHTX/7EvaHTY+HTs+HTq+HTu/3Tf+yy3j/LvP9u7z5RL7H8y4nfuOwaz29FK/Vr8bvx44/Dx3/9gXFjxsfjx2fjx1fjx3fjx0/Hjt+Pnb8Y8/afuxZ2489a8djz9rx2LN2PPasHY89a8djz9rxw7+YfcXXbfuqV+PPQ8fPH/7hjHraduz9G9vef175uu3c8SrKcKJMJ8pyomwnymGirMuJEk6UdKKUE8Vp2+W07XLadjltu5y2XU7bbqdtt9O2+1N75cXl1f3ib5Hxy1Wl/bln0PPfRec1X0X58TMo+o0j/ZU3Cfmcu3J8m7x/uVa9j5PlXFCW+NwsYz5nmefvsySUpaAs/blZnv9qUnnW32cZUJYJZVlQlv17ZakXf5P7muU4WeK6pDCf27z1fLtT1Zcbov4uTEphSgrTUpjPbd9a4znMi5eCT2GmFGZJYbYU5nMb+L7G/RSmX9x/8zVMXFKYkMKkFKZ+tzDZr8K0FGZIYT63gXs9v0npfV6FWVKYLYU5UJj85AZ+voW/xrVehQkpTEphSgrzuQ08Mp/D1Kv3TTmkMFMKs6Qw+3cL0/UqzIHC1CWF+dwGHuf59czLPxg8hUkpTElhWgrzuQ08I57D5KueqSmFWVKYLYX53AaefT2HGa/eN/UlhQkpTEph6ncLM/NVmJbCDCnMAxv4l/nrwfP3g+efx87/8Xvb5zODnPt6PT8ePD8fPL8eO39/6v2N3735Jz73RqR5PVnb+eLi5HOWAWWZUJYFZdlQluNkOReU5XPvc/zeHX1xEspSUJaGsgwoy4SyOHfGxtlQlsNkyeuCsji9m5fTu3k5vZuX07t5Ob2bl9O7eT1W0OaP31PUz9c3+sXljef58eD5+eD59eD5P3wO9vMn9/V84/EdD54/Hzx/PXj+fvD889j5P35Hym/Mj4+cf17PzwfPrwfP//HzN5627bpezx8Pnj8fPH89eP5+8Pzz2Pk/fj/Db8yPB8/PB8+vB89/8PlbDz5/68Hnbz34/K0Hn7/1yPP3/iq+bPn2i5RZTy+8d357Yo351x3zlx3fTDf3018p9vr27iHG+us7gvfvEu/fJd+/S71/l37/LuP9u8z377Lev8ubv8jnerp/7GT8zS5v3gTyddta315o5PnOp1h+2Pi3n4Y+bnw8dnw+dnw9dny/b/z/+7WPsvz+LvP9u7x5FpxnZHdW/sZx5/Nnj+V+fdz7sePPQ8e/fRvUe8a//KW4/mb8623PefojV1xx/f0D9fZdUL9TloSy1GdmyX7aNl+8kX76dWknynCiTCfK+tQo362W7UQ5TJTxoYX7enw8dnw+dnw9dnw/dvx47Pi3W+bXnzre+zzz9uIdH/kN9qO/wfnhb/Dddn17bYoPnB8Pnp8Pnl8/Pv975fn2J+V+4PzxyPn3V/Vly1/5ZNvr6RMcdnx7W57zlxusf+UTaL+7y37/Lufdu/zKJ69+d5d4/y75/l3q/bv0+3cZ79/l/Y/+ev+jv97/6K/3P/r7/Y/+fv+jv9989Neu5+uS8WqXev8u/f5dxvt3me/fZb1zl/ur/rLlm49n7OvpowFizxfrHf1yQff+8r//9O9//tM//OWfvixs8+V//+tf/vFpnZv7y//8n3/76//cG/8v","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":"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","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.34.0+02fea6abe8637b9fb8f9535d1709b367d5e1da5c","name":"SchnorrSingleKeyAccount","functions":[{"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":"tdnLioNAEEDRf+m1Cx/dVV3+yjAETTQ0iAY1A4P472PmwQSyvhuxtPruzqo3d+na+/WUxn5aXP22uWE6N2uaxmPa9sy1cxqGdD09f3b54+HL7/3l1oyPcVmbeXW1lJnrxsvxosfpPg2dq72v9uxlU/829X8z2P6eOV9hZY+VA1YWrKxYOWJlo8ohx8oFVsYMBsxgwAwGzGDADAbMYMAMBsygYAYFMyiYQcEMCmZQMIOCGRTMoGAGBTOomEHFDCpmUDGDihlUzKBiBhUzqJhBxQxGzGDEDEbMYMQMRsxgxAxGzGDEDEbMYMQMGmbQMIOGGTTMoGEGDTNomEHDDBpm0DCDRZ5z6YJLl1y64tKeSwcuLVxauXTk0pzGAtK4H9NHM6emHbrfe4f+Pp6friHWz9vPn2P5Cw==","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"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":"7Z3dbttGEIXfRde52PnZv7xKERROmhYGDLtInAJFkHevpJpLJruWYlC7PmLmJoiS5fDwI/fojLQiv+7++Pj+y1+/397/+fB59/a3r7u7hw83j7cP9/tXX3ckx3/7/PfN/eHl58ebT4+7txRZ3+w+3v9x+Kvotze7P2/vPu7eqsq3N9VozhSeRnOWVEaTUmO0+ByfRkuI7sxocjG6SYqLadbCMbXGp0DT8JTm6oeDqAeTK4dJXpaD373ZkRqa59B4Q/McmmBonkMT16ORRDwdbNIFGpLjLlL/XeSX7mK/EbvWRrnQyj9xTbjptImL8+joW4OdJz9dQS7k+bTF5mlznEO5JsTlc9eElCtuf5GFNdcEk4Fpg2ED0wYj2GBEZAajcZy9shqYNhhvYNpgwlowQjINFlpkjyaYvZhUxEio3iMjlJoEpSYjqREHpYag1DCUGoFSo1BqPJQaKC8WKC8WKC8WKC9WKC9WKC9WKC9WKC9WKC9WKC9WKC9WKC9WKC9WKC/2UF7sobzYQ3mxh/JiD+XFHsqLPZQXeygv9lBe7KG8OEB5cYDy4gDlxQHKiwOUFwcoLw5QXhygvDhAeXGA8uII5cURyosjlBdHKC+OUF4cobw4QnlxhPLiCOXFEcqLE5QXJygvTlBenKC8OEF5cYLy4gTlxQnKixOUFycoL85QXpyhvDhDeXGG8uIM5cV5tBf7svKUMp8pzTItlmPvF2Nbi+Uka55k5DCP5tAYrBKmRX4qSZaDD0yCMamYRGNSMUnGpGKSjcmPTMg5g1JDIYNSQ2GDUkMRg1JDUYNSQ7E024BicbYBxfJsA4oF2gYUS7Q1FLJE24BiibYBxRJtA4ol2gYUNSg1FEu0DSiWaBtQLNE2oFiibUCxRFtDYUu0DSiWaBtQLNE2oFiibUBRg1JDsUTbgGKJtgHFEm0DiiXaBhRLtDUUsUTbgGKJtgHFEm0DiiXaBhQ1KDUUS7QNKJZoG1As0TagWKJtQLFEW0NRS7QNKJZoG1As0TagWKJtQFFgKOIn6d7Rd1CO0pFzp6epsv9OxpN05HToQ5Ge6MylyJymwcx5ft5IastIeZYx/xaPY0sGZV9G58Xoduk0/8wv8ayan3gjB88t8kbOtFvkjRyXr5M3lyNMkn/k7ZGT+BZ5I4f8LfJG7h+ukncMZXBSV/FGbk1AeLOj6VFD7Dyver8cftPiX503dKu2Qd7WX16a9+n3S+svx/K2/nIsb+svL8z7dB4M1l/+TP5OM29Zlj4itJZxNULrAn9i1peJzOTOlT6d2oJ1gWN5q/Eeytu6wEvzPpnagnWBY3lbFziWt3WBF+Z9piuxLvBFkZpc/jFSR2vsViO0xu78rCf2BWFY91lytC5wLG/rAsfyVuN9Yd4nU1u0LnAsb+sCx/K2LvDCvE93JdG6wJdF6lB90B+tsVuLMG2msRMtCFX8GYSOc9HhZNGscUyt8ZLjNFxpRi7aPMZCb3+4shx8JL6ZPvBqiG+mE7wa4pvpBa+GuBrxwcQ30w9eDfHNdIRXQ3wzPeHVEN9MV3g1xDfTRF4L8Ww952ji1nOOJm4952ji1nOOJq5GfDDxX7TnFJGZuMZzxFOYbkq0z9NuHfFftOd8ReK/QM95PE7oTk/5aXBYGFz7OEl8OfmeFydfItqlBd3qbRE5Qz9DfaPIoZu9bSK/cLeXlsiPO2g2NxS5qIpndxE0uIm95vn9iEi+vdu/ev/p9u7u9q/f7x4+3DzePtx/PmzrDn+0H16RaDqVyYfFvrmxb41TBvY064xyPLjcs3r7cQoXq05dq3PX6tK1ur6s+mET//JNwss3aebLFMomi6nRPmwphy2LmTqVT33L567l27dqvlx56lue+5aXvuW1b3nft3zoW77vrNW+s1b7zlrfd9b6vrPW9521vu+s9X1nre87a33fWev7ztqw+sJUV24y7mJVnvuWXw1nbqb8d40XN9P/BDIkX0lJOFIyjJTocKQQjhTGkSI4UhRHiseREnCk4LhtxHHbiOO2CcdtE47bJhy3TThum3DcNuG4bcJx24Tjtnmor/j5I9E0f78hfPxMNI+dQa583O9CJUVxpHgcKQFHyvoZRKlIkXNtNpfCwvHHtQo5AWnJOFrIubFikiticvVTXkdIYhhJjAwVI+W+LSKL+7ZMYhRJjEcSE5DExNcTU907zCUkMRlIDI11YElUxGStxBCSGEYSI0hiBjtwLk89VeJKjEcSE5DERCQxYx1YuXztpYtbB01iMpAYdkhiCEkMv56YVIkRJDGKJGasA/vS9YunqlXhgCQmIolJSGLGOvA8WLxUrYo4JDGEJIaRxIx1YK+hiPFV3ySKJMYjiQlIYuKriQmxEpOQxGQgMTrWgQOVPBOkip1KSGIYSYwgiRnrwEF8EaOVz6hHEhOQxEQkMWMdOJRfO0uIVd+kGUiMd0hiCEkMv5qYFCoxgiRGkcR0dOB3zz5a+4L1Y+f6qXP91W4W4nR+Q9KqfnCd61Pn+ty3/tj1uSeXadHgBbpu+uIhsNZaMo6WwUt0T2shIC0MpEWAtCiQFpxVhpRwlhnS4JW6p7UkIC0ZR0t2QFoISAsDacFZ201Ai7sJaHU3AS3vpgzkuxnIdzOO77LD8V1ev4b55I/R2a32DC23O9QQ6vq+c/3QuX7sXH/1HFSJpX7j/Oa+9dcvxD1TnzrX5871pXN97VzfX7B+lLp+6Fw/dq6/fv7yNFZF6/q5b/31yzjP1KfO9blzfelcXzvX953rh871Y+f6necvd56/0nn+Suf5K53nr/Scv/tXdBjZXjtG5Yu/5f1xD7eRfffc7ShPb5Jevkl+4Sbf9i//ufl0e/P+7uPhRrCH//1y/2G6L+z+5eO/f///P/vB/wE=","brillig_names":["get_auth_witness","pack_returns","directive_invert"]},{"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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qYyyfXs5rFRG2b69HFYqo2zfXg4qlYVl+4Rl+4Rl+4Rl+2RDpbKwbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+ybJ+ybJ+ybJ+ybJ9uqFRWlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu0zlu0zlu0zlu0zlu2zDZXKxrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9zrJ9zrJ9zrJ9zrJ9vqFS2Vm2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2L1i2L1i2L1i2L1i2LzZUKgfL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9iXL9iXL9iXL9iXL9uWGSuVk2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b482PbpZvbjYt1qvS/n3MW69elqtT5dLnKukmx9uzzb3/X6o1Wd06rNadXntBpzWs05rdacVtecVntMqwe72C9tFTwtScc6vXRHryutqrq8jYb67Untf7r+e7vgieke7YKnpnu067PaBU9P92gXPEHdo93fn6JK1ltN9e2Kix+rK+t08Xp3NutHOYtVTqPKuYHZ/lQ5azvdA1mmH8sRVjnKKsdY/3acVU6wyklWOaxULlYqFyuV18YqR1jlsFJ5GascZ5UTrHKOTWVV/Tktl7wv58wrR8TpH36k2MfZetVjl78eu/x+6PKb9V2lWd9VWlnlGPnfWtkpZaMjz/xb88cuPx67/LPf5aTUTyWZX2nAluiPq235OvMmdcSbrCPepO//JnXelt/6TeSIN9FH/uKo7aGTtbaHTtbaHjpZa0N/frhePvrzw/XyF+nDZG2NKkdQ9/JLUPfyS1B3jUpQd43qBk7+puWg7hqVJKucYpXDSmVhpbKyUllZqaysVFZWKisrlZWVyspKZWWlsrJSWVmpbKxUNlYqGyuVjZXKxkplY6WysVLZWKlsrFQ2Vio7K5WdlcrOSmVnpbKzUtlZqeysVHZWKjsrlZ2VysFK5WClcrBSOVipHKxUDlYqByuVg5XKwUrlYKVyslI5WamcrFROVionK5WTlcrJSuVkpXKyUjlZqczylMXylMXylFWsVC5WKhcrlYuVysVK5WKlcrFSebFSebFSmeUpi+Upi+Upi+Upa7FSebFSebFSebFSuVmp3KxUblYqNyuVm5XKzUrlZqVys1K5WancqFReGyqV14ZK5bWhUnltqFReGyqV14ZK5bWhUnltqFReLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7Fsn2LZfsWy/atg5+Bq5annSsu73aunF3/nivfnrIh2dt2uvzveSjHOvj5ul/aqs1p1ee0GnNazTmtop7KuVjPSl6sZyUv1rOSF+tZyYv1rOTFelbyYj0rebGelbxYz0perGclL9azkhfrWcmL9azkFaxUDlYqByuVg5XKwUrlYKVysFI5WKkcrFROVionK5WTlcrJSuVkpXKyUjlZqZysVE5WKicrlYuVysVK5WKlcrFSuVipXKxULlYqFyuVi5XKxUrlxUrlxUrlxUrlxUrlxUrlxUrlxUrlxUrlxUrlxUrlZqVys1K5WancrFRuVio3K5WblcrNSuVmpXKjUrk3VCr3hkrl3lCp3BsqlXtDpXJvqFTuDZXKvaFSuTdUKvfGSmVhpbKwUllYqSysVBZWKgsrlYWVysJKZWGlsrBSWVmprKxUVlYqKyuVlZXKykplZaWyslJZWamsrFQ2ViobK5WNlcrGSmVjpbKxUtlYqcyyfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfY2yfbahbN9eDimV93JIqbyXQ0rlvRxSKu/lkFJ5L4eUyns5pFTeyyGl8l4OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyWKmMsn17OaxURtm+vRxWKqNs314OK5VRtm8vh5XKKNu3l8NKZZTt28thpTLK9u3lsFIZZfv2clipjLJ9ezmsVEbZvr0cViqjbN9eDiuVUbZvL4eVyijbt5fDSmWU7dvLYaUyyvbt5bBSGWX79nJYqYyyfXs5rFRG2b69HFYqo2zfXg4rlVG2by+Hlcoo27eXw0pllO3by2GlMsr27eWwUhll+/ZyUKksLNsnLNsnLNsnLNsnGyqVhWX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7hGX7lGX7lGX7lGX7lGX7dEOlsrJsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Fsn7Fsn7Fsn7Fsn22oVDaW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7bODbZ9uZj8u1q3W+3LOXaxbn65W69PlIucqyda3y7P9Xa/fWz3YDX5pqzKnVZ3Tqs1p1ee0ivnufebiWKdXjv75yvtHnR/FY77X/z3FYyaDv6f4xf0KkX5XfUevK18hqi5vR7P/t/ufrv/eLnhOuUO7CZ5V7tEueF65R7vgmWWPpk1P7bbomfKfaQ5ZdvrmvCL/9pvzwTL5S1uNOa3mnFZrTqvgiejzrfap7PcZ/NbqM921udxqPdNdmyutPtNdmyutPtNdmyutPtW0dLlVn9PqU01Ll1t9qmnpcqtPNS1dbnXOtFRzpqU1Z1pac6alNWdaWnOmpYM3eXxpq3OmpTVnWlpzpqU1Z1pac6alnjMt9ZxpqedMSz1nWjp4w86XtjpnWuo501LPmZZ6zrTUY6Yl38ZMS76NmZZ8GzMt+TZmWvLN57Q6Zlrybcy05NuYacm3MdOSb3OmJZkzLcmcaUnmTEsyZ1o6eCPdl7Y6Z1qSOdOSzJmWZM60JHOmJZ0zLemcaUnnTEs6Z1o6eFPkl7Y6Z1rSOdOSzpmWdM60pHOmJZszLdmcacnmTEs2Z1o6eIPrl7Y6Z1qyOdOSzZmWbM60ZHOmJZ8zLfmcacnnTEs+Z1o6eLPyl7Y6Z1ryOdOSz5mWfM609FRbsi+3+lRbsq+0Omdaeqot2VdanTMtPdWW7CutzpmWYs60FHOmJfK+7lu3OmdaIu/pvnWrc6Yl8n7uW7c6Z1p6rl3el1udMy091y7vy63OmZbm7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zyzvm7PKOObu8Y84u75izyzs2n9PqmGkp5uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vHPOLu+cs8s75+zyzjm7vHPzOa2OmZZyzi7vnLPLO+fs8s45u7xzzi7vnLPLO+fs8s45u7xzzi7vnLPLO+fs8s45u7xzzi7vnLPLO+fs8s45u7xzzi7vfKpd3q19atU/tupzWj14WrKMt+Jd5HKrEmVvV8v+M8P8U6vfy8/HLr/I5Xf720vvN9HlTPnrscvvhy7/6H3Xty5fwOXnyj6V39t29VunnUJ2vftC/xGyR++w/spWbU6rPqdV8pRw41bJE8WnW7040Rt5+rhxq+RJ5catkqea27bq5Anoxq0+1bR0udWnmpYut/pU09LlVn1Oq081LV1udc605HOmJZ8zLfmcaSnmTEsxZ1qKOdNSzJmWjt5h/ZWtzpmWYs60FHOmpZgzLcWcaSnnTEs5Z1rKOdNS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lZXKykplZaUy6nmaezmsVFZWKhsrlY2VyizbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbpyzbpyzbpyzbpyzbpxsqlZVl+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+2xDpbKxbJ+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+zbJ9vqFR2lu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu0Llu0Llu0Llu0Llu2LDZXKwbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9ybJ9ybJ9ybJ9ybJ9uaFSOVm2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2r1i2r1i2r1i2r1i2rzZUKhfL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL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tk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Zts9Yts9Yts9Yts9Yts82VCoby/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/Y5y/Y5y/Y5y/Y5y/b5hkplZ9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+P9j26Wb242Ldar0v59zFuvXparU+XS5yrpJsfbs829/1+qNVmdOqzmnV5rTqc1qNOa1ivnufuTjW6ZWjf76y2VvxmO/1f0/xmMng7ym+uV8h0u+q7+h15StEdf+h4Nur6z7t/+n6P9pN8Jxyj3bBs8o92gXPK/doFzyz7NG06andFj1Tvj/RN+dlp2/OK/JvvznnM80hV1rNOa3WnFbXnFbBE9HnW+1T2e8z+Eer9Ux3ba60+kx3ba60+kx3ba60+kx3ba606nNafapp6XKrTzUtXW71qaaly60+1bR0udU509KaMy2tOdPSmjMtrTnT0sHbNr601TnT0pozLa0509KaMy2tOdNSz5mWes601HOmpZ4zLR28BedLW50zLfWcaannTEs9Z1rqMdNSbGOmpdjGTEuxjZmWYhszLcXmc1odMy3FNmZaim3MtBTbmGkptjnTksyZlmTOtCRzpiWZMy0dvDXuS1udMy3JnGlJ5kxLMmdakjnTks6ZlnTOtKRzpiWdMy0dvM3xS1udMy3pnGlJ50xLOmda0jnTks2ZlmzOtGRzpiWbMy0dvGX1S1udMy3ZnGnJ5kxLNmdasjnTks+ZlnzOtORzpiWfMy0dvP34S1udMy35nGnJ50xLPmda8jnT0lNtyb7S6pxp6am2ZF9pdc609FRbsq+0OmdaijnTUsyZlmLOtETe133jVsm7um/d6pxpibyj+9atzpmWnmuX9+VW50xLz7XL+3Krc6al59rlfbnVOdPSnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd87Z5Z1zdnnnnF3eOWeXd24+p9Ux01LO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z515xd3jVnl3fN2eVdc3Z51+ZzWh0zLdWcXd41Z5d3zdnlXXN2edecXd41Z5d3zdnlXXN2edecXd41Z5d3zdnlXXN2edecXd41Z5d3zdnlXXN2edecXd41Z5d3PdUu79Y+teofW32maelKqwdPS5bxVryLXG5VouztaomO/FOr38uvxy5/kcvv9reXzk3lTPn90OUfvRv71uXLY5ev4PJzZZ/K7227+q3TTiG73n2h/wjZo3dYf2WrPqfVmNMqeUq4cavkieLTrV6c6I08fdy4VfKkcttWnTzV3LhV8gR041afalq63OpTTUuXW/U5rT7VtHS51aeali63Omda8jnTks+ZlmLOtBRzpqWYMy3FnGnp6B3WX9nqnGkp5kxLMWdaijnTUsyZlnLOtJRzpqWcMy3lnGnp6B3WX9nqnGkp50xLOWdayjnTUs6ZlmrOtFRzpqWaMy3VnGnp6B3WX9nqnGmp5kxLNWdaqjnTUs2ZltacaWnNmZbWnGlpzZmWjt5h/ZWtzpmW1pxpac2ZltacaWnNmZZ6zrTUc6alnjMt9Zxp6egd1l/Z6pxpqedMSz1nWuo501KPmZbWNmZaWtuYaWltY6altY2Zltbmc1odMy2tbcy0tLYx09LaxkxLa5szLcmcaUnmTEsyZ1qSOdPS0Tusv7LVOdOSzJmWZM60JHOmJZkzLemcaUnnTEs6Z1rSOdPS0Tusv7LVOdMSeof1jVudMy2hd2PfuNU50xJ65/aNW50zLT3XLu/Lrc6Zlp5rl/flVudMS8+1y/tyq3OmpTm7vNecXd5rzi7vNWeX95qzy3vN2eW95uzyXnN2ea85u7zXnF3ea84u7zVnl/eas8t7zdnlvebs8l5zdnmvObu815xd3mvOLu81Z5f3mrPLe83Z5b3m7PJec3Z5rzm7vNecXd5rzi7vNWeX95qzy3vN2eW95uzyXnN2ea85u7zXnF3ea84u7zVnl/eas8t7PdUu79Y+teofW32maelKqwdPS5vZW6tbrSutdqzTS3f0utKq7qd3Okh19z9d/73dNavdHtXu0Xu9v7pdmdWuzmrXZrXrs9qNWe3mrHZnTVUH7/2W9jg1UPq+3e/lNKqcg/dnXy1HWOX8/nf1kvX2DvXtiovlVNbp4vWu9vWjHGOV46xyglVOssopVjmLVU6Tyukb7Om9aTnCKkdJ3yR6OziV13YqZ5l+PB1nlROscpJVTrHKQc3KvaFm5ZZjU1lVf360KXn/l3XmlSPiFJqRYh8+CLXIY5evj12+PXb5/tjlBytJklVOscphfRcS1nchRd2x6fO7EKXUT1/s5lcKsiX642pbvj5++Z7fQnjrN7Ej3sSPeJM44k3yiDepI95kHfEmfcCbnN8qdus3Qd2jbWPdDTD0nFd2Kj468sxfLnrOu15+PHb5+djl12OXvx67/H7o8h19d+V6+ei7K9fLR99duV6+oYaAg3cgXS2HdffDWXc/nHX3w1l3P5x19yNYdz/i4J+MXvn5TSirHNZPRm+wa+Wm5bB+Mhqsn4wG6yejsVjlNKqc3FjlsO5QJesOVbJSOVmpnKxUTlYqJyuVkzUrJ2tWLlYqF2tWLtasXKxULlYqF+sORrHuYBTrDkaxUrlYqbxYdzAWK5UXK5UXK5UXK5UXa1ZerFl5sWblxbqDsVh3MJo1K7McZDfrDkazUrlZqdysVG5WKjcrlZuVyk1K5dw2Uirv5ZBm5b0c0qy8l0P6HYy9HGeVQ7qDsZdDuoOxl0O6g7GXQ7qDsZdDuoORm5DuYOzlsFJZWKkspFl5L4c0K+/lkGblvRzSrLyXQ5qV93JIs/JeDmtWVtasrKQ7GHs5pDsYezmsVFZWKisrlZWVyspKZWXNysqalY2VysaalY01KxsrlY2Vysa6g2GsOxjGuoNhrFQ2Vio76w6Gs1LZWansrFR2Vio7a1Z21qzsrFnZWXcwnHUHI1izcrDuYATrDgbK9u3lsFIZZfv2clipjLJ9ezmsVEbZvtxQtm8vhzUrJ2tWTtbvYBz8vOar5bDuYCTrDkay7mCgbN9eDusORrHuYKBs314OK5VRtm8vhzUrF2tWLtasXKxZuVizcrFm5cWalRfrDsZi3cFA2b69HFYqo2zfXg4rlVG2by+HNSujnnGYG8r27eWwZuVmzcoo27eXw0rlZt3BaNYdjGbdwWhWKjcqlWVD3cEQlu0Tlu0T1DMO93JQqSyoZxzu5aBmZUE943AvB3UHQzbUHQwR1KwsgrqDIYK6gyEs2ycs2ycs2ycs2ycs2ycs2ycs2ycs2yfKmpWVNSvrsb+DoZZv5aiLvP8mceaVc2W/vXT2tp0u//YolY/XZ+vb5dn+rtcfrfqcVmNOqzmn1ZrT6prTao9p1bY5rcqcVnVOq6jfWJUbmNubloP6eY+wzK2wzK2wzK2wzK2wzK04686is+4sop6nuZfDSmXU8zT3clipjHqe5l4OK5VRz9NMQT1Pcy+HlcoscyvBSuVgpXKwUjlYqRysVA5WKgcrlZOVyqjnae7lsFKZZW6FZW6FZW6FZW6FZW6FZW6FZW6FZW6lWKlcrFQuVioXK5VRz9Pcy2GlMup5mns5rFRGPU8zBfU8zb0cViqzzK0sViovViovViovViovViqzzK2wzK00K5VRz9Pcy2GlcrNSuVmpzDK3wjK3wjK3wjK3wjK3yjK3uqFSWTdUKivreZq6oVJZWc/TVNbzNJX1PE1lPU9TWc/TVNbzNJVlbpVlblVYqSysVBZWKgsrlYWVysJKZWGlsrJSmfU8TWU9T1OVlcrKSmVlpbKyUllZqcx6nqaynqepxkplY6WysVKZZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuMZfuMZfuMZfuMZftsQ6WysWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfs2yfs2yfs2yfs2yfb6hUdpbtc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btC5btC5btC5btC5btiw2VysGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcmyfcmyfcmyfcmyfbmhUjlZti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Ztq9Ytq9Ytq9Ytq9Ytq82VCoXy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YV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pyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbZyzbZyzbZyzbZyzbZxsqlY1l+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+5xl+5xl+5xl+5xl+3xDpbKzbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbF+wbF+wbF+wbF+wbF9sqFQOlu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu2Lg22fbmY/Ltat1vtyzl2sW5+uVuvT5SLnKsnWt8uz/V2vP1rVOa3anFZ9Tqsxp9Wc0yrmu/eZi2OdXjn65yubvRWP+V7/9xSPmQz+juIP1qif+gqRfld9R68rXyGqLm9Hs/+3+5+u/94ueE65R7vgWeUe7YLnlXu06+R2a9NTuy16pvxnmkOWnb45r8i//eaczzSHXGm15rS65rTaY1ot8ET0+Vb7VPb7DH5r9Znu2lxp9Znu2lxp9Znu2lxp1ee0+lTT0uVWn2pautzqU01Ll1t9qmnpcqtPNS1dbHXNmZbWnGlpzZmW1pxp6eCNGF/a6pxpac2ZltacaWnNmZbWnGmp50xLPWda6jnTUs+Zlg7eVPOlrc6ZlnrOtNRzpqWeMy31mGkptzHTUm5jpqXcxkxLuY2ZlnLzOa2OmZZyGzMt5TZmWsptzLSU25xpSeZMSzJnWpI505LMmZYO3uz2pa3OmZZkzrQkc6YlmTMtyZxpSedMSzpnWtI505LOmZYO3rj4pa3OmZZ0zrSkc6YlnTMt6ZxpyeZMSzZnWrI505LNmZYO3oT6pa3OmZZszrRkc6YlmzMt2ZxpyedMSz5nWvI505LPmZYO3lD8pa3OmZZ8zrTkc6YlnzMt+ZxpKeZMS0+1JftKq3Ompafakn2lVZ/T6pxp6am2ZF9pdc60FHOmpZgzLZH3dd+61TnTEnlP961bnTMtkfdz37rVOdPSc+3yvtzqnGnpuXZ5X251zrQ0Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlXXN2edecXd41Z5d3zdnlXZvPaXXMtFRzdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1z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fWqsVDZWKrOe26es5/Yp67l9ynpun7Ke26es5/Yp67l9ynpun7Jsn7JsnwYrlYOVysFK5WClcrBSOVipHKxUDlYqs57bp6zn9inL9inL9inL9inL9inL9inL9inL9inL9mmyUjlZqVysVC5WKrOe26es5/Yp67l9ynpun7Ke26es5/Ypy/Ypy/bpYqXyYqXyYqXyYqXyYqUyy/Ypy/bpYqUy67l9ynpunzYrlZuVyizbpyzbpyzbpyzbpyzbpyzbp81K5UalsrGe22es5/YZ67l9xnpun22oVDbWc/uM9dw+Yz23z1i2z1i2z4SVysJKZWGlsrBSWVipLKxUFlYqCyuVWc/tM9Zz+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+5xl+5xl+5xl+5xl+3xDpbKzbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbF+wbF+wbF+wbF+wbF9sqFQOlu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu1Llu1Llu1Llu1Llu3LDZXKybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9xbJ9xbJ9xbJ9xbJ9taFSuVi2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2b7Fs32LZvsWyfYtl+9aGSuXFsn2LZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7F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WLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWbbPWbbPWbbPWbbPN1QqO8v2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Bcv2Bcv2Bcv2Bcv2xYZK5WDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmTZvmTZvmTZvmTZvtxQqZws25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25e3sH29fr5DXylnM7O3qzfzOl2utc6+eP7sdW2nq83PXSybv10sYe8v/t6rDerVB/X6+9+sut+q1023y71GZv24OHL56WKRcy+t6vL2Fbj/t//5+u/154PXXw9e/3rw+vux67+B8/za+uXB69cHr//Yj3K62c9ma70fqc6dTKzTS3+7rX2Ddn1Mu/v/+s//86///M9//e//6Z//9b/847//9V//5d++/ent2/9zPraX6I/XW5HvzkHPvLvX6R+i/Hzn+uOcz4fqrV79fOTd7NXlrq+ud311u+ur++de/dsfic//kfz8Hzk7Q608/ZGOK23bqW2r9eHl131fvu/68ufJ8e1eXu778nrfl7f7vrzf9+Xjvi+f9335+37V+n2/av2+X7Vx36/auO9Xbdz3qzbu+1Ub9/2qjft+1cZ9v2rjvl+1+dv/MH17m4l9qw8vr/d9+d8+nPC3a6P1yrXpdfrUEh9KWZxSGlNKbZxShFOKckoxTinOKSU4pSSnFE7aFidti5O2i5O2i5O2i5O2i5O2i5O2i5O2i5O2i5O2fWiuxM9bouvnT/JNv/9E4divoO30c4otP5TinFKCU0pySvn9ryBZp1Ls2sdsPb2waf185f3L6VstC1RLc2qRbTu2mLWdinl39VsxQipGScXYocXY9naxmcqHYpxUTJCKSVIx9XXF9IdiFqmYBhUjxyawnX7nwqz9QzFCKkZJxRipmIMTuPutGBf9UEyQiklSMUUq5tgEdj392Mt9+1BMg4rRjVSMkIrRrytmfSjGSMU4qZhjEzhOn/ot5MNHFU1SMUUqZpGKOTaBf15sYR8+qthGKkZIxSipmGMTODxPxcSHz03mpGKCVEySiqkvKybrQzGLVEyDivFjEzjlNM+kfRg7XUjFKKkYIxVzbAKnxakY/5AzHqRiklRMkYo5NoEz/VRMffjc5A0qJjZSMUIqRr+smJUfijFSMU4q5o4J/Mfr551fv+78+uvOr//baZb19vf73lq/vX5ud359ufPr631f/9jfz734a1py8C/obm8/eEj1j7U0p5aDf0X3ci0CqkVBtRioFgfVwvktQ1mcXzOUg39T93ItC1RLc2rpDVSLgGpRUC2c3+0W0C93C+i3uwX0693SoNxtUO42J3d14+Su/v7vMF/E6Lr9dma4v32+88yPrx93fv288+vXnV//t78G3er0+mf+fvu+r//7v4h75fXlzq+vd359u/Pr+51fP274+mUfXz/v/Pp159f//a9ffbvWzT++ft/39X//1zivvL7c+fX1zq9vd359v/Prx51fP+/8+nXn17/z16/e+evX7vz1a3f++rU7f/3aPb9+9/8l3678xeMq7E2jLP35jUP2IfDbH9Q//uD5xdLr7TvOevdz3f1HPd8nus//Efn8H9HP/xH7/B/xz/+R+Pwfyc//kfr8HzkbJL29/ePpd9bw2x8595Pi0++ArHc7+LfvL993ffnzMXK7l5f7vrze9+Xtvi/vn3v5//irlbmX/0h+/o+c/SroePsqeP+4k/N96+nnre959lvf674v33d9+fO/+/mZl3/3j6L8Ty//8do+KTXZZPvbv6jzv/r5RbUoqBY7shY9PQhI332Qfvvn4pxSglNKckopTimLU0pjSolDA/di9odwSlFOKbdM249jUvh9Xz7u+/J535ev+778uu/Ln0+ZX39v/+wgcP63MG/5BnLvN9DffoOL6Zp259f3O79+3Pn1886vX3d+/XXn1//9L+GL31xqu/Pryz1ff/9f9u3K8/+K1ukn9Et+3lfS8l//w7j8R9bn/0h/+o/8Yk36xT8in/8j+vk/Yp//I/75PxKf/yOf/9uvz//t1+f/9uvzf/vr83/76/N/++d/w7qWnW6sy4c/Yp//I/75PxKf/yP5+T9Sn/wj+//yb1ee/fuUtb1hZlnvEvz7TyT2//n//uP//Os//ud//qdvT4D79n/9X//yX94eCLf/z3////7H9//LfvH/Dw==","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"]}],"outputs":{"globals":{},"structs":{"functions":[{"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"},{"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"}]}},"file_map":{"113":{"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\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 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 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 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 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"},"141":{"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\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 hash = compute_unencrypted_log_hash(contract_address, 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 hash = compute_unencrypted_log_hash(contract_address, 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 hash = compute_unencrypted_log_hash(contract_address, 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 hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"153":{"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"},"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"},"166":{"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.\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 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.\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 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 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":"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 `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\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"},"273":{"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 [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\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 [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"274":{"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"},"278":{"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"},"301":{"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"},"323":{"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"},"337":{"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\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"},"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 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"},"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"},"443":{"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"},"444":{"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"},"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"},"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::{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"},"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\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"},"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;\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"},"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: 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"},"85":{"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"}}}