@aztec/accounts 0.55.1 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/EcdsaKAccount.json +1 -1
- package/artifacts/EcdsaRAccount.json +1 -1
- package/artifacts/SchnorrAccount.json +1 -1
- package/artifacts/SchnorrSingleKeyAccount.json +1 -1
- package/dest/testing/configuration.d.ts.map +1 -1
- package/dest/testing/configuration.js +16 -13
- package/dest/testing/create_account.d.ts.map +1 -1
- package/dest/testing/create_account.js +9 -13
- package/package.json +11 -8
- package/src/testing/configuration.ts +15 -13
- package/src/testing/create_account.ts +12 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"transpiled":true,"noir_version":"0.34.0+e0185e75e65df08b5334856f8bf63fa3aed7049a","name":"SchnorrAccount","functions":[{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)","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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RaMZRaMZRaMZRaMZRacZRacZRacZRacZxU1h2oBgSe00o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0oxg0oxg0oxg0oxg0oxgNltRBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pJM4pJM4pJM4pJM4rZYEmdNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKPYaUax04xiLzeKJmN3sDY999bT5/bombE7WvPEwW65PVe3YYcHP5yqredUfT2nGus51VzPqfb1nOpYz6nO1Zxqubl9wlOV9ZzqenZLsp7dUrltfsJTXc9uSdazW5L17JZkPbslWc9uSdezW9L17JZ0PbslXc9uqfz7BZ7wVNezW9L17JZ0PbslXc9uSdezW7L17JZsPbslW89uydazWyr/jo8nPNX17JZsPbslW89uydazW7L17JZ8PbslX89uydezW/L17JbKv2fnCU91PbslX89uydezW/L17JZ8PbulWM9uqfzbnayl7E5V26O3fhjQpfc03Q8H9FDi5F5i+4p25s0z0j4dmjHH7miRzYxufvrpj9dv3rz+7cc3735++eH1u7fv71/b7v/n9HMnm9XWP71fH7a/QGJ6ovqjo/3x0ZtzO/28x2VL9OuXGNcvMa9e4vTn+ZctIdcvodcvYdcv4dcvcf3u1ut3t16/u/X63a3X7267fnfb9bvbrt/ddv3utut3t12/u+363W3X7267fnfb9bvbr9/dfv3u9gt0t1mM7V66Hx6d7cTR2vbS0vPx0fcDMtqAnDagoA0oaQPqtAEN2oAmbEDRaAMS2oBoSR20pA5aUgctqYOW1EFL6qAlddCSOmlJnbSkTlpSJy2pk5bUSUvqpCV10pI6aUmdtKTutKTutKTutKTutKTutKTutKTutKTutKTutKTutKQetKQetKQetKQetKQetKQetKQetKQetKQetKQetKSetKSetKSetKSetKSetKSetKSetKSetKSetKSetKSWRotqabSslkYLa2m0tJZGi2tptLyWRgtsabTElkaLbGm4zBZcZgsus+XKmf1QwwpqeEGNSyRlj9jVSD+ukQU1ekGNceEaXY5rzOvXuASqOVvjEqkwdFdj2PH1uASrOVvDCmpcoj9G2K7GaEc1LiEIPHXLDj09jmt8RV7loxoPr4pFr8pFr+qLXjUWvWouedXXPDR/4lWy6FW66FW26FWL1oYvWhu+aG34orXhi9aGL1obsWhtxKK1EYvWRixaG7FobcSitRGL1kYsWhuxaG3EorWRi9ZGLlobuWht5KK1kYvWRi5aG7lobeSitZGL1kYuWht90droi9ZGX7Q2+qK10Retjb5obfRFa6MvWht90droi9bGWLQ2xqK1MRatjbFobYxFa2MsWhtj0doYi9bGWLQ2vuJTYj+3+++x/cKU3vffrhLjocBXfOr7XQX0In8/HXP7BSg2W//8/kUv8dc+36TS9h5J29E9kl7i73dna0hBDS2oYQU1vKBGFNTIghr9EjVC/rHGKKgxr19DW0GNS/S52r5GtOMaWlDDCmp4QY0oqJEFNXpBjUv0uc7917LJiRrz+jUu8RU2Z2tIQY2L9PkY+xpyXMMKanhBjSiokQU1ekGNUVBjXrrGOKrhraCGFNS4RJ/72H7W5D5P1LCCGl5QIwpqXKLPPXRfYz6qcXz05mPs7X325tPm/W8C+/htpnqJ74a58IgGbkSTNqJLfD3MhUckuBEpbkSGG5HjRhS4EeEyO3CZHbjMDlxmZ3keRd++dYz9sSb2cTzlnZZt+43h2fJ4PFfus4cavaDGKKhxidUdurt3iN7OrW7L7eKOgy+Tt4/jucRXa1x0PAIbj5aPJ7cHbz6wPB6PwcbjsPFE9Xg2H0d+OnjzB9nj8SRsPB02nktkbozd52FxInMv8S0ZZ56p1Ut88cXZGlJQQwtqWEENL6gRBTWyoEYvqDEKahT0+Szo81nQ57Ogz2dBn8+CPp8FfT4L+nwW9Pks6PN5/T631gpqSEENLahhBTW8oEYU1MiCGr2gxiioUdDnUtDnUtDnUtDnUtDnUtDnUtDnUtDnUtDnUtDnUtDnWtDnWtDnWtDnWtDnWtDnWtDnWtDnWtDnWtDnWtDnVtDnVtDnVtDnBd81YFbQ51bQ51bQ51bQ51bQ51bQ517Q517Q517Q517Q517Q517Q517Q517Q517Q517Q51HQ51HQ51HQ51HQ51HQ51HQ51HQ51HQ51HQ51HQ51nQ51nQ51nQ51nQ51nQ51nQ51nQ51nQ51nQ51nQ572gz3tBn/eCPu8Ffd4L+rwX9Hkv6PNe0Oe9oM8LnoezgufhrOB5OCt4Hs4KnoezgufhrOB5OCt4Hs4KnoezgufhrOB5OCt4Hs4KnoezgufhrOB5OCt4Hs4KnoezgufhrOB5OCt4Hs4KnofzgufhvOB5OC94Hs4Lnofz5gU1sqBGL6gxCmoU9KCwHKpLuYpP2X5JR6odj8dh4wnYeBI2nnINnzuLlurH4xmw8UzWeLTBxiOw8ShsPAYbT30+/9P3FriyvkfBNWHj6bDxDNh4Jms81mDjEdh4FDYeg40Hls8Gy2eD5bPB8tlg+WykfN78pPdHnr4p9P2Ntuw3Tv3hPE7ftv3jK/o3v2J88yvmt77i9O3Dl1+x+cHuDzzddpLb7/yQqfvL4vPjR5zf/pLx7S+Z3/iSvzc//uflH69f/vTm1fvNS+7/659vf/7w+t3bTz9++O/vH//L5uD/AQ==","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns","directive_invert","directive_integer_quotient"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(initializer)"],"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":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","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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UNwv93oFNT1X3E1xLs7qRi+jzLveDsdZVm/8Zlm9cZtl9cZrltVb0Luo3vjMsnrjMsvqjccsqzcOs6ze+Muienv8ZVm98Zdl9cZfltUbf1lWb0HvonrjL8vqjb8sqzf+sqze+MuyeuMvi+od8Jdl9cZfltUbf1lWb/xlWb0FvYvqjb8sqzf+sqze+MuyeuMvy+qNvyyqd8RffkPvEOcRxs93gL9riGd8XcNhfaBSYXnYTuvPKr5L05NlM36RxoSQkEb88uSFeJVqrY1fXohj4v0rIaKg47d0zPdO39iTGztU8myvEo09GbIjJb9EM7PkTqv7b4uejNaROu55DVnqrT2xJ7d1GtF7slytiJ7vhRpu6smi9VifnuxfO/XJ9VIGN/VkLXusT0/+Vi+tjXExaf2X+ihl9Kr15utSosxRnonr16VsDtI4uwzy84tY3kUXRC8vek92+DSi92SITyN6T+75NKL35J5PI3pP7vksoqueLPFpRO/J555G9J7M62lEx5FWEF0QvbzoONIKouNIK4iOI60gOo60gug40vKiaxxpBdFxpBVEx5FWEB1HWkF0QfTyouNIK4iOI60gOo60gug40gqi40jLi25wpBVEx5FWEB1HWkF0HGkF0QXRy4uOI60gOo60gug40gqi40griI4jLS+64EgriI4jrSA6jrSC6DjSCqILopcXHUdaQXQcaQXRcaQVRMeRVhAdR1pedIsjrSA6jrSC6AM70jBvlq30FIqKPrAjrSe6IHp50Qd2pPVEH9iR1hN9YEdaT/SBHWk90Qd2pNVEdwM70nqiD+xI64mOI60gOo60guiC6OVFx5FWEB1HWkF0HGkF0XGkFUTHkZYX3eNIK4iOI60gOo60gug40gqiC6KXFx1HWkF0HGkF0XGkFUTHkVYQHUdaXvSAI60gOo60gug40gqi40griC6IXl50HGkF0XGkFUTHkVYQHUdaQXQcaXnRI460gug40gqi40griI4jrSC6IHp50XGkFUTHkVYQHUdaQXQcaQXRcaTFRfcTjrSC6OM6Um3VInooK/q4jrSi6OM60oqiC6KXF31cR1pR9HEdaUXRx3WkFUUf15FWFH1cR1pPdDWuI60oOo60gug40gqi40griC6IXl50HGkF0XGkFUTHkVYQHUdaQXQcaXnRNY60gug40gqi40griI4jrSC6IHp50XGk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","brillig_names":["get_contract_instance_internal","get_public_data_witness","lt_32_hint","decompose_hint","lte_16_hint","key_registry_get_stored_keys_hint","get_public_keys_and_partial_address","notify_created_note","get_key_validation_request","unsafe_rand","emit_encrypted_note_log","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["lookup_validity"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)"],"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":"7P3LjmTrkp7r3Uu12Rh2NuOtCIJAaXMLBDZIQaRaRN27/qw547AqY6avVcvT440wb/FQA15mf+T83Hy4Pzb+97/8H//1//n/+3//P/7bf/8//8f//Jf//H/73//yf/2P/9d/+V//7X/89/P/+t//Yv5v/3//8//zX/77j//n//xf/+X/+7/+5T9f/+lf/ut//z/O//mv/+lf/s//9n/913/5z67zr//pp+t0RP+8VMf89Wpx/+Bqi7E/r7bMvHG1XGUvl5//u79dr3V9dL29vrq46OvV9uGLy/XSo4jP+4v/7//pXyyeh/LzoeTzUH4+lHoeys+H0s9D+flQ5nkoPx2KX89D+flQ5HkoPx+KPg/l50Ox56H8fCj+PJSfD+U50X5wKM+J9oNDeU60HxzKc6L94FCeE+3PhxLPifaDQ3lOtB8cynOi/eBQnhPtB4fiz0P5+VCeE+0Hh/KcaD84lOdE+8GhPCfaDw7lOdH+fCj5nGg/OJTnRPvBoTwn2g8O5TnRfnAo/jyUnw/lOdF+cCjPifaDQ3lOtB8cynOi/eBQnhPtz4dSz4n2g0N5TrQfHMpzov3gUJ4T7QeH4s9D+flQnhPtB4fynGg/OBTyRFvX26G03zqUjnq5vCv/qUMhT7SfdijkifazDqX/qYnWRuKlzQl5a1Py315cfueLfzhhqdjL66t43/hfIeH+cjaRbwVVfHSxXq+hpf126j/+AB/8SXXy9U9q1zwuEdueB/PxwfjzYD4+mHgezMcHk8+D+fhg6nkwHx9MPw/m44OZ58F8eDBzPQ/m44OR58F8fDDPyfcvDuY5+f7FwfjzYD4+mOfk+xcH85x8/+JgnpPvXxzMc/L9i4N5Tr4fH8z5Hz5P5i9O5jn7/tXJPIffvzqZ5/T7Vyfjz5P5i5N5zr9/dTLPAfivTuY5Af/VyTxH4L86GfgMbO9+vmJet07mft+/n//p82T+4mTuMgPn28n0rZORmNeTsXcn07D/mkSfJ/MXJ2PPk/mLk/HnyfzFycTzZP7iZPJ5Mn9xMvU8mb84mX6ezF+czDxP5uOT0et5Mn9xMs8Z+K9O5jkD/9XJPGfgvzoZf57MX5zMcwb+q5OBz8Cfd39G4TPwJ57MXWbgt/8V6bdO5jObnUXN2rWp2XsMn/lWT13662a13oxdvWv1L0Re9cvJaMtb9ecIPrja3m57m773e6Z/NKubmrXv1KzrqxP00r9p9lbZ8vPR+N6jqXdlj/58NPGdjiZeX9sibh7NNW9Jqde7qz/Uv/4yrXq9/cfn9lFgh78Undfb4f2FEz6R/FrFj65e3grmj79PPv8+n/z3mXgdUN9d/fL3qeffB/336effB/33meff53P/PuesX/8+mv/+7+PX8++D/vt8q89z3/Dv860+gn7Fv4/Z621mc//p7/OtPjX/xr9PXPF65teNv4/J9XLmJu/q0D/uQfm3+jhOOXN9PT7TD878+Tn/8Wf+/Oz++DN/fh5//Jk/P2M//syfn5sffubx/Cz8+DN/fr59/Jk/P7M+/syfn0Mff+b+PPO/68xTXn7Qle8P5MMzl+t1w69c75eGf/TCbvNyeu7vb878+Qd6fmiF/4Gen3Dhf6Dnx2H4H2jxZ+e3d2dR17/5A/3b0Sz+iHvjaHLxJ9FbR7P4A6P26w/v7d1XkR8nnszrN256ybsfZnz8G+RP/M1yLv48+l3/pN/r427065907MafdE7zf1498o7H/HgEygeV6PTrmdj1jkn9+cgUye/1KfZTj/Lhnzf79ccJ2ul/89L/VtDDP19NvYy2OiM/F1S0gppW0MAKqotWkNAKUlpBRivIaQUFrSBaUhctqYuW1EVL6qYlddOSumlJ3bSkblpSNy2pm5bUTUvqpiV105J6aEk9tKQeWlIPLamHltRDS+qhJfXQknpoST2wpNYLltR6wZJaL1hS6wVLar1gSa0XLKn1giW1XrCk1guW1HrRklpoSS20pBZaUgstqYWW1EJLaqEltdCSWmhJLbSkVlpSKy2plZbUSktqpSW10pJaaUmttKRWWlIrLamNltRGS2qjJbXRktpoSW20pDZaUhstqY2W1EZLaqcltdOS2mlJ7bSkdlpSOy2pnZbUTktqpyW105I6aEkdtKQOWlIHLamDltRBS+qgJXXQkjpoSR20pE5aUictqZOW1ElL6qQlddKSmmYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUjWYUjWYUjWYUjWYU7YIltdGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotOMotOMotOMotOMol+wpHaaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUQyaUQyaUQyaUQyaUYwLltRBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pJM4pJM4pJM4pJM4p5wZI6aUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUYxaUaxaEaxaEaxaEaxaEaxLlhSF80oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oFs0oNs0oNs0oNs0oNs0o9gVL6qYZxX64UTTpl5c2fXfxxy9t4/Ny9WS8Xq35wcVu+dKrW9v7i/+t1drTau9pdda0+nAL+omtyp5WdU+rtqdV39Nq7Gl1z7Qke6Yl2TMtyZ5pSfdMS7pnWtI905LumZYe7t4/sdU905LumZZ0z7Ske6Yl3TMt2Z5pyfZMS7ZnWrI909LDd098Yqt7piXbMy3ZnmnJ9kxLtmda8j3Tku+ZlnzPtOR7pqWH73/5xFb3TEu+Z1ryPdOS75mWfM+0FHumpdgzLcWeaSn2TEsP38H0ia0+fFq6Ul5b1etvXvrfCvq9M82//a+4xyxR4q//K2x+3fP56768tJxvyd4u7o8ujnotPuateHv5i/WXrn6+cvV3WRv1j1Xf/XLxmN2ofrJfX3rqeoMOIh9Fg+q8xo7adc3fXP9v/cqyfnVZv7asX2f329erU7ouiZ/rjwfXr+ct+uWlNfNWep47/S8vnVd8cP75xesvdP15zevbV4r6z/X3F69/vnb9dX3x+pfNA7VsHqhl88BdFsN9pX5jWb+5rN9a1m8v63d29dvL7rf0svmqHz5fVerrxS3v+/23egxWj8Pqgd9/yHy91xsl+fO/t4ev5Cp5OU8trxsvrdX2cnXLu/9c+sNvUiJe/tu1mLf/dsX0g6tH8uW159wT/+f/063nUd7rKPt5lPc6SvYNops3GId9g+h2/fLF64cNJAMbSO6y9fOe9cQzOu8UnfOcje52lM/Z6G5HuewOz+y6wzPXrjs8c+26wzPXrm/Q5tr1DdpcjhoI50pYPQWrh/0LkFt38OYa1nnK1/7APg/fMfttR9V5+A7bb3yU9sX/q/IvXn/AUhb2LioNqwf+qfG83tvUOT/9rnn0Yp2nPt8V7xXl+nxXvNtRPv6z5f3s1NxlvennVR9fuvpdv4Mc3fU7yNFdd8lHl90lN/hd8htubQx911uviLf6o+PG3yvbXi7PjnfjyB+9ou9437lX9N3uO/fqi3pFO5E794qejf7xXjtfej03+/99r+i56M69omeiO/eKnofu26ujZ6E79/rN5qZf9vrN5qZf9vrN5qZf9uqLev1mc9Mve100N/miuckXzU2+aG6KRXNTLJqbYtHcFIvmprssIf0qvS6am2LR3BSL5qZYNDfFormJvfP1zr0umpvYu17v3OuiuYm94/XOvS6am3LR3JSL5qZcNDflormpFs1N7L24d+510dzE3od75159Ua+L5ib2Dtw797pobmLvvr1zr4vmJvbO2zv3umhu6kVzUy+amx6/o/cTe100N/WiuakXzU29aG7qRXPTLJqbZtHcNIvmplk0Nz1+lfAn9rpobppFc9MsmpvYm3jv3OueuUku9greeze7Z3I6ze4ZnU6ze2an06xvanbP9HSa3TM+nWb3zE+n2T0D1Gl20wQlmyYo2TRByaYJSjZNUA9f0fypzW6aoGTTBCWbJijZNEGxd3rfuVndNEHppglKN01QummC+oSF3p/Y7KYJir0u/N7Nbpqg2IvC793spgmKvSL83s1umqC+20LxXze7aYL6bivFf93spglq0VLx0+ymCWrRWvHT7KYJatFi8dPs95qgRl+f8DD2c7Pfa4K60ez3mqBuNOsPbva+D1o9DcRXbyDRDeQ1r0/GS1H/oIH66g2wH+n+dzQwX7yBYD8EPqfeHnZ7XXZzcvjF45JOs7KpWd3ULPup63du1jc1y54y/uFmf/nRJuATyX2bhU8v920WPunct1n4VHTXZvObTVC/bvabTVC/bvabTVC/bvabTVC/btY3NbtpgspNE1RumqBy0wSVmyao2jRB1aYJqjZNULVpgnr4yu1PbXbTBFWbJqjaNEHVpgmqNk1QvWmC6k0TVG+aoHrTBPXw5duf2uymCao3TVC9aYLqTRNUb5qgZtMENZsmqNk0Qc2mCerha7g/tdlNE9RsmqBm0wQ1myaoWTRBybVogpJr0QQl16IJSq5FE5RcvqnZRROUXIsmKLkWTVByLZqg5No0QcmmCUo2TVCyaYKSTRPUw3dxf2qzmyYo2TRByaYJSjZNULJpgtJNE5RumqB00wSlmyaoh+/i/tRmN01QummC0k0TlG6aoHTTBGWbJijbNEHZpgnKNk1QD9/F/anNbpqgbNMEZZsmKNs0Qdn3mqB+uddX/HtNUDea/V4T1I1m0bu4ZbJfX3rqkhvNqk6/Fm7XNX9z/R8No/dx/46GfVvD6Ceb/I6G0U83+R0No59w8jsaRj/l5Hc0jH7SyW9oONBPO/kdDaOfePI7Gt42acXjJ63r5aWltd43/EdBTisoaAUlraCiFdS0gh7+Tln59vmz5aeCHr47+mZBQitIaQUZrSCnFRS0gpJWUNEKalpBA3vrqItWkNAKUlpB7O+AI/O1/CjJnz8UwHes/h0NwJ8QeLsB9vevf0cD7O9U/44GaJ8hivbO1LR3pqa9MzXtnalpd3vusosy4/VZk3XpjZgoeZn/tLxuvLRW28vVLe9un/VHr20RL/fyLObdd76mH1w95xPdn1fPOaZ//adv5d1l1eXzLP84y3ye5d3Osp5nebez7OdZ3u0s53mW9zrLu2wxfZ7lH2cpz7O821nq8yzvdpb2PMu7naXDPogN7Vtu+CbWaHv93UZe8dGfGH4H7HYDbCnwdzTA/vX/zQYUvtn072iA/Sv9v6MBtl38OxqAfxd1uwH/6g3Av4u63QDs92Z6wX5vphfsuyK9YN8VqcC+K1KBfVekAvuuSAX2XZE+fOPhzYJgn5lUaEkttKQWWlILLamVltRKS2qlJbXSklppSa20pFZaUistqZWW1EpLaqMltdGS2mhJbbSkNlpSGy2pjZbURktqoyW10ZLaaUnttKR2WlI7LamdltROS2qnJbXTktppSe20pA5aUgctqYOW1LQNFkrbYKG0DRZK22ChtA0WSttgoUFL6qQlddKSOmlJnbSkTlpSJy2pk5bUSUvqpCU1bYOF0jZYKG2DhdI2WGjRkrpoSV20pC5aUhctqWkbHZS20UFpGx2UttFBaRsdlLbRQZuW1E1L6qYlddOSumlJ3bSkHlpSDy2ph5bU872eDPbLJ5bow33rpzb7vZ4MdqPZ7/VksBvNfq8ng91o9ns9GexGs4ueDGZwR3znZhc9GczgPvnOzS6aoOxy1vxqF+xztNFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcstFcsg0tqWnPxjXas3FtaEk9tKQeWlIPLKn9giW1X7Ck9guW1H7BktovWFI7zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSg6zSgGzSgGzSgGzSgGzSjGBUvqoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFpBnFpBnFpBnFpBnFvGBJnTSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjWDSjWDSjWDSjWDSjWBcsqYtmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFJtmFJtmFJtmFJtmFPuCJXXTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjOLQjOLQjOLQjOLQjOJcsKQemlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmFHUC2YUT0GspD4FsZL6FMRK6lMQK6lPQaykPgWxkvoUxErqUxArqU9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTECyphWYUhWYU5ROMYvfLxWP2vqCfL/7x9Vm8FHK+l4nXy0Xyg+tz9OXyHHuru/5s1jY165uajU3N5qZma1OzvanZWdTsJxjcT2xWNjW7aYIS9AT1Y2nt60tPXXKjWdXp18LtuuZvrv+jYd/WMHqS+h0No6ep39EweqL6HQ2jp6rf0fDDJ6tKfb245ae7DI937bcKElpBsDvmQnPtQnPt8njXfuvfUNIKKlpBTSuIltRGS2qjJfXjXfutgmhJ/XDXrqqvL62ZN+atyHwtP0ry5/np4Q7+7g3kV2+gvnoDtHcao73TOO2d5uEu/x/8N9f2+qEyr/jgY9/DHf/dG7Cv3sA93vky6rWBS280UPLyb1rL68ZLa7W9XN3yrv7+6LUt4qVdi3m7i3EmoA+uHsmX154zIPzrP30T4y4rDp5n+cdZ5vMs73aW9TzLu51lP8/ybmc5z7O811k+fBPJvQeR+OqzbHz1WTa++iz78E0qd28AfhfndgOwX8ALbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1yLDva+fU28+sruvdd3f/EXA47F8y3rlZ9q8e79xsb2p29jSrF/vb8zs3C3tH1wv2jq4X7B1dL9g7ul6wz156wT576QX77KUX7LOXXrDPXiqwz14qtKQWWlILLamFltRCS2qhJbXQklpoSS20pFZaUistqWnbGZS2nUFp2xlUaUmttKRWWlIrLamVltRGS2qjJbXRkpq2nUGNltRGS2qjJbXRktpoSW20pHZaUjstqZ2W1E5LaqcltdOS2mlJ7bSkdlpSOy2pg5bUQUvqoCV10JI6aEkdtKSmWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWValWVYdWlIPLamHltRDS+qBJbVdsKQ2mlE0mlE0mlG0C5bURjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOK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Ku35pmq0pDZaUtPssNLssNLssNLssNLssNLssDotqZ2W1LTnmyrt+aZKe76p0p5vqrTnmyrt+aZKe76p0p5vqjQ7rDQ7rEFL6qAlddKSOmlJnbSkTlpSJy2pk5bUtOebKu35ppq0pE5aUhctqYuW1EVLatrzTZX2fFMtWlIXLamLltQ0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o2g0o2g0o2g0o2g0o2gXLKmNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSdZhSdZhSdZhSdZhT9giW104yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04xi0Ixi0Ixi0Ixi0IxiXLCkDppRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRTJpRTJpRTJpRTJpRzAuW1EkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikUzikUzikUzikUzinXBkrpoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFpRrFpRrFpRrFpRrEvWFI3zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSgOzSgOzSgOzSgOzSjOBUvqoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFgRlFv2BG8RTESupTECupT0GspD4FsZL6FMRK6lMQK6lPQaykPgWxkvoUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BcGSWmhGUWhGUWhGUWhGUS5YUgvNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKCrNKCrNKCrNKCrNKOoFS2qlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWjGUWjGUWjGUWjGUW7YEltNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKPoNKPoNKPoNKPoNKPoFyypnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUg2YUg2YUg2YUg2YU44IlddCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtKMYtKMYtKMYtKMYl6wpE6aUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUSyaUSyaUSyaUSyaUawLltRFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pNM4pNM4pNM4pNM4p9wZK6aUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxaUaxH24U9cq3l77ifUEfXRwRL1df0W+Xi3x0fY6+XJ5jb3XXn83KpmZ1U7O2qVnf1GxsajY3NVubmu1Nzc6eZudCT1Ay2f46ANYlN5pVnX59dbuu+Zvr/2gYPUX9jobRk9TvaBg9Tf2Ohn1bw+ip6nc0fJfJSl6rKpsbH7wrXz94V791UP1nQUUrqGkFzaML6ut6+wddPxV0H3t+z4KEVpDC/g3dx57fsyCnFRS0gmhJLbSkFlpSy8AK0otWEC2pVWkFGa0gpxX06KRW1deX1sz3BX3wypGvE75ESf48g2t+9QbqqzfQX70B2juN0d5pTGgFKfvfXFu/vHRe8cGtA7Ov3oB/9Qbu8c6X8Xq3qq5bd6tKXv5Na3ndeGmttperW97V3x+9tkW8tGsx9na16QdXn49DL6995v7rX//pG2F3WUPwPMs/zrKeZ3m3s+znWd7tLOd5lvc6y7us3Hie5R9nKV98EPGvPsv6V59l77O95DMbgN/Fud0A/C7O7QYKdmPPm1YQ7ZvXoH3zGrT7+UG7nx+0+/n32aZyz4KCVlDSCqIlddCSOmhJnbSkTlpSJy2pk5bUSUvqpCV10pI6aUmdtKROWlIXLamLltRFS+qiJXXRkrpoSV20pC5aUhctqYuW1E1L6qYlddOSumlJ3bSkblpSNy2pm5bUTUvqpiX10JJ6aEk9tKQeWlIPLamHltRDS+qhJfXQknpYSR3XxUrqUxArqU9BrKQ+BbGS+hTESupTECupT0GspD4FsZL6FMRK6lMQLalh6v4UREtqoSW10JJaaEkttKQWWlILLamFltRCS2qlJTVM3Z+CaEkNU/enIFpSKy2plZbUSktqpSW10pLaaElttKQ2WlIbLamNltRGS2qjJbXRktpoSW20pHZaUjstqZ2W1E5LaqcltdOS2mlJDTOKpyBaUsOMYlwwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJ/fAnvqvN6/Itf/+spw8fU5LvHq5Z1/Vun9Y//iCp06xsalY3NWubmvVNzcamZlnPmz4FsZ43fQpiPW/6FMR63nRcfdEKElpBSivIaAU5raCgFURL6qYlddOSumlJPbSkHlpSDy2ph5bUQ0vqoSX10JJ6aEk9tKQeWFLLBUtquWBJLRcsqeWCJbVcsKSWC5bUcsGSWi5YUssFS2q5aEkttKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVL6qIlddGSumhJXbSkLlpS04yi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0oyi0oyi0oyi0oyiXrCkVppRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRNJpRNJpRNJpRNJpRtAuW1EYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzik4zik4zik4zik4zin7BktppRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRjFoRjFoRjFoRjFoRjEuWFIHzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgmzSgmzSgmzSgmzSjmBUvqpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFpBnFohnFohnFohnFohnFumBJXTSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSjWDSj2DSj2DSj2DSj2DSj2BcsqZtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtmFJtm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7SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w27SS3TTvJbdNOctu0k9w37ST3TTvJfdNOct+0k9wv39TsognKN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcN+0k9007yX3TTnLftJPcv9lO8tF4bdZ+bvZ7TVA3mn34BGWjLy/t7+v5qHiJtn556bxi/qbZPxqor95AoxvI6+2lU9Q/aGC+eAOP3/F97wbkqzeg7AamXq6Wui67+WZqr5Hbof8+ch+/i/szm/VNzcamZtmTw52bZU8Z/3Czv5z2Gz6R3LdZ+PRy12YHPunct1n4VHTfZr/ZBPXrZr/ZBPXrZn1Ts99sgvp1s99sgvp1s5smqNk0Qc2iCSquRRNUXIsmqLgWTVBxLZqg4vJNzS6aoOJaNEHFtWiCimvRBBXXpglKNk1QsmmCkk0TlGyaoB6/i/szm900QcmmCUo2TVCyaYKSTROUbpqgdNMEpZsmKN00QT1+F/dnNrtpgtJNE5RumqB00wSlmyYo2zRB2aYJyjZNULZpgnr8Lu7PbHbTBGWbJijbNEHZpgnKNk1QvmmC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IFZSn4JYSX0KYiX1KYiV1KcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpCJbUQjOKQjOKQjOKQjOKcsGSWmhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWlGUWlGUWlGUWlGUS9YUivNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKBrNKBrNKBrNKBrNKNoFS2qjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWnGUWnGUWnGUWnGUW/YEntNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKMYNKMYNKMYNKMYNKMYFyypg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUk2YUk2YUk2YUk2YU84IlddKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtGMYtGMYtGMYtGMYl2wpC6aUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUSyaUWyaUWyaUWyaUWyaUewLltRNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pNM4pDM4pDM4pDM4pDM4pzwZJ6aEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxaEZxYEaxL5hRPAWxkvoUxErqUxArqU9BrKQ+BbGS+hTESupTECupT0GspD4F0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbCkFppRFJpRFJpRFJpRlAuW1EIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikIzikozikozikozikozinrBklppRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRlFpRtFoRtFoRtFoRtFoRtEuWFIbzSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSg6zSg6zSg6zSg6zSj6BUtqpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlF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otKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotGMotGMotGMotGMol2wpDaaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUXSaUXSaUXSaUXSaUfQLltROM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pBM4pBM4pBM4pBM4pxwZI6aEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYx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atFK8x/drpqlFi01/9Htqllq0VrzH92umqUWLTb/0e2qWWrRavMf3a6apRYtN//R7apZatF68x/drpqlFi04/9Htqllq0YrzH92umqUWLTn/0e2qWWrRmvMf3a6apRYtOv/R7apZatGq8x/drpqlFi07/9Htqllq0brzH92umqUWLTz/0e2qWWrRyvMf3a6apRYtPf/R7apZatHa8x/dbpqlZNXec1m191xW7T2XVXvP5fJV3W6apWTV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nP5ZnvPR+O1W/u522+29/xWtw+fpWz05aX9fUEfVX9uAFu/vHReMX/T7Z8d6JfvwNAd5PX20inqH3XgX76D+PId5JfvoNgdTL1cfT5wX3bzXdVek7dDf07eXtXtbOr28fu+P7Vb9gxx727Z88Y/3O2vZ/+BzyZ37tZXdQufee7cLXw+unO332yWutHtN5ulbnT7zWapX3ar1zebpW50+81mqRvdbpql9No0S+nlq7rdNEvptWmW0mvTLKXXpllKr1WzlKyapWTVLCWrZilZNUs9ft/3p3a7apaSVbOUrJqlZNUsJatmKV01S+mqWUpXzVK6apZ6/L7vT+121Sylq2YpXTVL6apZSlfNUrZqlrJVs5StmqVs1Sz1+H3fn9rtqlnKVs1StmqWslWzlK2apXzVLOWrZilfNUv5qlnq8fu+P7XbVbOUr5qlfNUs5atmKV81S8WqWSpWzVKxapaKVbPU4/d9f2q3q2apWDVLxapZKlbNUrFqlspVs1SumqVy1SyVq2apx+/7/tRuV81SuWqWylWzVK6apXLVLFWrZqlaNUvVqlmqVs1Sj9/3/andrpqlatUsVatmqVo1S9WqWapXzVLwfd/37nbVLEXfI37nbn1Vt6tmKfou8zt3u2qW+m57z290u2qW+m57z290u2qWWrX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zW7X33FbtPbdVe89t1d5zu3xVt5tmKVu199xW7T23VXvPbdXec1u199xW7T23VXvPbdXec1u199xW7T23VXvPbdXec1u199xW7T23VXvPbdXec1u199xW7T23VXvPbdXec1u199xW7T23VXvPbdXec/tme89H47Vb+6Db7zVL3er24bPUlW8vfcWNbifbX1566pIb3apOv776+W56/ub6Pzu2dR37uo5jXce5ruNa13Gv63i2dfz4veif3rGs63jdzPXwHenybkqemfcd/1mR4yoKXEWJq+gu7/ny+s+7bG5UVPn2aavf/lOofqmocRUNraL77Ke+a0WCq0hxFRmuIsdVFLiKEldR0d5F4uGZ3df1Vn59cEZDqygvXEWCq0hxFeHm7IfvZb1d0aMzW1VfX1oz3//VPnjlyNfPahIl+cGnqcwv30F9+Q76y3cwX72Dh+8XvZktD98BersixVWEe496+L7L2xXh7gXdZW9kxmtFdd26Z1ny+q14ed14aa22l6tb3t2C7I9e+3xu6z+vPqP3u6/QTT+4eiRfXnvOBPav//zt0LuspXwe5p+H2c/DvN9hzvMw73aYd9nZ+TzMPw9Tnod5v8PU52He7zDteZj3O0x/Hub9DjOeh3m/w8R9G964b1Yafles7eWfkOQVH/6V4XfFbncw15fvQL58B/rlO7Av34F/+Q7g31T9HR3Av6n6OzqAf1P1d3TQtCnh4Rsyb1XkF+2bJL9o3yT5RfsmyS/aN0l+Oa4i2jdJfj38F2o3fjXjV+Eqov1CzS/aL9RcaL9Qc6H9Qs2F9gs1F8NV5LiKAlcR7d6XC+3elwsuswWX2YrLbMVltuIyW3Fz9sO3RN2uCJfZipuzFTdnKy6zFZfZhrs3Yrh7I4a7N2K4zDZcZhvu3ojhMttwmW24zDZcZjtuznbcnO24Odtx90busyXjrhXh5mzclgx33L0Rx2W24zI7cJkduMwOXGYHLrMDl9mBy+zAzdmBm7OD9rsRD9zvRhJ3byRx90YSd28EtyXDcVsyPHH3RhKX2YnL7MTN2Ymbsws3Zxduzi7cnF24Ofs+WyPuWhFuzi7cvZHC3RspXGYXLrMbl9mNy+zGZXbj5uy76OL7VoTL7MbN2Y2bsxuX2Y3L7MHdGxncvZHB3RsZXGYPLrMHd29kcJk9uMweXGYPLbPjos3ZcdHm7Lhoc3ZctHsjcTmuItqcHRft3khctHsjgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQIbQ5O4Q2Z4fQfjcSQvvdSCjt3kgo7d5IKO3eSOAcZOAcZCjt3kjgHGTgHGTgHGTgHGQYbs423JxtuDnbcHP2fRzkXSvCzdmGuzdiuHsjOAcZOAcZOAcZOAcZOAcZuKeFB+5p4YFzkOG4OdtxczbOQQbOQUbg7o0E7t5I4O6NBC6zA5fZgbs3gnOQgXOQgXtaeOCeFh64p4UH7mnhgXtaeCTu3sh9HORdK8LN2Ym7N5K4eyM4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4BxmFm7MLN2fXo383ojavDyt06/fvIh+8cr57z6nrevf8wQ+fKJij8eflOe9f/KXb2dRtX6u6lVXd6qpubVW3vqrbWNVtruq2VnWL+w1u436Di/PJgfPJgfPJgfPJgfPJgfPJMbh7loO7Z4l7TmvgntOauOe0Ju45rYl7TmvintOaFy2zE/ec1sT55MT55LxomZ0XLrMFl9mCy2zBZbbgMltwmS24zMY9pzVxz2lNnE9OnE9OnE9OnE9OnE9OnE9OnE9OnE9OxWW24jJbcZmtuMzGPac1cc9pTdxzWhP3nNbEPac1cc9pTZxPTpxPTsNltuEy23GZ7bjMdlxm43xy4nxyOi6zcc9pTdxzWtNxme24zMb55MT55MT55MT55MT55MT55AxcZgcus3HPaU3cc1oT95zWxD2nNXHPaU3cc1oT95zWxD2nNXE+OXE+OROX2YnL7MJlduEyu3CZXbjMLlxmFy6zcc9pTdxzWrNwmV24zG5cZjcusxuX2bjntCbuOa3ZuMxuXGY3LrNxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDrJwDrJwDrJwDrJwDrIuWmYXzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkE2zkE2zkE2zkE2zkH2RcvsxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIwTnIwTnIwTnIwTnIuWiZPTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTQHKRfNQZ6KYJl9KoJl9qkIltmnIlhmn4pgmX0qgmX2qQiW2aciWGafinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B/njAbW4inCZTXOQPx6dg6sIl9k0B/ljqS+uIlxm0xzkj3VDuIpwmU1zkD8gJKwiwTlIwTlIwTlIwTnI8/U6riJaZgvOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQQrOQSrOQSrOQSrOQSrOQepFy2zFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjFOUjDOUjDOUjDOUjDOUi7aJltOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAdpOAfpOAfpOAfpOAfpOAfpFy2zHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgHecgA+cgA+cgA+cgA+cg46JlduAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOIcZOIcZOIcZOIcZF60zE6cg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycgyycgyycgyycgyycg6yLltmFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CNc5CNc5CNc5CNc5B90TK7cQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ5ycA5ycA5ycA5ycA5yLlpmD85BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5B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UxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEus2kO8lSEy2yagzwV4TKb5iBPRbjMpjnIUxEtswXnIAXnIAXnIAXnIOWiZbbgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTgHKTiHKTiHKTiHKTiHKRetMxWnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnIM0nIM0nIM0nIM0nIO0i5bZhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQjnOQjnOQjnOQjnOQftEy23EO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEOMnAOMnAOMnAOMnAOMi5aZgfOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQcbDHaRe+fbSV7yv6KOLI+Ll6iv67XKRj67P0ZfLc+yt7nrptlZ126u6nU3dPtydfm63sqpb0Hv7BxdHvb5yzNsrm768p5B07X+ofv/i9Qf5vxaZbH/tti658V+L6vTrq9t1zd9c/2fH6Cnmt3SMnmR+S8foaea3dIyeaOQ08Paud0l80IF/ryml7fV9u0N/et/27zWl3OpWV3Vrq7r1Vd2i56V/vNvO108X18+fLvx73fG51e33uuNzq9vvdcfnVrff647PjW7jm81SN7r9ZrPUjW6/2Sx1o9tvNkvd6NZXdbtqlopVs1SsmqVi1SwVq2apXDVL5apZKlfNUrlqlnr4JpjP7XbVLJWrZqlcNUvlqlkqV81StWqWqlWzVK2apWrVLPXwDU2f2+2qWapWzVK1apaqVbNUrZqletUs1atmqV41S/WqWerhm9M+t9tVs1SvmqV61SzVq2apXjVLzapZalbNUrNqlppVs9TDNxp+brerZqlZNUvNqllqVs1Ss2mWymvTLJXXplkqr02zVF6bZqm8fFW3m2apvDbNUnltmqXy2jRL5bVqlpJVs5SsmqVk1Swlq2aph28A/txuV81SsmqWklWzlKyapWTVLKWrZildNUvpqllKV81SD9/M/bndrpqlvtlG8VvdrpqlvtlG8VvdrpqlvtlG8VvdrpqlbNUsZatmqYdvK//cblfNUuy95nfvdtUsxd5nfvduV81S323v+Y1uV81S323v+Y1uV81S323v+Y1uV81Sq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957lq73mu2nueq/ae56q957Vq73mt2nteq/ae16q953X5qm43zVK1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp73qv2nveqvee9au95r9p73pev6nbTLNWr9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3n/fi95zb68tJu/etuJdr65aXzivmbbv/sIL58B4nuIK+3l05R/6iD+vId9JfvYL56B4/f9/2PdTD1crXUddnN5LWXoM4O/Sl5H7/v+1O71VXd2qpufVW37HnjH+721/PhwGeTO3cLn2Pu3C185rlzt/D56K7dzvXNZqkb3X6zWepGt99slrrR7TebpW5066u63TRLzbVplppr0yw116ZZaq5Vs5SsmqVk1Swlq2YpWTVLPX7f96d2u2qWklWzlKyapWTVLCWrZildNUvpqllKV81SumqWevy+70/tdtUspatmKV01S+mqWUpXzVK2apayVbOUrZqlbNUs9fh935/a7apZylbNUrZqlrJVs5StmqV81Szlq2YpXzVL+apZ6vH7vj+121WzlK+apXzVLOWrZilfNUvFqlkqVs1SsWqWilWz1OP3fX9qt6tmqVg1S8WqWSpWzVKxapbKVbNUrpqlctUslatmqcfv+/7UblfNUrlqlspVs1SumqVy1SxVq2apWjVL1apZqlbNUo/f9/2p3a6apf7/7d3djuRGkibQV6L/mJn70yx6BotFA43uxUzvAnsx774sqTKrNJVSKUMR1MmOuhFQEEk3Z9K/8GDw0Oup5lL1VHOpeqq5VD3VXGo91VxqPdVcaj3VXGo91VwKf9/3vXv7VHMp/T3id+7tU82l9PeT37m3TzWX+ld77/l3evtUc6l/tfeef6e3TzWX+ld77/l3evtUc6mneu/5fqr3nu+neu/5fqb3ns/jmd57fvb2ieZSZ2+faC519vaJ5lJnb+dT9faJ5lJnb59oLnX2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y2zNQZ4VcZmtOcizIi6zNQd5VsRltuYgz4q4zNYc5FkRl9magzwr4jJbc5BnRVpmN85BNs5BNs5BNs5BtkPL7MY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yMY5yM45yM45yM45yM45yH5omd05B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5B9k5Bzk4Bzk4Bzk4Bzk4BzkOLbMH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH5yAH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Ls5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5BLs5Bbs5Bbs5Bbs5Bbs5B7kPL7M05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yM05yK05yDo0B3lWhGX2WRGW2WdFWGafFWGZfVaEZfZZEZbZZ0VYZp8VYZl9VsRltuYgz4q4zNYc5FkRl9magzwr4jJbc5BnRVxmaw7yrIjLbM1BnhVxma05yLMiLrM1B3lWxGW25iDPirjM1hzkWRGX2ZqDPCviMltzkGdFXGZrDvKsiMtszUGeFXGZrTnIsyIuszUHeVbEZbbmIM+KuMzWHORZEZfZmoM8K+IyW3OQZ0VcZmsO8qyIy2zNQZ4VcZmtOcizIi6zNQd5VsRltuYgz4q4zNYc5FkRl9magzwr4jJbc5BnRVxmaw7yrIjLbM1BnhVxma05yLMiLrM1B3lWxGW25iDPirjM1hzkWRGX2ZqDPCviMltzkGdFXGZrDvKsiMtszUGeFXGZrTnIsyIuszUHeVbEZbbmIM+KuMzWHORZEZfZmoM8K+IyW3OQZ0VcZmsO8qxIy+zGOcjGOcjGOcjGOch2aJndOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZ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","brillig_names":["get_note_internal","decompose_hint","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":"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":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"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":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"}]}},"file_map":{"102":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n address::AztecAddress, header::Header, utils::field::full_field_less_than\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::{oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header {\n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness for the tree index.\n let witness = unsafe {\n get_public_data_witness(\n self.global_variables.block_number as u32,\n public_data_tree_index\n )\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_data_tree_index, \"Public data tree index doesn't match witness\");\n preimage.value\n };\n\n value\n }\n}\n"},"110":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\nstruct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"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"},"124":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let NB: u32, let MB: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<NB, MB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> [u8; M] where Note: NoteInterface<N, NB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n for i in 0..encrypted_note_log_from_typescript.len() {\n assert_eq(log[i], encrypted_note_log_from_typescript[i]);\n }\n assert_eq(encrypted_note_log_from_typescript.len(), log.len());\n }\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::{get_current_public_keys, get_ovsk_app}, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log<Note, let N: u32, let NB: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, iv);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Note: We could save a lot of gates by obtaining the following keys in an unconstrained context but this\n // function is currently not used anywhere so we are not optimizing it.\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n\n // See the comment in `encode_and_encrypt_note_with_keys_unconstrained` for why having note hash counter\n // and log hash unconstrained here is fine.\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, iv)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n"},"126":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = self.eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = self.eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = self.recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{address::AztecAddress, scalar::Scalar};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"127":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\nstruct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"128":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\nstruct EncryptedLogIncomingBody<let M: u32> {\n plaintext: [u8; M]\n}\n\nimpl<let M: u32> EncryptedLogIncomingBody<M> {\n pub fn from_note<T, let N: u32>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N, M> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T, let MR: u32>(\n event: T,\n randomness: Field\n ) -> Self where T: EventInterface<M, MR> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface<ADDRESS_NOTE_LEN, ADDRESS_NOTE_BYTES_LEN> for AddressNote {\n fn compute_note_hiding_point(_self: Self) -> Point {\n crate::generators::Ga1\n }\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn compute_nullifier(\n _self: Self,\n _context: &mut PrivateContext,\n _note_hash_for_nullify: Field\n ) -> Field {\n 1\n }\n\n fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] {\n [self.address.to_field(), self.owner.to_field(), self.randomness]\n }\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote {\n address: AztecAddress::from_field(fields[0]),\n owner: AztecAddress::from_field(fields[1]),\n randomness: fields[2],\n header: NoteHeader::empty()\n }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = AddressNote::get_note_type_id().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n // 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n // the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n // implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n // 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n global TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS = 32 * 3 + 32;\n\n impl EventInterface<TEST_EVENT_BYTES_LEN, TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n comptime\n {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes: [u8; 32] = randomness.to_be_bytes();\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes: [u8; 32] = serialized_event[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] = [0; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS];\n\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes: [u8; 32] = serialized_event[i].to_be_bytes();\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 201, 247, 40, 80, 60, 188, 158, 251, 242, 103, 197, 79, 165, 195, 10, 160, 255, 35, 167, 152, 25, 233, 77, 145, 214, 243, 210, 119, 0, 20, 29, 95, 15, 63, 33, 190, 184, 67, 254, 96, 128, 243, 220, 228, 201, 130, 86, 163, 52, 127, 111, 10, 212, 7, 160, 16, 87, 13, 39, 11, 5, 1, 164, 65, 8, 56, 82, 245, 13, 68, 176, 90, 100, 69, 243, 78, 117, 188, 221, 34, 178, 31, 155, 89, 143, 176, 129, 118, 36, 236, 64, 179, 52, 239, 184, 51, 51, 199, 221, 49, 81, 197, 17, 199, 192, 99, 49, 168, 157, 164, 190, 33, 240, 182, 214, 173, 7, 156, 102, 95, 65, 217, 225, 123, 42, 21, 124, 144\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N, M> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N, M> {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N, M> + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N, M> + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32, let M: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N, M> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N, M> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32, let M: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N, M>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N, M> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"134":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32, let M: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N, M> {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32, let M: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N, M> {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in \n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in \n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the \n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the \n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from \n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let M: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N, M> {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"135":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::NoteInterface,\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, N, M>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, N, M>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N, M> {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, N, M>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, N, M>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N, M> {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"136":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\nstruct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting \n * a change note in a token's transfer function only when there is \"change\" left).\n */\nstruct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\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"},"145":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: Field = 24;\n\nstruct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"147":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\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"},"150":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage, utils::arr_copy_slice};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field\n) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, public_data_tree_index);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"154":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle<let N: u32>(address: Field, storage_slot: Field, block_number: Field, length: Field) -> [Field; N] {}\n\nunconstrained pub fn raw_storage_read<let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> [Field; N] {\n storage_read_oracle(\n address.to_field(),\n storage_slot,\n block_number as Field,\n N as Field\n )\n}\n\nunconstrained pub fn storage_read<T, let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> T where T: Deserialize<N> {\n T::deserialize(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::address::AztecAddress;\n\n use std::test::OracleMock;\n use crate::test::mocks::mock_struct::MockStruct;\n\n global address = AztecAddress::from_field(29);\n global slot = 7;\n global block_number = 17;\n\n #[test]\n fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\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"},"158":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"160":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let NB: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N, NB> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\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"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"167":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n\n"},"169":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T, Context> Storage<T> for PublicMutable<T, Context> {}\n\nimpl<T, Context> PublicMutable<T, Context> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, &mut PublicContext> where T: Serialize<T_SERIALIZED_LEN> + Deserialize<T_SERIALIZED_LEN> {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) {\n self.context.storage_write(self.storage_slot, value);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, UnconstrainedContext> where T: Deserialize<T_SERIALIZED_LEN> {\n unconstrained pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n}\n"},"185":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions, note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<N, M>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"189":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"206":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\nstruct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n\n"},"221":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\nstruct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\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"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"252":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"259":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f);\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript = 0x2499880e2b1b831785c17286f99a0d5122fee784ce7b1c04e380c4a991da819a;\n\n assert_eq(slot, slot_from_typescript);\n }\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 ∈ {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"},"276":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: Field = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"277":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"289":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr","source":"use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N]\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root<let N: u32>(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n assert(false, \"depth should be between 0 and 10\");\n 0\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n"},"29":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\ntrait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\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"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of the slice.\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n // Apply a function to each element of an array, returning a new array\n // containing the mapped elements.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. This function is also sometimes\n // called `foldl`, `fold_left`, `reduce`, or `inject`.\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. Unlike fold, reduce uses the first\n // element of the given array as its starting accumulator value.\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n // Returns true if all elements in the array satisfy the predicate\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n // Returns true if any element in the array satisfies the predicate\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n\n /// Sorts the array using a custom predicate function `ordering`.\n ///\n /// The `ordering` function must be designed to return `true` for equal valued inputs\n /// If this is not done, `sort_via` will fail to sort inputs with duplicated elements.\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Convert a sequence of bytes as-is into a string.\n /// This function performs no UTF-8 validation or similar.\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"311":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\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"},"328":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"329":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\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"},"429":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_current_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n\n use crate::public_key_note::PublicKeyNote;\n\n #[aztec(storage)]\n struct Storage {\n signing_public_key: PrivateImmutable<PublicKeyNote>,\n }\n\n // Constructs the contract\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_current_public_keys(&mut context, this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[aztec(private)]\n #[aztec(noinitcheck)]\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(noinitcheck)]\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 // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"430":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NoteInterface, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator}\n};\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n// PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal PUBLIC_KEY_NOTE_BYTES_LEN: Field = 3 * 32 + 64;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[aztec(note)]\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NoteInterface<PUBLIC_KEY_NOTE_LEN, PUBLIC_KEY_NOTE_BYTES_LEN> for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\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"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nfn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"85":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/stored_keys.nr","source":"use crate::keys::public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH};\nuse dep::protocol_types::traits::{Serialize, Deserialize};\n\n// This struct represents how public keys are stored in the key registry. We store not just the keys themselves but also\n// their hash, so that when reading in private we can perform a historical read for the hash and then show that it\n// corresponds to a preimage obtained from an unconstrained hint. We do store the keys keys regardless as they might be\n// needed during public execution, and since we need to broadcast and produce hints in some standardized way.\n// While it might seem odd to create a struct for what is effectively some data and a pure function called on it, state\n// variables rely on serializable structs in order to persist data to storage, so we must use this abstraction.\nstruct StoredKeys {\n public_keys: PublicKeys,\n hash: Field,\n}\n\nimpl StoredKeys {\n // Instances of StoredKeys are expected to only be created by calling this function so that we guarantee that the\n // hash field does indeed correspond to the hash of the keys. Ideally we'd forbid direct access to the struct, but \n // Noir doesn't yet support private members.\n fn new(public_keys: PublicKeys) -> Self {\n Self { public_keys, hash: public_keys.hash().inner }\n }\n}\n\n// Our serialization is the concatenation of the public keys serialization plush the hash, so we need one extra field.\nglobal STORED_KEYS_LENGTH: u32 = PUBLIC_KEYS_LENGTH + 1;\n\nimpl Serialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn serialize(self) -> [Field; STORED_KEYS_LENGTH] {\n // The code below is equivalent to:\n // [ ...self.public_keys.serialize(), self.hash ]\n\n let mut array = [0; STORED_KEYS_LENGTH];\n\n let serialized_keys = self.public_keys.serialize();\n for i in 0..serialized_keys.len() {\n array[i] = serialized_keys[i];\n }\n\n array[PUBLIC_KEYS_LENGTH] = self.hash;\n\n array\n }\n}\n\nimpl Deserialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn deserialize(array: [Field; STORED_KEYS_LENGTH]) -> Self {\n // The code below is equivalent to:\n // Self { public_keys: PublicKeys::deserialize(array[0 : PUBLIC_KEYS_LENGTH]), hash: array[PUBLIC_KEYS_LENGTH] }\n\n let mut serialized_keys = [0; PUBLIC_KEYS_LENGTH];\n for i in 0..serialized_keys.len() {\n serialized_keys[i] = array[i];\n }\n\n let hash = array[PUBLIC_KEYS_LENGTH];\n\n Self { public_keys: PublicKeys::deserialize(serialized_keys), hash }\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"},"88":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, address::AztecAddress, constants::CANONICAL_KEY_REGISTRY_ADDRESS,\n storage::map::derive_storage_slot_in_map\n};\nuse crate::{\n context::{PrivateContext, UnconstrainedContext},\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{\n public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH}, stored_keys::StoredKeys,\n constants::{NULLIFIER_INDEX, OUTGOING_INDEX}\n},\n state_vars::{public_mutable::PublicMutable, map::Map}\n};\n\nmod test;\n\n// This is the number of blocks that must pass after a key rotation event until the old keys are fully phased out and\n// become invalid.\nglobal KEY_REGISTRY_UPDATE_BLOCKS = 5;\n\nglobal KEY_REGISTRY_STORAGE_SLOT = 1;\n\n// A helper function that gets app-siloed nullifier secret key for a given `npk_m_hash`. This function is used\n// in unconstrained contexts only - in Note::compute_nullifier_without_context which in turn is called by\n// `compute_note_hash_and_optionally_a_nullifier` function that is used by the NoteProcessor. The safe alternative\n// is `request_nsk_app` function define on `PrivateContext`.\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all current public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_current_public_keys(context: &mut PrivateContext, account: AztecAddress) -> PublicKeys {\n // We're going to perform historical reads from public storage, and so need to constrain the caller so that they\n // cannot use very old blocks when constructing proofs, and hence e.g. read very old keys. We are lax and allow\n // _any_ recent block number to be used, regardless of whether there may have been a recent key rotation. This means\n // that multiple sets of keys are valid for a while immediately after rotation, until the old keys become phased\n // out. We *must* be lax to prevent denial of service and transaction fingerprinting attacks by accounts that rotate\n // their keys frequently.\n // Note that we constrain the max block number even if the registry ends up being empty: this ensures that proof of\n // an empty registry is also fresh.\n let current_header = context.get_header();\n context.set_tx_max_block_number(current_header.global_variables.block_number as u32 + KEY_REGISTRY_UPDATE_BLOCKS);\n\n get_historical_public_keys(current_header, account)\n}\n\n// Returns historical public keys for a given account at some block determined by a block header. We read all keys at\n// once since the constraints for reading them all are actually fewer than if we read them one at a time - any read keys\n// that are not required by the caller can simply be discarded.\n// WARNING: if called with a historical header created from a fixed block this function will explicitly ignore key\n// rotation! This means that callers of this may force a user to use old keys, potentially leaking privacy (e.g. if the\n// old keys were leaked). Only call this function with a header from a fixed block if you understand the implications of\n// breaking key rotation very well.\npub fn get_historical_public_keys(historical_header: Header, account: AztecAddress) -> PublicKeys {\n // TODO: improve this so that we always hint the correct set of keys (either registry or canonical) and hash them\n // once instead of having two different hints and twice as many constraints due to the double hashing.\n\n // The key registry is the primary source of information for keys, as that's where accounts store their new keys\n // when they perform rotation. The key registry conveniently stores a hash of each user's keys, so we can read that\n // single field and then prove that we know its preimage (i.e. the current set of keys).\n let key_registry_hash = key_registry_hash_public_historical_read(historical_header, account);\n if key_registry_hash != 0 {\n let hinted_registry_public_keys = key_registry_get_stored_keys_hint(\n account,\n historical_header.global_variables.block_number as u32\n );\n assert_eq(hinted_registry_public_keys.hash().to_field(), key_registry_hash);\n\n hinted_registry_public_keys\n } else {\n // If nothing was written to the registry, we may still be able to produce the correct keys if we happen to know\n // the canonical set (i.e. the ones that are part of the account's preimage).\n let (hinted_canonical_public_keys, partial_address) = get_public_keys_and_partial_address(account);\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n }\n}\n\nfn key_registry_hash_public_historical_read(historical_header: Header, account: AztecAddress) -> Field {\n // The keys are stored in a Map that is keyed with the address of each account, so we first derive the corresponding\n // slot for this account.\n let keys_storage_slot = derive_storage_slot_in_map(KEY_REGISTRY_STORAGE_SLOT, account);\n\n // The keys are stored as [ ...serialized_keys, hash ], and since arrays get allocated sequential storage slots\n // (prior to siloing!), we simply add the length to the base slot to get the last element.\n let hash_storage_slot = keys_storage_slot + PUBLIC_KEYS_LENGTH as Field;\n\n historical_header.public_storage_historical_read(hash_storage_slot, CANONICAL_KEY_REGISTRY_ADDRESS)\n}\n\nunconstrained fn key_registry_get_stored_keys_hint(account: AztecAddress, block_number: u32) -> PublicKeys {\n // This is equivalent to the key registry contract having an unconstrained getter that we call from an oracle, but\n // PXE does not yet support that functionality so we do this manually instad. Note that this would be a *historical*\n // call!\n\n // TODO (#7524): call the unconstrained KeyRegistry.get_current_keys() function instead\n\n let context = UnconstrainedContext::at_historical(CANONICAL_KEY_REGISTRY_ADDRESS, block_number);\n let keys_storage = Map::new(\n context,\n KEY_REGISTRY_STORAGE_SLOT,\n |context, slot| { PublicMutable::new(context, slot) }\n );\n\n let stored_keys: StoredKeys = keys_storage.at(account).read();\n stored_keys.public_keys\n}\n"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-x8664","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"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":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","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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oqyKcirKq7hUxX9UXKbichVXqLhSxVUqrlZxjYprVVynwt3JOSriVSSoqKAiUUVFFZVUJKlIVnG9ihtU3KiisooqKqq618erqK6ihoqaKmqpqK2ijoq6KuqpqK+igYqGKm5S0UjFzSoaq2iioqmKZiqaq2ihoqWKVipaq7hFxa0qblPRRkVbFe1UtFfRQcXtKlJUpKpIU5GuIkNFRxV3qOikorOKO1XcpeJuFfeo6KKiq4puKrqr6KGip4pMFb1U9FbRR0VfFf1U9FcxQMVAFYNUDFYxRMVQFcNUDFcxQsVIFaNUjFYxRsVYFeNUjFcxQcVEFZNUTFYxRcVUFdNUTFcxQ8VMFbNUzFYxR8VcFfNUzFexQMVCFYtULFaxRMVSFctULFexQsVKFatU3KtitYo1KtaqWKdivYoNKjaq2KRis4otKraq2KZiu4odKnaq2KVit4o9Kvaq2Kdiv4oDKg6quE/FIRWHVdyv4gEVR1QcVXFMhfv78u5vt7u/i+7+5rj7e97u71u7vyPi/n6F+3sO7u8buL8d4N6X373nvXs/efde7e590N17jLv373bvje3ed9q9p7N7v2T3XsTufX7de+i696d9U4V7X1X3nqXu/UDde22697F07xHp3n/Rvbehe99A95587v3u3HvJufdpc++B5t5fzL13l3tfLPeeU+79nNx7Jbn3IXLv8ePeP8e9N4173xf3niru/Urce4G499lw72Hh3h/CNQLufQ3cewa41+O717q715G712i71z+71xa71+2618S615u613K610m61yC61/e5186516W513y511O51yq51wG519i416+414a411241zS41wu438V3v+fufofc/X62e4x3v1fsfmfX/T6s+11T93uc7nck3e8fut/Hc7/r5n5fy/3+kvt9Hvf7Le73PdzvUrjfB3DPtbvni91zse75RPdcnXu+yT3/4p6PcD+fdz/7dj+/dT/PdD/fcz/v+vPzHxXu5wPue2/3vaj73sx9r+L6bdd/un4sp2uQ9OPsU4t/ehv3kZKZmXFPt8xgZtdgSnp6sE/nzE7Brr0zenS8u6t7CP7T94QeZfXf+l06Z3ZOubtz/5TMzl27BDul9OwUTO+a0TPYpWtm8J6UzDT3wP+nIwo94sIrM3q4L9cjo2fPYOeTdZmdMoJpXbtk9khJywymZ3S7u2u/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","debug_symbols":"7P3fkiNblp33vktd8wKAL/zjqxw7doxHomQ0k5Eykbqi6d2VVbsiMqpzAtjZPrZjxvLfXXebd2zEN2a6z/F5Jtb//Nv/+p/////3//7/+y//9X/7b//9b//x//M///Z//Lf/5T/9j//y3/7rj//tf/7tOP7xf/vv/+d/+q9//1//+//4T//X//jbfzxeT+M//O0//9f/9e//4zL+n//wt//tv/wf//lv/3Es1//nP/xy9el6/rj6dL1ePq8+jktx9TKW8z+vXs6H24urj4fr9fDxUQ7X28/Psvz9//fX62/X08flt/vx59Wjuvh4/Pgox+NlfL34//sf/nY8Q/MIzQWaR2iu69Est+X28cverj+vvv3xX7j95f+FeyDe4+ED6em4nH4GVl59PByXz7zOX64+L3//QKfD5h/odP4AdPwxnv/ygar5OX5+kvvX+Tkey5/98+rTl9k8XapPcvmc5Nv1/OXaU4nxdL98clwO91dzPw6fv+U4XdfM/ekoou4RnUTUPaJFRH8uomX5+cBYxnW7B/xpiKh7ROepIjp+iej+KqLj+bT8/C2vr65+Y0iX5iFdx2c/ORxehrR8Xn08H5cv2Ecz7FfY34H99lbst9svlSrS8T7/E6fTcnjxgU7n+/JZ+I+3l43wbVktB2geoUm0vNP4/GX/ZTB/XP33/0SipfxwRB//ieXLpvKA5/n68yZyu//LTeTvH2jp9oFGtw+U2LeW2+fNbZyWFx9onD4K2rgcf/k4l14f59rr49x6fZzEc2gZ958fZ/zbO8qo7+fL+FTEy5fPNR48Tcfx59P0y5+X4z9+i3H86/8Tp7/+P7H89f+JEfhP/HjkfV59O/zLf6J63Nw+F8rT/cvj5ngoH3+3++fj7375sn6Wy+r9fP9Z5C6vfvbt+KmVbqcvd9E/yJyReUDmgswDMtc9k1k+HxG3LzvwP8nckHlA5o5MTeZ82DGZ6/X6k8zt35I5zkTm9PNl8+lfXjb/O+7A5xMyD8gsyDwgM/ZM5ukdeKodOEpmqh04SmaqHfg3yTx/as+2A99+kln+5Wf//Zedba199steptpUT4fLp747Hl7+7KfP1stkm2qQzGSbapDMZJvq75F59my9DGQekJlsUw2SmWxT/S0yT/exy2y29vaTzP2XFWXa5bP6ZadaPk/H0/nzl72scx3XuTbVJJm5NtUkmbk21d8k8+zZep1rU02SGcg8IDPXpvp7ZJ7uY9fZ/l7BzxXl8osyus67fBa/7PbL58+/iH4ay/nVL/u+f2F2vUPzAM3tAM0jNEdoHqE5QfMIzQLNIzQDmkdoztA8QnOB5hGaKzSP0NiGH6KxDT9Cc7cNP0RjG36Ixjb8EE37bfht/6z4PqB5hKbVNvz3DxTZQT8t7o8/YK8+0Lf5kof7FZpHaCI76M+3hv8Wzd//Ew/+JfHhc/avX27g9X/itnz8wl9fpNQ3heX+8WQYX77g4XQ/F9fer59w7tcvvrrmvnyq8K8/uaR+ut4+34dc7/cXEQW/5vLw4EsyfgZ6vb6ifTqPz39Gfr58+VsV1+oD/bjiY3jP1+NPLrf6Jna+fb4h+DFa16+X/+PzH7/55z8lPv/9499q/7hhHF98/uv988/G8eu/sa++/Gt8frfrON++fIpq2sfh9PEndByuX/8k/fGLLtP8osfl88/18csfv49fdOwl0fNeEr3sJdHrXhK9zfKLLtfP7+lYrrd/+5dGjof71r/o7Xb8uZouL37Ty/Ujpev1y98suJz/8eGPh60//I+b98/vG//611LKT38+f/5pOp/HWLkJHI+7+m1f7j23w6sisVyuP0f/56c/VZv76XT8+UVuX/rDj3teReb083vMT6dXf+dl3w3iuGyc5PHnl+ydjq+SvJ/vHz/6fjlenk/t/Xb5+ONzvx8Ov8zs2M1vet7Nb3rZzW96neY3/dGaL+PnlnE8/fK73nb0u94n+l0v559vdS7X5fnl+37ung6z5v7ly2T/OeOn445+19OOftd5dse/n0/1+Yr5cFt+uU+f5tkeX/+u8+yPr3/XeTbI17/rTDvkq991ph3y1e860w754nddZtqbXv2uM+1Nr37XmfamV7/rjvamZUd707KjvWnZ0d607GhvWna0Ny072pvGjvamsaO9aexobxo72pvGjvamsaO9aexobxo72pvGjvamsaO96byjvem8o73pvKO96byjvem8o73pvKO96byjvem8o73pvKO96byjvemyo73psqO96bKjvemyo73psqO96bKjvemyo73psqO96bKjvemyo73puqO96bqjvem6o73puqO96bqjvem6o73puqO96bqjvem6o73puqO96bajvem2o73ptqO96bajvem2o73ptqO96bajvem2o73ptqO96bajvem+o73pvqO96b6jvem+o73pvqO96b6jvem+o73pvqO96b6jvem+n73pdNjP3nQ6bL03nT6/bve0fD1Xtvxdb6cPMLfzeHHtch4fFy/nL9/OW51ue7t8fIvY7csXg/395/6DyQmTX5gsmPzCZHRmcjx8+XbCr2fSlFf/1ld4L4cPgmM5/uRyuhQXn0+f2ZxPX774+MfF/2B4xnA1wwuGqxleMVzN8IbhaoZ3DNcyPB4wXM2wdS/4Jgxb94hvwrB17/gmDAeGqxnqKesZ6inrGeop6xnqKesZ6imrGZ70lPUM9ZT1DPWU9Qz1lPUMB4arGeop6xnqKesZ6inrGeop6xnqKasZLnrKeoZ6ynqGesp6hnrKeoYDw9UM9ZT1DPWU9Qz1lPUM9ZT1DPWU1QyHnrKeoZ6ynqGesp6hnrKe4cBwNUM9ZT1DPWU9Qz1lPUM9ZT1DPWU1w7Oesp6hnrKeoZ6ynuFee8rlfPy4+HK5/oJlwFJh2WubeIFlrwXhBZa97vzXw8fnGNfjr1j2usa/wLLXzfw5lstel+0XWPa6P7/AsteV+PmT6GLLLbEMWCosttwSy1633Be3XFtuicWWW2Kx5VZYrrbcEostt8Sy1y33BZa9brkvsAxYKix73XJfYLHlllhsuSUWW26JxZZbYbntdct9LhZue91yX2DhckssXG6JZbjlVrdcW26JxZZbYrHlllhsuSUWW26F5c7llli43BILl1ti4XJLLAOWCostt8Riyy2x2HJLLHvdcp+Lhftet9ynWJYDl1ti4XJLLLbc4pa79D6V9X1YBiwVFltuicWWW2Kx5ZZYuNwSC5dbYdntUaQvsHC5JRZbbonFlltiGbBUWGy5JRbfsVCJhd2ep/kCC5dbYuFyKyy7Pcjy+S13t2dTvsBiyy2x2HJLLAOWCostt8TC5ZZYuNwSC5dbYuFyKyy7PQbxBRZbbonFlltiseWWWAaxUIiF3Z4S+AILl1ti4XJLLLbc8pZry62w7PYQvRdYbLklFltuicWWW2IZsFRYuNwSC5dbYuFySyy23BKLLbfCstsj2F5gseWWWHyTWCUWnH1WYxmwVFi43BKLLbe85dpySyy23BKLLbfC4uyzGostt8TC5ZZYuNwSy4ClwsLlllhsuSUWW26JxZZbYrHlVlh2e/bZc7Gw27PPXmDhckssXG6JZbjlVrdcW26JxZZbYrHlllhsuSUWW26FZbdnn73AwuWWWLjcEguXW2IZsFRYbLklFltuicWWW2LxTWKVWNjt2WfPsez27LMXWLjcEostt7rlOvusxjJgqbDYckssttwSiy23xMLllli43ALL2O3ZZy+wcLklFltuicWWW2IZsFRYbLklFt8kVoiFsduzz15g4XJLLFxuhcXZZ+Ut19lnNRZbbonFlltiGbBUWGy5JRYut8TC5ZZYuNwSC5dbYXH2WY3FlltiseWWWGy5JZZBLBRiYbdnn73AwuWWWLjcEostt7zl2nIrLM4+q7HYckssttwSiy23xDJgqbBwuSUWLrfEwuWWWGy5JRZbboXF2Wc1FltuicU3iVViYbdnn73AMmCpsHC5JRZbbnnLteWWWGy5JRZbboXF2Wc1FltuiYXLLbFwuSWWAUuFhcstsdhySyy23BKLLbfEYsutsOz27LPnYmG3Z5+9wMLllli43BLLcMutbrm23BKLLbfEYsstsdhySyy23ArLbs8+e4GFyy2xcLklFi63xDJgqbDYckssttwSiy23xOKbxCqxsNuzz55j2e3ZZy+wcLklFltudct19lmNZcBSYbHlllhsuSUWW26JhcstsXC5FZbdnn32AguXW2Kx5ZZYbLkllgFLhcWWW2LxTWKVWNjt2WcvsHC5JRYut8BydvZZdcs9O/usxmLLLbHYckssA5YKiy23xMLllli43BILl1ti4XIrLM4+q7HYckssttwSiy23xDKIhUIs7PbssxdYuNwSC5dbYrHllrdcW26FxdlnNRZbbonFlltiseWWWAYsFRYut8TC5ZZYuNwSiy23xGLLrbA4+6zGYsstsfgmsUos7PbssxdYBiwVFi63xGLLLW+5ttwSiy23xGLLrbA4+6zGYsstsXC5JRYut8QyYKmwcLklFltuicWWW2Kx5ZZYbLkVlt2effZcLOz27LMXWLjcEguXW2IZbrnVLdeWW2Kx5ZZYbLklFltuicWWW2HZ7dlnL7BwuSUWLrfEwuWWWAYsFRZbbonFlltiseWWWHyTWCUWdnv22XMsuz377AUWLrfEYsutbrnOPquxDFgqLLbcEostt8Riyy2xcLklFi63wrLbs89eYOFySyy23BKLLbfEMmCpsNhySyy+SawSC7s9++wFFi63xMLlVlicfVbecp19VmOx5ZZYbLkllgFLhcWW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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"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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VJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRNJpRNJpRNJpRNJpRtA2W1EYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzik4zik4zik4zik4zir7BktppRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRjFoRjFoRjFoRjFoRjE2WFIHzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgG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otKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotGMotGMotGMotGMom2wpDaaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUXSaUXSaUXSaUXSaUfQNltROM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pBM4pBM4pBM4pBM4qxwZI6aEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaUYxaUYxaUYxaUYxN1hSJ80oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0o5uVGUTbV2663rOcFvbZxzu2+dcn2tG97ZfP9jun8tfV+a/DZYn+tdfZZ6+Wy8ivXOhqtVRqtVRut1Rqt1RutNRqtNRutFd037V1f3Xc9bdb7a5UfM5VvO/8x8uj55j+Xi26dTl+uobun85eLbqDOXy66hzp/ueg26vzl2gnL3e9g3mraj9/BR+yMvG9cT8cm41dBTisoaAXl1QXVdr8rUiovCypaQRNW0CnK/Mz30CnK/NSChFaQ0gqiJbXTktppSe1JK6hoBdGSOjZaQYNWkNAKujqp9/35fdc5nhf0yp7d5XYjZf/vjBcteNji9fvi9cfi9dOuMkG7ysSEFZQb+y0X875rn2O+eMvlWLx+Wbz+My55Efc7Sbkd3aR6ekNLbXKwaymX+9b1dI9qP06vbP3jSe2/tv7xhKenreW1fc+tboucY9N//5P3v06ZM/A4kj+OpD+O5ElHMh5H8qQjmY8jedKRrMeRPOlIzrV7j1q8d63Fe9davHct+O2aw/pt8foddv+uglYQ7QvWon3BWrTb9pN2237SbttP2m37qbSCjFYQLaknLaknLaknLaknLKlrgyV1bbCkrg2W1LXBkro2WFLXBkvq2mBJXRssqWuDJXVttKQetKQetKQetKQetKQetKQetKQetKQetKQetKQetKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUgstqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqoyW10ZLaaElttKQ2WlIbLamNltQ0XF80XF80XF9OS2qnJbXTktppSe20pHZaUjstqZ2W1E5LahquLxquLxquLxqur6AlddCSOmhJHbSkDlpSBy2pg5bUSUvqpCV10pI6aUmdtKROWlInLamTltRJS+qkJXXRkrpoSV20pC5aUhctqWlGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGcdKM4qQZxUkzipNmFOcGS+pJM4qTZhQnzSjOyx/hLnofjCU2no2aefVZJLHXfNt17N8UPe3bXtn8/UdEzcufDv+Fa738wfNfudbRaK3SaK3aaK128VoPnkM8B+zR0XPAHh09B+zR0XMUraAJK0g2WkGDVpDQClJaQbSkFlpSCy2phZbUQktqoSW10pJaaUmttKRWWlIrLamVltRKS2qlJbXSklppSW20pDZaUhstqY2W1EZLaqMltdGS2mhJbbSkNlpSOy2pnZbUTktqpyW105LaaUnttKR2WlI7LamdltRBS+qgJXXQkjpoSR20pA5aUgctqYOW1EFL6qAlddKSOmlJnbSkTlpSJy2pk5bUSUvqpCV10pI6aUldtKQuWlIXLamLltRFS+qiJXXRkrpoSV20pC5aUk9aUk9aUk9aUk9aUk9aUk9aUk9aUk9aUk9aUk9WUtu2sZJ6L4iV1HtBrKTeC2Il9V4QK6n3glhJvRfESuq9IFZS7wWxknoviJbUg5bUg5bUg5bUg5bUMKO4F0RLaphR3AuiJTXMKO4F0ZIaZhT3gmhJDTOKe0G0pIYZxb0gWlLDjOJeEC2pYUZxL4iW1DCjuBdES2qYUdwLoiU1zCjuBdGSGmYU94JoSQ0zintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo7gXRkhpmFPeCaEkNM4p7QbSkhhnFvSBaUsOM4l4QLalhRnEviJbUMKO4F0RLaphR3AuiJTXMKO4F0ZIaZhT3gmhJDTOKe0G0pIYZxb0gWlLDjOJeEC2pYUZxL4iW1DCjuBdES2qYUdwLoiU1zCjuBdGSGmYU94JoSQ0zintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo7gXBknrQjOKgGcVBM4qDZhTHBkvqQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0Iyi0Iyi0Iyi0Iyi0IyibLCkFppRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1A2W1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikYzikYzikYzikYzirbBktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtEuN4qyqd52vWU9L+i1jXNu961Ltqd92yubx5T5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o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o2g0o2g0o2g0o2g0o2gbLKmNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSdZhSdZhSdZhSdZhR9gyW104yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04xi0Ixi0Ixi0Ixi0IxibLCkDppRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRTJpRTJpRTJpRTJpRzA2W1EkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikUzikUzikUzikUzirXBkrpoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrEuN4qyqd52vWU9L+i1jfe7svet94x62re9snlMmb+2jmnPFvtrrdVorbPPWi9Hm1+51tFordJordpordZord5ordForei+ae/66r7rabPeX6uoV912rjHy+eY/l4tunc5fLrp7On25hm6gzl8uuoc6f7noNur85Z7RSeW4vchI04OP2Bl537iejk3Gr4KMVpDTCoqrC9q/bb2/nVVeFpS0gopW0IS9h05R5qcWNGgFCa0gWlI7LamdltQetIKSVhAtqX3CCoqNVtCgFXR1Uu/78/uuczwv6JU9u8vtRsr+3xkvWvDQxeu3xev3xeunXWWCdpWJohU02W+5mPdd+xzzxVsut8XrH4vXf8YlL+J+Jym3o5tUT29oqU0Odi37p6f71vV0j2o/Tq9srR63Y6Ox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ikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzik4zik4zik4zik4zir7BktppRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtEvN4qyqd52vWU9L+i1jXNu961Ltqd92yubx5T5a+uY9myxv9YajdaajdZajdY6+6z1cmr6lWsFXctf2djTbht7zfvGEvarfNCV/yPlg/qEj5Rv5BNlX2vddz33m/fvnyiiXnXbucbI55v/XC66Zzl/uei25fzlojuX85cLb162afetdbOX9X+rhqT0fpEujz9epO1bNSQHax2N1iqN1qqN1mrfaq33rWOOFx8g7FvdyDlY67e6kXOw1m91I+dgrd/qRs7BWr9X3/TuWv179U3vr/V79U3vr/V79U3vr/V79U3vr9UarbVR3+SN+iZv1Dd5o77JG/VN0ahvikZ9UzTqm6JR33T5ZJevXGujvika9U3RqG+KRn1TNOqbslHflI36pmzUN2WjvunyOUtfudZGfVM26puyUd+UjfqmbNQ3VaO+qRr1TdWob6pGfdPlU8++cq2N+qZq1DdVo76pGvVN1ahvmo36ptmob5qN+qbZqG+6fAbhV661Ud80G/VNs1HfNBv1TbNP3xRbn74ptj59U2x9+qbY+vRNsVmjtfbpm2Lr0zfF1qdviq1P3xRbo75pNOqbRqO+aTTqm0ajvuny+bxfudZGfdNo1DeNRn3TaNQ3jUZ9kzTqm6RR3ySN+iZp1DddPi37K9faqG/6XoO4D9baqG/6XoO4D9baqG/6XoO4D9baqG/SRn2TNuqb2PPAT15ro76JPQn85LU26pvoM8BPXWujvumbzQt/f62N+qZvNi/8/bU26psazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwbzQvPRvPCs9G88Gw0Lzw3a7TWPn1TNpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeH5veaFT5n3tdrLtX6rvulgrZf3TRp+27WN8f5ah8es2659jvl8rT/qr+tngJ9c/2DXPz2f6i97Wb8sXr8uXr8tXr+j649Sue06KvToGqr3rC2PP2RtXT8n+wvXmo3WWo3Wyu4XTl3rYPcWv7vW9/r7Guw+5Ny1snuWc9fK7m/OXas1Wuv36pveX+v36pveX+v36pveX+v36pveX+v36pveXas06pukUd8kjfomadQ3XT8n+wvX2qhvkkZ9kzTqm6RR3ySN+iZt1Ddpo75JG/VN2qhvun5O9heutVHfpI36Jm3UN2mjvkkb9U3WqG+yRn2TNeqbrFHfdP2c7C9ca6O+yRr1Tdaob7JGfZM16pu8Ud/kjfomb9Q3eaO+6fo52V+41kZ9kzfqm7xR3+SN+iZv1DdFo74pGvVN0ahvikZ90/Vzsr9wrY36pmjUN0Wjvika9U3RqG/KRn1TNuqbslHflI36puvnZH/hWhv1Tdmob8pGfVM26puyUd9UjfqmatQ3VaO+qRr1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GUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWjGUWjGUWjGUWjGUXbYEltNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKPoNKPoNKPoNKPoNKPoGyypnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUg2YUg2YUg2YUg2YUY4MlddCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtKMYtKMYtKMYtKMYm6wpE6aUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUSyaUSyaUSyaUSyaUawNltRFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4qTZhQnzShOmlGcNKM4N1hST5pRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFeblRlE31tust63lBr228t5D3rUu2p33bK5vHlPlr65j2bLG/1pqN1lqN1jr7rPVyD/qVax2N1iqN1qqN1mqN1uqN1orum/aur+67njbr/bWKetVt5xojn2/+c7no1un85aK7p/OXi26gTl+uoXuo85eLbqPOX+4ZnVSO24uMND34iJ2R943r6dhk/CpIaQUZrSC/uqDa7ndFSuVlQUErKGkFFe09NGEFnaLMTy1o0AqiJbXTktppSe1OKyhoBdGS2otW0IQVFButoKuTet+f33ed43lBr+zZXW43Uvb/znjRgocsXr8uXr8tXj/tKhO0q0wkraBiv+Vi3nftc8yXb7m5dv25LV7/GZe8iPudpNyOblI9vaGlNjnYtZTLfet6uke1H6dXtlaP27HR2J6+aBjy2r7nVrdFzrHpv//J+1+nzBl4HMkfR1IfR/KkI2mPI3nSkfTHkTzpSMbjSJ50JHPx3mPx3jUX711r8d614LdrDuuH3645rF9h9+9OGY9yakG0L1iL9gVr0W7bF+22fdFu20/abfs5aAUJrSBaUk9aUk9aUk9aUk9aUk9aUk9WUte2sZJ6L4iV1HtBrKTeC2Il9V4QK6n3glhJvRfESuq9IFZS7wWxknoviJbUg5bUg5bUg5bUg5bUg5bUg5bUg5bUg5bUg5bUg5bUQktqoSW10JJaaEkttKQWWlILLamFltRCS2qhJbXSklppSa20pFZaUistqZWW1EpLaqUltdKSWmlJbbSkNlpSGy2pjZbURktqGK7fC6IlNQzX7wXRktpoSe20pHZaUjstqZ2W1E5LaqcltdOSGobr9/8jLalhuL42GK7fC6IlddCSOmhJHbSkDlpSBy2pg5bUQUvqoCV10pI6aUmdtKROWlInLamTltRJS+qkJXXSkjppSV20pC5aUhctqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo1gYzintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXBEvqQTOKg2YUB80oDppRHBssqQfNKI7LH+Eueh+MJTaejZp59Vkksdd823VUPFusvbL5u4+I2teajdZajdY6+6x1bI3WOhqtlfXo6L0g1qOj94KMVhDr0dF7QUErKGkFFa2gCStINlpBg1YQLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVL6qIlddGSumhJXbSkLlpSFy2pi5bURUvqoiX1pCX1pCX1pCX1pCX1pCX1pCX1pCX1pCX1pCX1hCW1bLCklg2W1LLBklo2WFLLBktq2WBJLRssqWWDJbVssKSWjZbUg5bUg5bUNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKOoNKOoNKOoNKOoNKOoGyyplWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUjWYUjWYUjWYUjWYUbYMltdGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGM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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["lookup_validity"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_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":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"}]}},"file_map":{"104":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::{OvpkM, IvpkM}}\n};\n\npub fn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext},\n keys::public_keys::{OvpkM, IvpkM}\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"106":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"107":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_ovsk_app, public_keys::{PublicKeys, OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log<let M: u32>(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"110":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"113":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"114":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"127":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"135":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\nunconstrained pub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"137":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(contract_address: AztecAddress, log: [u8; N]) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"154":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(contract_address: AztecAddress, message: T, counter: u32) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\nunconstrained pub fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"163":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\nunconstrained pub fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"170":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"174":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"217":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"224":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N-1-i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"262":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"264":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\npub struct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n pedersen_hash_with_separator_noir(input, separator)\n}\n\npub fn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator_noir(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\npub fn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n"},"295":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"308":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"311":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"313":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl <let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"314":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"317":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n\n for i in msg_byte_ptr..56 {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 0x8f, 0xfe, 0x73, 0x2b\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94, 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154, 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213, 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186, 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 119, 30, 63, 129, 143, 32, 96\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"437":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\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 #[noinitcheck]\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 // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"438":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"89":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"}}}
|