@aztec/accounts 0.52.0 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.33.0+cf5b667c9566019853a5dc2a7f16ed024ab9182b","name":"EcdsaRAccount","functions":[{"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":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"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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"},{"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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"},{"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":5,"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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"},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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aEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaUYxaUYxaUYxaUYxL1hSJ80oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oFs0oFs0oFs0oFs0o1gVL6qIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaYZxaYZxaYZxaYZxb5gSd00o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0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qPssCv4qzW6aoHLTBJWbJqjcNEHlpgmqNk1QtWmCqk0TVG2aoO6zavmrNLtpgqpNE1RtmqBq0wRVmyao3jRB9aYJqjdNUL1pgrrP2uyv0uymCao3TVC9aYLqTRNUb5qg2HvH793spgmKvW/83s1umqDYe8bv3eymCerBdpLfaHbTBPVgO8lvNLtogupNO8l7007y3rSTvDftJO/LNzW7aILqTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8t60k7w37STvTTvJe9NO8tm0k3w27SSfTTvJZ9NO8rl8U7OLJqjZtJN8Nu0kn007yWfTTvLZtJN8Nu0kn007yWfTTvLZtJN8Nu0kn007yefRdpKXvjbbPzf7YBPUr5v98AnK8vWpXfTXzUp0v/5eplz+p2b/aODj94zfuwFBN5Di+tZAzjsN6FdvwL56A/7VGwh0A3XJ61PX5X0rcrPf+p353yP343dxf2aztanZ3tQse3K4b7PGnjL+2WZ/Pe0beyK5c7Ps6eXOzbInnTs365uafawJ6kazjzVB3Wj2sSaoG80+1gR1o9nHmqB+3axvmqB80wTlmyYo3zRBffwu7s9sdtME5ZsmKN80QfmmCco3TVCxaYKKTRNUbJqgYtME9fG7uD+z2U0TVGyaoGLTBBWbJqjYNEHlpgkqN01QuWmCyk0T1Mfv4v7MZjdNULlpgspNE1RumqBy0wRVmyao2jRB1aYJqjZNUB+/i/szm900QdWmCao2TVC1aYKqTRNUb5qgetME1ZsmqN40QX38Lu7P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o+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+g0oxg0oxg0oxg0oxg0oxgXLKmDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSTZhSTZhSTZhSTZhTzgiV10oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0Yxi0Yxi0Yxi0YxiXbCkLppRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRbJpRbJpRbJpRbJpR7AuW1E0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zikMzikMzikMzikMzinPBknpoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFgRtEvmFE8BbGS+hTESupTECupT0GspD4FsZL6FMRK6lMQK6lPQaykPgXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BsKQWmlEUmlEUmlEUmlGUC5bUQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKSjOKSjOKSjOKSjOKesGSWmlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlG0WhG0WhG0WhG0WhG0S5YUhvNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKDrNKDrNKDrNKDrNKPoFS2qnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGcWgGcWgGcWgGcWgGcW4YEkdNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKOYNKOYNKOYNKOYNKOYFyypk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUi2YUi2YUi2YUi2YU64IlddGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtOMYtOMYtOMYtOMYl+wpG6aUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaURyaURyaURyaURyaUZwLltRDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pD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GUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGcWgGcWgGcWgGcWgGcW4YEkdNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKOYNKOYNKOYNKOYNKOYFyypk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUi2YUi2YUi2YUi2YU64IlddGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtOMYtOMYtOMYtOMYl+wpG6aUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaURyaURyaURyaURyaUZwLltRDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4oDM4p5wYziKYiV1KcgVlKfglhJfQpiJfUpiJXUpyBWUp+CWEl9CmIl9SmIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKgiW10Iyi0Iyi0Iyi0IyiXLCkFppRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1AuW1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozivrhRvFcZvXXp675saD3HpzX9frotOv14SLybiWlL5VUx+uj43uzsqlZ3dSsbWrWNzUbm5oFvaO/8+DMl14l6614k/lePuj9/z9SPmha+I+UP+R/KadBnbdmPW/8SzmfITVent2u8D89/o+GAz27/I6G0fPL72gYPcP8jobRc4xMx9u73Xnre6cBf6i36+zXt+uc+d/fruOxZpMbzeamZmtTs72pWfSU9M9/njB7/TwRP32eyAe7uvPrZh/s6s6vm32wqzu/bvbBru78ulnf1OyDXd35dbOPNUHdaPaxJqgbzT7WBHWj2U0TVG2aoGrTBFWbJqjaNEF9+NaQT2120wRVmyao2jRB1aYJqjZNUL1pgupN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RaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaMZRaMZRaMZRaMZRbtgSW00o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o+g0o+g0o+g0o+g0o+gXLKmdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSDZhSDZhSDZhSDZhTjgiV10Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0oxi0oxi0oxi0oxiXrCkTppRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRLJpRLJpRLJpRLJpRrAuW1EUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzikUzik0zik0zik0zik0zin3BkrppRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRrFpRnFoRnFoRnFoRnFoRnEuWFIPzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzSgOzCj2BTOKpyBWUp+CWEl9CmIl9SmIldSnIFZSn4JYSX0KYiX1KYiV1KcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpiJbUMKN4CqIlNcwonoJoSQ0ziqcgWlLDjOIpCJbUQjOKQjOKQjOKQjOKcsGSWmhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWlGUWlGUWlGUWlGUS9YUivNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKCrNKBrNKBrNKBrNKBrNKNoFS2qjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWnGUWnGUWnGUWnGUW/YEntNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKPoNKMYNKMYNKMYNKMYNKMYFyypg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUg2YUk2YUk2YUk2YUk2YU84IlddKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKMYtKM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RaEZRaEZRaEZRaEZRaEZRaUZRaUZRaUZRaUZRb1gSa00o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o2g0o2g0o2g0o2g0o2gXLKmNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSdZhSdZhSdZhSdZhT9giW104yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04xi0Ixi0Ixi0Ixi0IxiXLCkDppRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRTJpRTJpRTJpRTJpRzAuW1EkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikUzikUzikUzikUzinXBkrpoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFpRrFpRrFpRrFpRrEvWFI3zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSg2zSgOzSgOzSgOzSgOzSjOBUvqoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnF+XCjqJf561PX/FjQew/O63p9dNr1+nARebeS0pdKquP10fG92dzUbG1qtjc1O4ua/XBv+qnNgt7R33lw5kuvkvVWvMl8Lx/0/v8fKR80LfxHynfyv5TToM5bs543/qWoXRovz25X+J8e//eG0bPL72gYPb/8jobRM8zvaBg9x8i39Q+vjz5vfe808FizSfbr23XO/O9v1/lYs8mNZmVTs7qpWdvUrD/W5wmz188T8dPniXywqzu/bvbBru78utkHu7rz62Yf7OrOr5t9sKs7v2y2Huzqzq+bfawJ6kazjzVB3Wj2sSaoG836pmY3TVC1aYKqTRNUbZqgatME1ZsmqN40QfWmCao3TVAfvgHmU5vdNEH1pgmqN01QvWmC6k0T1GyaoGbTBDWbJqjZNEF9+GamT2120wQ1myao2TRBzaYJavZMUHJd154R6lu3e2aob93uGaK+dbtnivrWra/qds8c9a3bPYPUt273TFLfut0zSn3rdtUsJatmKVk1S8mqWUpWzVIfvtjwc7tdNUvJqllKVs1SsmqWklWzlK6apXTVLKWrZildNUt9+OrRz+121Sylq2YpXTVL6apZSlfNUrZqlrJVs5StmqVs1Sz14cuBP7fbVbOUrZqlbNUsZatmKVs1S/mqWcpXzVK+apbyVbPUh6/v/txuV81Sj7Yc/Ea3q2apR1sPfqPbVbPUoy0Iv9HtqlkqVs1SsWqWYq8rv3u3q2Yp9qLyu3e7apZiryi/e7erZqkHW2h+q9tVs9SDrTS/1e2qWWrRUvNv3a6apRatNf/W7apZatFi82/drpqlFq02/9btqllq0XLzb92umqUWrTf/1u2qWWrRgvNv3a6apRatOP/W7apZatGS82/drpqlFq05/9btqllq0aLzb92umqUWrTr/1u2qWWrRsvNv3a6apRatO//W7apZatHC82/drpqlFq08/9btqllq0dLzb92umqUWrT3/1u2mWUpW7T2XVXvPZdXec1m191wuX9XtpllKVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z3XV3nNdtfdcV+0911V7z/XyVd1umqV01d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX33FbtPbdVe89t1d5ze7S956Wv3fY73fqqbj98lrJ8fWoX/XW3Et2vv5opl/+p2+8d5JfvoNAdpLi+dZDzXgf95TuYr97Bx+8Gv3sHgu6gLnl96rq8byVv9lvDMz8l78fv+/7Ubm1Vt76qW/YMce9u2fPGP9vtjdlf2LPJvbtlzzH37pY989y5W2XPR/fu9rFmqVvdPtYsdavbx5qlbnXrq7p9rFnqVrerZildNUvpqllKV81StmqWslWzlK2apWzVLPXx+74/tdtVs5StmqVs1Sxlq2YpWzVL+apZylfNUr5qlvJVs9TH7/v+1G5XzVK+apbyVbOUr5qlfNUsFatmqVg1S8WqWSpWzVIfv+/7U7tdNUvFqlkqVs1SsWqWilWzVK6apXLVLJWrZqlcNUt9/L7vT+121SyVq2apXDVL5apZKlfNUrVqlqpVs1StmqVq1Sz18fu+P7XbVbNUrZqlatUsVatmqVo1S/WqWapXzVK9apbqVbPUx+/7/tRuV81SvWqW6lWzVK+apXrVLDWrZqlZNUvNqllqVs1SH7/v+1O7XTVLzapZalbNUrNqlppNs5Rfm2YpvzbNUn5tmqX82jRL+eWrut00Szl8N/i9u900Szl85/i9u101S8F3md+721Wz1IPtPb/V7apZ6sH2nt/qdtUstWrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6Ptve89PXh/U63DzZL3ej2w2epy/z1qWtudDul8/LUU543ulW7NF6e3a7wPz3+e8e1ruNe1/Fs6/jj96B/eseyrmNd17Gt69jXdRzrOl43c334jnQZz7ce7MeOv1fUuIqGVtGH7wO/XdFd3vPFXz8R2dyo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kIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIZzkIZzkIZzkIZzkHbRMttwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJxDtJxDtJxDtJxDtIvWmY7zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkEGzkEGzkEGzkEGzkHGRcvswDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIxDnIxDnIxDnIxDnIvGiZnTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHWTgHWTgHWTgHWTgHWRctswvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIBvnIBvnIBvnIBvnIPuiZXbjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHOTgHOTgHOTgHOTgHORctMwenIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcmoM8PxmW2ecnwzL7/GRYZp+fDMvs85NhmX1+Miyzv/1kXEWwzD4/GZbZ5yfjMpvmIE9FuMymOchTES6zaQ7yVITLbJqDPBXhMpvmIE9FuMymOcjz43CZTXOQ58fhMpvmIM+Pw2U2zUGeH4fLbJqDPD8Ol9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJaZgvOQQrOQQrOQQrOQcpFy2zBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjFOUjFOUjFOUjFOUi9aJmtOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAdpOAdpOAdpOAdpOAdpFy2zDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgHecgHecgHecgHecg/aJltuMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpH+4g9TL/PWpa36s6L0H53W9Pjrten24iLxbSelLJdXx+uh46TZWdZuruq1V3faqbmdTtx/uZT+3W1nVra7q1lZ16+Ruz/yn8zYLet7o9tu+vnh5drvC//T47x2j56nf0jF6pvotHaPnqt/SMXq2+i0do+er39HxfXy7+Ov7gc2NT+Jlb28eIW8PtpeKBFeR4iqyD6+ortcHT71TkeMqClxFifs9KlxFjatoaBUFLrMDl9mBy+wwXEWOqwiX2ZG4igpXUeMq+ujMVpnXKyhq+WNF7zxz1PUyl5//TnlnLs/ry3cgX74D/fId4N5z7uPz71pR4CpK9u9dt708dcr13lWFrC/fQX/5Du7xHpjxei2rrlvXsiJefq81friW9f5Ta8vLU2vH219kSL/33H7Ny3O76Ns7/h///dOjR6/+/uhRjb/965fJ7rLq4HmY3w9Tnod5v8PU52He7zDteZj3O0x/Hub9DjO++jxSX36qrS8/1daXn2oLfmXndgcNv7LzD3QgtOt9rbiKcN/Q3mdjy10rwl3tb9zV/sZd7W/c1f4eWkVz4SrCZfbgMntwmT24zB5cZg8usweX2YPL7KFldly0zI6Lltlx0TI7Llpmx0XL7LhomR0XLbPjomV2XLTMjguX2YLLbMFltuAyW3CZLbjMFlxmCy6zBZfZgstswWW24jJbcZmtuMxWXGYrLrMVl9mKy2zFZbbiMltxmW24zDZcZhsusw2X2YbLbMNltuEy23CZbbjMNlxmOy6zHZfZjstsnOwPnOwPnOwPx2W24zLbcZntuMwOXGYHLrMDl9mBy+zAZTZO9gdO9gdO9gdO9kfgMjtxmZ24zE5cZicusxOX2YnL7MRlduIyO3GZnbjMLlxmFy6zC5fZhcvswmV24TK7cJlduMwuXGYXLrMbl9k4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4B5k4B5k4B5k4B5k4B5nXXTKbci+Vc6lHvj/8/V27eT3UPaD+gX4f6g5Q/0C/D3X/p3+g34e6+9M/0O9D3fvpdr9Cu3N2Cu3O2Sm0O2en0O6cnfexs3etKHAVJa6iwlXUuIqGVpHiMltxma24zFZcZisusxWX2YrLbMVltuIyW3GZbbjMNlxmGy6zDZfZhstsw2W24TLbcJltuMw2XGY7LrMdl9mOy2zHZbbjMttxme24zHZcZjsusx2X2YHL7MBlduAyO3CZHbjMDlxmBy6zA5fZgcvswGV24jI7cZmduMxOXGYnLrMTl9mJy+zEZXbiMjtxmV24zC5cZhcuswuX2YXL7MJlduEyu3CZXbjMLlxmNy6zG5fZjcvsxmV24zK7cZnduMxuXGY3LrMbl9mDy+zBZfbgMntwmT24zB5cZg8usweX2YPL7KFldl20zK6Lltl10TK7Llpm10XL7LpomV0XLbPromV2XbTMrguX2TgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgH2TgH2TgH2TgH2TgH2RctsxvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIAfnIAfnIAfnIAfnIOeiZfbgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTQHKRdNAd5KoJl9qkIltmnIlhmn4pgmX0qgmX2qQiW2aciWGafimCZfSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KcJlNc5CnIlxm0xzkqQiX2TQHeSrCZTbNQZ6KaJktOAcpOAcpOAcpOAcpFy2zBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgFecgFecgFecgFecg9aJltuIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOEcpOEcpOEcpOEcpF20zDacgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScg3Scg3Scg3Scg3Scg/SLltmOc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5CBc5CBc5CBc5CBc5Bx0TI7cA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycQ4ycQ4ycQ4ycQ4yL1pmJ85BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5B5oc7SL3MX5+65seK3nvw+ZL09dHnQ8Hrw0Xk3UpKXyqpjtdHx0u3sqpbXdWtrerWV3Ubq7oFvbe/8+DMl2Yl6616k3mpHzQJ/IfqB80N/6H6h/yv5XSo89at541/LWqXxsuz2xX+p8f/veNETzG/pWP0JPNbOkZPM7+lY/REI9Px9q533gLf68Af6n07+/V9O2d+et/Ox5pSbnWbq7qtVd32qm7R89I//+nC7PXTRfz86aIe7IrPjW4f7IrPjW4f7IrPjW4f7IrPjW59VbcPdsXnRrePNUvd6vaxZqlb3T7WLHWr21WzVK+apXrVLNWrZqleNUt9+GaSz+121SzVq2apXjVL9apZqlfNUrNqlppVs9SsmqVm1Sz14RuDPrfbVbPUrJqlZtUsNatmqdk0S9W1aZaqa9MsVdemWaquTbNUXb6q202zVF2bZqm6Ns1SdW2apepaNUvJqllKVs1SsmqWklWz1Idv2PvcblfNUrJqlpJVs5SsmqVk1Sylq2YpXTVL6apZSlfNUh+++fJzu101S+mqWUpXzVK6apbSVbOUrZqlbNUsZatmKVs1S334RtrP7XbVLGWrZilbNUvZqlnKVs1SvmqW8lWzlK+apXzVLPXhm6I/t9tVs5SvmqV81Szlq2YpXzVLPdpG8RvdrpqlHm2j+I1uV81Sj7ZR/Ea3q2apWDVLxapZKlbNUuzd5vfulr3X/O7drpql2PvM797tqlnqwfae3+p21Sz1YHvPb3W7apZ6sL3nt7pdNUut2nteq/ae16q957Vq73mt2nteq/ae16q957Vq73mt2nteq/ae16q957Vq73mt2nteq/ae16q957Vq73mt2nteq/ae16q957Vq73mt2nteq/ae16q957Vq73mt2nteq/ae16q957Vq73mt2nteq/ae96q9571q73mv2nveq/ae9+Wrut00S/Wqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au95r9p73qv2nveqvee9au/5rNp7Pqv2ns+qveezau/5XL6q202z1Kzaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azaez6r9p7Pqr3ns2rv+azae/7/b+9ud+NIrjSP31Ke93OuZjEzWCwMGPZixrvAfph731C3SKpNWmxVVwX/7NAXQw1XVTxRyngUTOYvc4667/kcdd/zOeq+53PUfc/nqPuez1H3PZ+j7ns+R933fI667/kcdd/zOeq+53PUfc/nqPuez1H3PZ+j7ns+R933fI667/kcdd/zOeq+53PUfc/nqPue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xDnIxDnIxDnIxDnIxDnIxDnIxDnIxDnIwjnIwjnIwjnIwjnIumidXTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgHWTgH2TgH2TgH2TgH2TgH2RetsxvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIBvnIAfnIAfnIAfnIAfnIOeidfbgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTQHGRcNAe5EsE6eyWCdfZKBOvslQjW2SsRrLNXIlhnr0Swzl6JYJ29EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciWidbbgHKTgHKTgHKTgHKRctM4WnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnIMUnINUnINUnINUnINUnIPUi9bZinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQinOQhnOQhnOQhnOQhnOQdtE623AO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nAO0nEO0nEO0nEO0nEO0i9aZzvOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQTrOQQbOQQbOQQbOQQbOQcZF6+zAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjAOcjEOcjEOcjEOcjEOci8aJ2dOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAeZOAdZOAdZOAdZOAdZOAdZF62zC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgC+cgG+cgG+cgG+cgG+cg+6J1duMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMcZOMc5OAc5OAc5OAc5OAc5Fy0zh6cgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxycgxyag8yL5iBXIlhnr0Swzl6JYJ29EsE6eyWCdfZKBOvslQjW2SsRrLNXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS0zhacgxScgxScgxScg5SL1tmCc5CCc5CCc5CCc5CCc5CCc5CCc5CCc5CCc5CCc5Cy3UHqZf780TXfJnorfum85Pd8fvlaAG99uF0aT59uV/hvXv91xnncjOu4GfdxM57TZrzduX78jO/yb748TULK5p1/Pcr0+cUhLy+2p0SKS2S4RL49UV3PL556I1HgEiUuUeGOo8YlGlqi+zjauybCdbbhOttwnW2OSxS4RLjOtsIlalyioSXy3Z2tMk+JVC2/TfTGJ0ddT/vy9eeUN/blLp9+BvrpZ2Cffga4f3Mc92+OJy5RsY+7bnv66C+/MnzruOtPP4P57DO4i0vOeD6XVdd757Iino5rjW/OZb390dry9NHa8fJbBOm3PtuvefpsXz9Hv7z6y59fvXr06q+vHtX47z9+muwupPrnl/n1y9SfX+b9vkz7+WXe78v0n1/m/b7M+Pll3u/LzE+/H/n0u9r49Lva+PS72oSf2fkdM4Cf2fkdM1Da+b40XCLHJcL9hjZxZ/sTd7Y/cWf7E3e2vy5cIsElwnV24Tq7cJ1duM4uXGcXrrML19mF6+zGdXbjOrtxnd24zm5cZzeusxvX2Y3r7MZ1duM6e3CdPbjOHlxnD66zB9fZg+vswXX24Dp7cJ09tM7Wi9bZetE6Wy9aZ+tF62y9aJ2tF62z9aJ1tl60ztaL1tl64TpbcJ0tuM4WXGcLrrMF19mC62zBdbbgOltwnS24zlZcZyuusxXX2YrrbJzsV5zsV5zsV8V1tuI6W3GdbbjONlxnG66zDdfZhutsw3U2TvYrTvYrTvYrTvar4zrbcZ3tuM52XGc7rrMd19mO62zHdbbjOttxnR24zg5cZweuswPX2YHr7MB1duA6O3CdHbjODlxnJ66zE9fZOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepuCdkK+4J2Yp7QrbinpCtuCdkK+4J2Yp7QrbinpCtuCdkK+4J2Yp7QrbinpCtuCdkK+4J2Yp7QrbhnpBtuCdkG+4J2YZ7QrZdtM423BOyDfeEbMM9IdtwT8g23BOyDfeEbMM9IdtwT8g23BOyDfeEbBNcZwuuswXX2YLrbMF1tuI6W3GdrbjOVlxnK66zFdfZiutsxXW24jpbcZ1tuM42XGcbrrMN19mG62zDdbbhOttwnW24zjZcZzuusx3X2Y7rbMd1tuM623Gd7bjOdlxnO66zHdfZgevswHV24Do7cJ0duM4OXGcHrrMD19mB6+zAdXbiOjtxnZ24zk5cZyeusxPX2Ynr7MR1duI6O3GdXbjOLlxnF66zC9fZhevswnV24Tq7cJ1duM4uXGc3rrMb19mN6+zGdXbjOhvnIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIA3nIB3nIB3nIB3nIB3nIP2idbbjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHKTjHGTgHGTgHGTgHGTgHGRctM4OnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnIMMnINMnINMnINMnINMnIPMi9bZiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQiXOQhXOQhXOQhXOQhXOQddE6u3AOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnAOsnEOsnEOsnEOsnEOsi9aZzfOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQTbOQQ7OQQ7OQQ7OQQ7OQc5F6+zBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOcjBOchxXGfjHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTg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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000906cb9c3"},{"kind":"string","value":"EcdsaPublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"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":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}}],"kind":"struct","path":"EcdsaRAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaRAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"EcdsaRAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaRAccount::entrypoint_abi"}]}},"file_map":{"105":{"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::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::{raw_storage_read, storage_read}\n};\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"},"111":{"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, public_call_stack_item::PublicCallStackItem,\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"},"119":{"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"},"120":{"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, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{\n hash::sha256_to_field, address::AztecAddress, point::Point, abis::note_hash::NoteHash,\n constants::MAX_NOTE_HASHES_PER_CALL\n};\n\nunconstrained fn compute_unconstrained<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], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n )\n}\n\nfn compute<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], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\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 (encrypted_log, log_hash)\n}\n\nfn emit_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n inner_compute: fn(AztecAddress, Field, Field, OvpkM, IvpkM, AztecAddress, Note) -> ([u8; M], Field)\n) 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 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 let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (encrypted_log, log_hash) = inner_compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\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 emit_with_keys(context, e.note, ovpk, ivpk, iv, compute);\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 let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute_unconstrained);\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 emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute);\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 emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute_unconstrained);\n }\n}\n"},"121":{"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 = self.eph_sk.hi.to_be_bytes(32);\n let serialized_eph_sk_low = self.eph_sk.lo.to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\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(32).as_array();\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::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n scalar::Scalar, point::Point, hash::poseidon2_hash_with_separator\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n use crate::context::PrivateContext;\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"},"122":{"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(32).as_array();\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"},"123":{"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, point::Point};\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 { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(_self: Self, _context: &mut PrivateContext, _note_hash_for_nullify: Field) -> 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] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\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 = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\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 = serialized_note[i].to_be_bytes(32);\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 EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\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 = randomness.to_be_bytes(32);\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\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 = serialized_event[i].to_be_bytes(32);\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 = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\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 = serialized_event[i].to_be_bytes(32);\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, 185, 29, 14, 152, 216, 130, 219, 151, 80, 185, 43, 223, 167, 8, 89, 189, 88, 188, 101, 137, 255, 136, 84, 252, 79, 18, 52, 3, 110, 54, 54, 206, 244, 209, 246, 226, 207, 247, 143, 253, 211, 75, 160, 224, 172, 41, 45, 7, 208, 137, 90, 56, 59, 4, 234, 48, 53, 23, 130, 230, 49, 249, 142, 243, 170, 72, 183, 242, 49, 124, 46, 52, 198, 75, 55, 102, 56, 89, 254, 67, 59, 157, 249, 120, 184, 67, 154, 16, 148, 227, 93, 37, 120, 199, 93, 166, 80, 127, 173, 52, 80, 135, 87, 1, 168, 164, 51, 48, 126, 120, 47, 102, 211, 227, 234, 170, 208, 99, 111, 198, 170, 226, 156, 244, 241, 174, 206, 30\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"},"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, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\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 = serialized_note[selector.index].to_be_bytes(32);\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 // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"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 = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\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 = get_notes_internal(storage_slot, options);\n\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(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"},"129":{"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"},"130":{"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"},"131":{"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"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH, MAX_ARGS_LENGTH\n},\n traits::Hash,\n hash::{\n pedersen_hash, compute_siloed_nullifier, sha256_to_field, pedersen_commitment,\n poseidon2_hash_with_separator\n}\n};\n// Note: pedersen_commitment is used only as a re-export here\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\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 = (n as Field).to_be_bytes(4);\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 = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\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 hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(chunks_hashes, 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..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\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"},"140":{"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"},"142":{"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"},"144":{"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"},"145":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage,\n utils::arr_copy_slice\n};\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(block_number: u32, public_data_tree_index: Field) -> 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"},"146":{"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\npub fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"149":{"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"},"150":{"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"},"152":{"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"},"153":{"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 fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 13] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\npub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(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"},"155":{"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"},"156":{"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, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, 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 = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\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"},"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) {}\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"},"159":{"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"},"162":{"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"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\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"},"180":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator\n};\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"},"182":{"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 = pk.x.to_be_bytes(32);\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.as_array()\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"},"199":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\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))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: Point::empty(),\n sk_app: 0,\n }\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 {\n pk_m: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"2":{"path":"std/array.nr","source":"use crate::cmp::Ord;\nuse crate::option::Option;\nuse crate::convert::From;\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 pub fn sort(self) -> Self where T: Ord {\n self.sort_via(|a: T, b: T| a <= b)\n }\n\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n let sorted_index = unsafe {\n // Safety: These indices are asserted to be the sorted element indices via `find_index`\n let sorted_index: [u32; N] = self.get_sorting_index(ordering);\n\n for i in 0..N {\n let pos = find_index(sorted_index, i);\n assert(sorted_index[pos] == i);\n }\n\n sorted_index\n };\n\n // Sort the array using the indexes\n let mut result = self;\n for i in 0..N {\n result[i] = self[sorted_index[i]];\n }\n // Ensure the array is sorted\n for i in 0..N - 1 {\n assert(ordering(result[i], result[i + 1]));\n }\n\n result\n }\n\n /// Returns the index of the elements in the array that would sort it, using the provided custom sorting function.\n unconstrained fn get_sorting_index<Env>(self, ordering: fn[Env](T, T) -> bool) -> [u32; N] {\n let mut result = [0; N];\n let mut a = self;\n for i in 0..N {\n result[i] = i;\n }\n for i in 1..N {\n for j in 0..i {\n if ordering(a[i], a[j]) {\n let old_a_j = a[j];\n a[j] = a[i];\n a[i] = old_a_j;\n let old_j = result[j];\n result[j] = result[i];\n result[i] = old_j;\n }\n }\n }\n result\n }\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<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\n// helper function used to look up the position of a value in an array of Field\n// Note that function returns 0 if the value is not found\nunconstrained fn find_index<let N: u32>(a: [u32; N], find: u32) -> u32 {\n let mut result = 0;\n for i in 0..a.len() {\n if a[i] == find {\n result = i;\n }\n }\n result\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"},"22":{"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 {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\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) | ((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"},"23":{"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 = x.to_le_bytes(32);\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 = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_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_hint, decompose, compute_lt, assert_gt, gt, lt, 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"},"24":{"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 pub fn assert_max_bit_size(self, bit_size: u32) {\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]` slice of length `bit_size`.\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^{bit_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `bit_size` 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 pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1]` slice of length `bit_size`.\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^{bit_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `bit_size` 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 pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n /// See `Field.to_be_bits`\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n /// See `Field.to_le_bits`\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\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 pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\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 pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 = exponent.to_le_bits(32);\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 num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_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] as u8;\n let y_byte = y_bytes[num_bytes - 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\n"},"249":{"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"},"255":{"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 { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\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 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\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 { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\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"},"256":{"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"},"259":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/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 {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\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"},"261":{"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, point::Point\n};\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 = inputs[i].to_be_bytes(32);\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 = input[offset].to_be_bytes(32);\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 = logs[offset].value.to_be_bytes(32);\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 = logs[offset].value.to_be_bytes(32);\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 pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\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"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{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 {\n x: 0,\n y: 0,\n is_infinite: false\n }\n }\n}\n"},"268":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, 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"},"27":{"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\nuse 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(32).as_array();\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{\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{\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"},"280":{"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 = leaf_index.to_le_bits(N);\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"},"284":{"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"},"305":{"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 = field.to_be_bytes(31);\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 = field.to_be_bytes(31);\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 = max_value.to_be_bytes(32);\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"},"307":{"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/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash_with_separator,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, 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 {\n inner : 0\n }\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"},"32":{"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 {\n _state: &[],\n }\n }\n}\n"},"321":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, FromField, 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"},"322":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, 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"},"381":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr","source":"use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteInterface, NoteGetterOptions, PrivateContext};\n\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 ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5;\n// ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN: Field = 5 * 32 + 64;\n\n// Stores an ECDSA public key composed of two 32-byte elements\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 EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\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<ECDSA_PUBLIC_KEY_NOTE_LEN, ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = npk_m_hash\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n \n [x, last_x, y, last_y, self.npk_m_hash]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x = serialized_note[0].to_be_bytes(32);\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes(32)[31];\n\n let part_y = serialized_note[2].to_be_bytes(32);\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes(32)[31];\n\n EcdsaPublicKeyNote { x, y, npk_m_hash: serialized_note[4], header: NoteHeader::empty() }\n }\n\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 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 note_hash_for_nullify,\n secret,\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], npk_m_hash: Field) -> Self {\n EcdsaPublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"382":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_r_account_contract/src/main.nr","source":"// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\ncontract EcdsaRAccount {\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteGetterOptions, PrivateContext, PrivateImmutable};\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys,\n keys::getters::get_current_public_keys\n };\n\n use dep::aztec::protocol_types::abis::call_context::CallContext;\n use dep::std;\n\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[aztec(storage)]\n struct Storage {\n public_key: PrivateImmutable<EcdsaPublicKeyNote>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\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 = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.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\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[aztec(private)]\n #[aztec(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 // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(outer_hash);\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 payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes(32).as_array();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n let verification = std::ecdsa_secp256r1::verify_signature(public_key.x, public_key.y, signature, hashed_message);\n assert(verification == true);\n\n true\n }\n}\n"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\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 pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\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 /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\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 /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\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 pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\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 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 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 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 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 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 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"},"54":{"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 {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"68":{"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"},"69":{"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 `keccak256(\"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 = 0xabf64ad4; // 4 first bytes of keccak256(\"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 FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\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(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"consume((Field),Field)\"),\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 FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\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 FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"70":{"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"},"71":{"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(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\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_slice(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"},"73":{"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(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\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_slice(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/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"},"80":{"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"},"81":{"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};\nuse crate::keys::constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\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"},"83":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, point::Point, storage::map::derive_storage_slot_in_map,\n traits::is_empty\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, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}\n},\n state_vars::{\n shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter,\n public_mutable::PublicMutable, map::Map\n}\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 since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_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"},"97":{"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::{context::PrivateContext, 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 slot 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 of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_data_tree_index\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\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 // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == root_from_sibling_path(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.33.0+eab944cbb77eb613e61a879312b58c415f8a0c13","name":"EcdsaRAccount","functions":[{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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mjntSac1d1oLp7V02lNOa+W01k5r47S2TmvntPZO6+C0jk7r5LTOTuvitK5O6+a07k7r4bSnndbTab2c1ttpfZzW12n9nNbfaQOcNtBpg5w22GlDnDbUacOcNtxpzzhthNNGOm2U05512minjXHaWKc957RxThvvtAlOe95pE502yWmTnTbFaVOdNs1p0532gtNmOG2m01502ktOe9lps5z2itNmO+1Vp81x2mtOm+u01502z2lvOG2+09502gKnveW0hU5b5LTFTlvitKVOW+a05U5b4bSVTlvltNVOe9tpa5z2jtPWOm2d09Y7bYPTNjptk9M2O22L07Y67V2nbXPadqftcNp7TtvptPedtstpHzhtt9M+dNoep33ktL1O+9hp+5z2idM+ddpnTtvvtM+ddsBpXzjtoNMOOe1Lpx122hGnfeW0r5121GnHnHbcad847YTTTjrtlNO+ddppp51x2lmnfee0c04777TvnfaD0y447aLTLjntR6f95LTLTrvitJ+ddtVp15z2i9N+ddp1p91w2k2n/ea0W0677bQ7TvvdaXedds9pbiEQw2kRTovptFhOi+20OE6L67R4TovvtAROS+i0RE5L7LQkTkvqtGROS+60FE5L6bRUTkvttDROS+u0dE5L77QMTsvotEeclslpmZ2WxWlep2V1WjanZXdaDqfldFoup+V2Wh6n5XVaPqfld9qjTivgtIJOK+S0wk4zTivitKJOc9/N7r5v2n1nsvsOYfeduu47Zt13rrrvIHXfyem+79J9l+Qf72l0mvt+Qffdfe578dx3zrnvc3Pflea+h8x9x5f7/iz33VTue5/cdyq57yty3wXkvmfHfe+M+04X9x0n7vtD3HdzuO+9cN8p4b6vwX0XgvueAfcZ/u7z8d1nz7vPdXefme4+j7yN09znaLvPqHaf/+w+W9l9brH7TGD3ebvus2zd58S6z2B1n2/qPjvUfS6n+8xL93mS7rMa3ecgus8YdJ/f5z4bz33unPtMN/d5ae6zyNznfLnP0HKfT+U++8l9rpL7zCL3eUCjnOY+x8Z9Roz7/BX32Sbuc0Pc2sd93oX7LAn3OQ3uMxDc5wu49+6798W795y793O790q79yG79/i698+696a6932691S69yu69wK699m597C594e591659zW59wy59+O84TT3PhL3Hg33/gf3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","debug_symbols":"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/aov6Zf6uBv6+jEz8rrxko5e/f3qUX37CHuGlPcqsev1h5//Dv/T9X8/yi/1KfZDj7Ie/nkz5KWBc0c///Sj/17Qwz9fvV18Ytd+LkhpBRmtIKcVFLSCklZQ0QpqWkEDK6gvWkG0pG5aUjctqZuW1E1L6qYlddOSumlJ3bSkHlpSDy2ph5bUQ0vqoSX10JJ6aEk9tKQeWlIPLKntgiW1XbCktguW1HbBkvrcUKYVBEtqu2BJbRcsqe2CJbVdtKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUgstqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXRktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJ7bSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlIHLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1ElL6qIlNc0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oOs0oOs0oOs0oOs0o+gVLaqcZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZxaAZxaAZxaAZxaAZxbhgSR00oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0o5g0o5g0o5g0o5g0o5gXLKmTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSLZhSLZhSLZhSLZhTrgiV10Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi04xi04xi04xi04xiX7CkbppRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpR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PbSZemB3P/SC3f3QCzZT6wW7+6EX7O6HXrCkVppRVJpRVJpRVJpRVJpRVJpRVJpRVIHN1CqwmVrvYxTv+NYhsN/9UIHd/VCB3f1Qgd39UJpRVJpRVIXd/VCaUVSaUVSaUVSaUVSlzdRKm6mVNlMrbaY22kxttJnaaHc/jHb3g2YUlWYUlWYUlWYUlWYUlfaUbaU9ZVtpRlGdNlM7baamGUWlGUV12t0Pp939cNrdD6clddCSOmh3P2hGUWlGUWlP2VbaU7aV9pRtpT1lW2lP2dag3f1I2t2PpM3USbv7kbS7HzSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqEWbqYs2U9/HKP4Tbx3nNuvLW8e5W5Y/vnW895Mv+eExgv72aMD3H8h3utXXy/vt8X3xvdnY1GxuarY2Ndubmp1FzT7csn5os7KpWd3UrG1q1mEfvpv227M0O6w0O6w0O6w0O6w0O6w0O6xDuys5tLuStOebKu35pkp7vqnSnm+qtOebKu35pkZ7vqnRnm9qNDtsNDtsFyyp7YIltV2wpLYLltR2wZLaLlpSCy2phZbUtOebGu35pkazw0azw0azw0azw0azw0azw0azw0azw6a0pFZaUistqZWW1LTnmxrt+aZGe76p0Z5varTnmxrt+aZGs8NGs8NmtKQ2WlIbLamNltRGS2qaHTaaHTanJTXt+aZGe76pOS2pnZbUNDtsNDtsNDtsNDtsNDtsNDtsQUvqoCU17fmmRnu+qdGeb2q055sa7fmmRnu+qdGeb2q055sazQ4bzQ5b0pI6aUmdtKROWlInLamTltRFS+qiJTXt+aZGe76pFS2pi5bURUvqoiV10ZKa9nxToz3f1JqW1E1L6qYlNc0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oOs0oOs0oOs0oOs0o+gVLaqcZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZxaAZxaAZxaAZxaAZxbhgSR00oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0o5g0o5g0o5g0o5g0o5gXLKmTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSLZhSLZhSLZhSLZhTrgiV10Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi04xi04xi04xi04xiX7CkbppRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRHJpRHJpRHJpRHJpRnAuW1EMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzigMzin7BjOIpiJXUpyBWUp+CWEl9CmIl9SmIldSnIFZSn4JYSX0KYiX1KYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqCJbXQjKLQjKLQjKLQjKJcsKQWmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlFUmlFUmlFUmlFUmlHUC5bUSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKRjOKRjOKRjOKRjOKdsGS2mhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WlG0WlG0WlG0WlG0S9YUjvNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKAbNKAbNKAbNKAbNKMYFS+qgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWkGcWkGcWkGcWkGcW8YEmdNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKNYNKNYNKNYNKNYNKNYFyypi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUm2YUm2YUm2YUm2YU+4IlddOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOM4tCM4tCM4tCM4tCM4lywpB6aURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaUZyHG0W9rL9frFfbjwW9d3Fe1+vVadfr5SL6biWlL5VUx+vV8b3Z2tRsb2p21jQb18NN6Ic2K5ua1U3N2qZmfVOzsalZ9AR1hj6dtwHQ80azape+FH7+O/xP1//RMHqK+h0Noyep39Ewepr6DQ0LeqL6HQ2jp6rf0fBdJivx1zcCmxsfvMvy9eJ4e9co/16Q0QpyWkHx8ILq9eK+5OeCklZQ0Qpq2t+hgRV0H3t+z4KEVhAtqZWW1EpLag1aQUkriJbU2rSCBlaQXbSCHp3UKvNysapfPxb0zk+Oul4LiUr5eQY3/ewN2GdvwD97A7R3GqO901jRCmr237lue/nRKdc7tw5sPnkDfn32Bu7xzpfxereqrlt3q/ySlwZc+8aP1paXH60db4VIv/ezLV7vVVnkD18+fPtzfrp6zt2y71ePavztX74Rdpc1BM+z/OMs7XmWdztLf57l3c4ynmd5t7PM51ne7Szrsw8in32W9c8+y8Znn2UDfhfndgPwuzi3GzDYjb37bFO5Z0G0b16D9s1r0O7nB+1+ftDu5yftfn4KrSClFURL6qQlddKSOmlJnbSkTlpSJy2pi5bURUvqoiV10ZK6aEldtKQuWlIXLamLltRFS+qmJXXTkrppSd20pG5aUjctqZuW1E1L6qYlddOSemhJPbSkHlpSDy2ph5bUQ0vqoSX10JJ6aEk9sKSWC5bUcsGSWi5YUssFS+rztSetIFhSywVLarlgSS0XLKnloiW10JJaaEkttKQWWlILLalp6l5o6l5o6l6EltRCS2qlJbXSklppSa20pFZaUistqZWW1DR1LzR1LzR1LzR1L0ZLaqMltdGS2mhJbbSkNlpSGy2pjZbURktqpyW105LaaUnttKR2WlI7LamdltROS2qnJbXTkjpoSR20pA5aUtOMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMojz8ie9q9fpoKJe35468/5iSuuSHvV7+tqvr3/MgKXn40+Q/tNne1OwsaravTc3KpmZZz5s+BbGeN30KclpBrOdNn4KSVlDRCmpaQQMraC5aQUIriJbUQ0vqoSX10JJ6aEk9tKQeWlIPLKn1giW1XrCk1guW1HrBklovWFLrBUtqvWBJrRcsqfWCJbVetKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUgstqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXRktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJ7bSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlIHLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1ElL6qIlddGSumhJXbSkLlpSFy2pi5bURUvqoiV10ZK6aUndtKSmGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWjGUWjGUWjGUWjGUW7YEltNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKPoNKPoNKPoNKPoNKPoFyypnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUg2YUg2YUg2YUg2YU44IlddCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtKMYtKMYtKMYtKMYl6wpE6aUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUSyaUSyaUSyaUSyaUawLltRFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pF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qDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjaDSjaDSjaDSjaDSjaBcsqY1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFJ1mFJ1mFJ1mFJ1mFP2CJbXTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjGLQjGLQjGLQjGLQjGJcsKQOmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlFMmlFMmlFMmlFMmlHMC5bUSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKRTOKRTOKRTOKRTOKdcGSumhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWlGsWlGsWlGsWlGsS9YUjfNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKA7NKA7NKA7NKA7NKM4FS+qhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWBGcW+YEbxFMRK6lMQK6lPQaykPgWxkvoUxErqUxArqU9BrKQ+BbGS+hRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwF0ZIaZhRPQbSkhhnFUxAtqWFG8RRES2qYUTwFwZJaaEZRaEZRaEZRaEZRLlhSC80oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oCs0oKs0oKs0oKs0oKs0o6gVLaqUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaMZRaMZRaMZRaMZRbtgSW00o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o2g0o+g0o+g0o+g0o+g0o+gXLKmdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSdZhSDZhSDZhSDZhSDZhTjgiV10Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0Ixi0oxi0oxi0oxi0oxiXrCkTppRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRTJpRLJpRrIcbRb2sv1+sV9uPBb13cV7X69Vp1+vlIvpuJaUvlVTH69XxvVnd1KxtatY3NRubms1NzdamZntTs7Oo2Yf73g9tFj1BnaFP520A9LzRrNqlL4Wf/w7/0/V/NIyeon5Hw+hJ6nc07NsaRk9Uv6Nh9FT1Oxq+y2Ql/vpGYHPjg3dZvl4cb+8a5d8LalpBAyvoPvb8nyqoXi/uS34uSGgFKa0go/0dclpBQSsoaQXRklppSa20pLaLVpDQCqIltRmtIKcVFLSCHp3UKvNysapfPxb0zk+Oc1/65UdHpfw8g1t99gb6szcwn7wBp73TOO2dxpVWkLH/znXby49Oud65dXAfa/+RDcRnb+Ae73wZr3er6rp1t8oveWnAtW/8aG15+dHa8VaI9Hs/2+L1XpVF/vDlw7c/56er59wt+371qMbf/uUbYXdZQ/A8yz/Osp9nebeznOdZ3uss77K34nmWf5ylPM/ybmepn3wQic8+y95nG8lHNvDZZ9mA38W53QD8Ls7tBhp2Yy8GVlDSvnlN2jevSbufn7T7+ffZpnLPgmj38zNpBRWtIFpSJy2pi5bURUvqoiV10ZK6aEldtKQuWlIXLamLltRFS+qmJXXTkrppSd20pG5aUjctqZuW1E1L6qYlddOSemhJPbSkHlpSDy2ph5bUQ0vqoSX10JJ6aEk9sKTuC5bUfcGSui9YUvcFS+q+YEndFyyp+4IldV+wpO4LltR90ZJaaEkttKQWWlILLamFltRCS2qhJbXQklpoSS20pKap+6ap+6ap+1ZaUistqZWW1EpLaqUltdKSWmlJbbSkNlpS09R909R909R909R9Gy2pjZbURktqoyW105LaaUnttKR2WlI7LamdltROS2qnJbXTktppSR20pA5aUgctqYOW1EFL6qAlddCSOmhJTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOK/fAnvqvV66OhXN6eO/L+Y0rqkh/2evnbrq5/z4Ok+uFPk//QZm1Ts76p2djUbG5qFva86W7Y86a7Yc+b7oE9b7pHaAUprSCjFeS0goJWUNIKoiX10JJ6YEk9Fyyp54Il9VywpJ4LltRzwZJ6LlhSzwVL6rlgST0XLKnnoiW10JJaaEkttKQWWlILLamFltRCS2qhJbXQklpoSa20pFZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSGy2pjZbURktqoyW10ZLaaElttKQ2WlIbLamNltROS2qnJbXTktppSe20pHZaUjstqZ2W1E5LaqclddCSOmhJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEmdtKROWlInLamTltRJS+qkJXXSkjppSZ20pE5aUhctqYuW1EVL6qIlddGSumhJXbSkLlpSFy2pi5bUTUvqpiV105K6aUndtKRuWlI3LalpRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFgRnEumFE8BbGS+hTESupTECupT0GspD4FsZL6FMRK6lMQK6lPQaykPgXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BsKQWmlEUmlEUmlEUmlGUC5bUQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKQjOKSjOKSjOKSjOKSjOKesGSWmlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlG0WhG0WhG0WhG0WhG0S5YUhvNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKDrNKDrNKDrNKDrNKPoFS2qnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGcWgGcWgGcWgGcWgGcW4YEkdNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKOYNKOYNKOYNKOYNKOYFyypk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUi2YUi2YUi2YUi2YU64IlddGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtOMYtOMYtOMYtOMYl+wpG6aUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaURyaURyaURyaURyaUZwLltRDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4rzcKOol/X3i/Vq+7Gg9y7O63q9Ou16vVxE362k9KWS6ni9Or4325uanUXNPtxtfmizsqlZ3dQs6B39nYszXy/Oeive1L6X75+7fNC08O8pP8n/UuTbE4nfmvW88S9F7dKXws9/h//p+j8aRs8uv6Nh9PzyOxpGzzC/oWFHzzHyDfO9Xn3e+t5p4GvNJtmvb9c587++XfvXmk1uNGubmvVNzcamZtFT0j//ecLs9fNE/PR5wr/Y3Z1fN/vF7u78utkvdnfnl83GF7u78+tmv9jdnV83+8Xu7vy62a81Qd1o1jc1+7UmqBvNbpqgYtMEFZsmqNg0QeWmCSo3TVC5aYLKTRPUwzepfGizmyao3DRB5aYJKjdNULlpgqpNE1RtmqBq0wRVmyaoh284+tBmN01QtWmCqk0TVG2aoGrTBNWbJqjeNEH1pgmqN01QD9889qHNbpqgetME1ZsmqN40QfWmCWo2TVCzaYKaTRPUbJqgHr4R8EOb3TRBzaYJajZNULNpgpo9E5Rc17VnhPrW7Z4Z6lu3e4aob93umaK+deurut0zR33rds8g9a3bPZPUt273jFLful01S8mqWUpWzVKyapaSVbPUwxfqfmy3q2YpWTVLyapZSlbNUrJqltJVs5SumqV01Sylq2aph6+8/thuV81SumqW+mqbwG90u2qW+mq7wH/d7VdbBn6j21Wz1FdbB36j21Wz1MPXh39st6tmKfZy8rt3u2qWYq8lv3u3q2Yp9kLyu3e7apb6YuvLb3W7apb6YgvMb3W7apZatML8W7erZqlFS8y/dbtqllq0xvxbt6tmqUWLzL91u2qWWrTK/Fu3q2apRcvMv3W7apZatM78W7erZqlFC82/dbtqllq00vxbt6tmqUVLzb91u2qWWrTW/Fu3q2apRYvNv3W7apZatNr8W7erZqlFy82/dbtqllq03vxbt6tmqUULzr91u2qWWrTi/Fu3q2apRUvOv3W7apZatOb8W7erZqlFi86/dbtqllq06vxbt6tmqUXLzr91u2qWWrTu/Fu3q2apRQvPv3W7apZatPL8W7erZqlFS8+/dbtqllq09vxbt5tmKVm191xW7T2XVXvPZdXec7l8VbebZilZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu09l1V7z2XV3nNZtfdcVu0911V7z3XV3nNdtfdcV+0918tXdbtpltJVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XFftPddVe8911d5zXbX3XL/a3vPS1277nW6/2Cx1o9uHz1JWr/W75K+7leh+/auZcvmfuv3eQX/6DgbdQYrrWwc573Tw+J3jd+9APn0H+uk7MHQHdcnrj67L+1byZr81PPNT8j5+3/eHdhurus1V3bJniHt3y543/tlub8z+w55N7tutXew55t7dsmeee3fLno/u3e3XmqVudeuruv1as9Stbr/WLHWr2681S93qdtMsZdeqWUpWzVKyapaSVbOUrJqlHr/v+0O7XTVLyapZSlbNUrJqlpJVs5SumqV01Sylq2YpXTVLPX7f94d2u2qW0lWzlK6apXTVLKWrZilbNUvZqlnKVs1StmqWevy+7w/tdtUsZatmKVs1S9mqWcpWzVK+apbyVbOUr5qlfNUs9fh93x/a7apZylfNUr5qlvJVs5SvmqVi1SwVq2apWDVLxapZ6vH7vj+021WzVKyapWLVLBWrZqlYNUvlqlkqV81SuWqWylWz1OP3fX9ot6tmqVw1S+WqWSpXzVK5apaqVbNUrZqlatUsVatmqcfv+/7QblfNUrVqlqpVs1StmqVq1SzVq2apXjVL9apZqlfNUo/f9/2h3a6apXrVLAXf933vblfNUvA94nfuFr5z/N7drpql4LvM793tqlnqi+09v9Xtqlnqi+09v9Xtqllq1d5zW7X33FftPfdVe8991d5zX7X33C9f1e2mWcpX7T33VXvPfdXec1+199xX7T33VXvPfdXec1+199xX7T33VXvPfdXec1+199xX7T33VXvPfdXec1+199xX7T33VXvPfdXec1+199xX7T33VXvPfdXec1+199xX7T33VXvPfdXec1+199xX7T33VXvP/avtPS99vbzf6faLzVI3un34LHVZv3R7td3odkrn5UdPed7oVu3Sl8LPf4f/6frvHc+2jh+///zDO5Z1Heu6jm1dx76u41jXca7ruNZ1vG7meviOdJm43nqoHzv+o6KH7zG/XZHgKlJcRXd5zxd//URkc6Oisnzvo3H5S0WOqyhwFSWuosJV1LiKhlbRffYl37UiwVWkuIqM9i6Sj8/ser24L3nnjAJXUeIqKlxFjasIN2cXbs6uR2e2yrxcrOrXj6/aOz856notJCrlnU9TpZ++A/v0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SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMU5SMM5SMM5SMM5SMM5SLtomW04B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B2k4B+k4B+k4B+k4B+k4B+kXLbMd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAd5yAD5yAD5yAD5yAD5yDjomV24Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4Bxk4hxk4hxk4hxk4hxkXrTMTpyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDTJyDLJyDLJyDLJyDLJyDrIuW2YVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkIVzkI1zkI1zkI1zkI1zkH3RMrtxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJxDrJx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OAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAdpOAdpOAdpOAdpOAdpFy2zDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgHecgHecgHecgHecg/aJltuMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcZOAcZOAcZOAcZOAcZFy0zA6cgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycg0ycg0ycg0ycg0ycg8yLltmJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5D5cAepl/X3i/Vq+7Gi9y4+N7herz4v6OvlIvpuJaUvlVTH69Xx0q2t6tZXdRurus1V3daqbkHv7e9cnPl6cdZb9ab2Uj9oEvj31E+yuP+u+oX8r+V0qPPWreeNfy1ql74Ufv47/E/Xf+8YPcX8lo7Rk8xv6djXdYyeaGQ63t71zlvgex18rSkl+/V9O2d+et/2rzWl3Oq2V3U7m7p9uGz/2G7R89I//+nC7PXTRfz86SK+2B2fG91+sTs+N7r1Vd1+sTs+N7r9Ynd8bnT7xe743Oj2a81St7r9WrPUjW7za81St7pdNUvlqlkqV81SD9/w8bHdrpqlctUslatmqVw1S+WqWapWzVK1apaqVbNUrZqlHr5552O7XTVL1apZqlbNUrVqlqpVs1SvmqV61SzVq2apXjVLPXwj1sd2u2qW6lWzVK+apXrVLNWrZqlZNUvNqllqVs1Ss2qWevimuo/tdtUsNatmqVk1S82qWWo2zVJ1bZql6to0S9W1aZaqa9MsVZev6nbTLFXXplmqrk2zVF2bZqm6Vs1SsmqWklWzlKyapWTVLPXwza4f2+2qWUpWzVKyapaSVbOUrJqldNUspatmKV01S+mqWerhG5c/tttVs5SumqV01Sylq2YpXTVL2apZylbNUl9to/iNblfNUl9to/iNblfNUl9to/iNblfNUrZqlrJVs5SvmqXYu83v3u2qWYq90/zu3fqqblfNUl9s7/mtblfNUl9s7/mtblfNUl9s7/mtblfNUqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp73qv2nveqvee9au95r9p73pev6nbTLNWr9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3ns2rv+azaez6r9p7Pqr3nc/mqbjfNUrNq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/ae/z/t3e1uJEl23vFbyvN+ztUYkmAYCywkQ1ob8Afdu6N7m2T3kjucrqkK/jnRXxYz2CrGEzUZD4NZ+cuco+57Pkfd93yOuu/5HHXf8znqvudz1H3P56j7ns9R9z2fo+57Pkfd93yOuu/5HHXf8znqvudz1H3P56j7ns9R9z2fo+57Pkfd93yOuu/5HHXf8znqvuez/77nVs/5XfK3ZyvR/Rw/5fIfZvttBvLpZ6DoGaS4vswg560Z2KefgX/6GcSnn0GiZ1CXPP/ourzfa97slwnPvG7eOmq2fdRs55zZ+nWx9xD3ni17v/Gzs/3N/eGaLXtvcu/Zsvcx956tHzVb9v7o3rP9c+2l3pvtn2sv9d5s/1x7qfdm++faS70zW/lz7aXem+1Reyk5ai8lR+2l9t/v+0Nne9ReSo7aS8lReyk5ai8lR+2l9Ki9lB61l9Kj9lJ61F5q//2+P3S2R+2l9Ki9lB61l9Kj9lJ61F7KjtpL2VF7KTtqL2VH7aX23+/7Q2d71F7KjtpL2VF7KTtqL2VH7aX8qL2UH7WX8qP2Un7UXmr//b4/dLZH7aX8qL2UH7WX8qP2Un7UXiqO2kvFUXupOGovFUftpfbf7/tDZ3vUXiqO2kvFUXupOGovFUftpfKovVQetZfKo/ZSedReav/9vj90tkftpfKovVQetZfKo/ZSedReqo7aS9VRe6k6ai9VR+2l9t/v+0Nne9Reqo7aS9VRe6k6ai9VR+2l+qi9VB+1l+qj9lJ91F5q//2+P3S2R+2l+qi9VB+1l+qj9lJ91F4Kfr/ve8/2qL0U/D7i957tUXsp+P3J7z3bo/ZSf7L7nr8326P2Un+y+56/N9uT9lLyJ7vv+XuzPWkvJUfd91yOuu+5XH7UbE/aS8lR9z2Xo+57Lkfd91yOuu+5HHXfcznqvudy1H3P5aj7nstR9z2Xo+57Lkfd91yOuu+5HHXfcznqvudy1H3P5aj7nstR9z2Xo+57Lkfd91yOuu+5HHXfcznqvudy1H3P5aj7nstR9z2Xo+57Lkfd91yOuu+5HHXfcznqvudy1H3P5aj7nstR9z2X/fc9v6yfZnu1vTPbKZ2nHz3l+c5s1S59Cr7+OfyH1/99xvvvff7hM5bjZqzHzdiOm7EfN+M4bsZ53IzruBn3cTM+bs+1/R7pMnG9zKG+n/G3RIJLpLhEhkt0l9/54s9/Edm8k6gs3/rzqfwpUeASJS5R4RI1LtHQEt3nXsx3TSS4RIpLZLhETvstkvs7u55f3Je88RklLlHhEjUu0dASFW6fXbh9du3ubJV5erGqX9//V3vjJ0ddz0GiUt74a6rs08/AP/0M4tPPID/9DArXLY1LNLREjfsd1bjfUY07F3SX+0ZmfPfV9XvnLP2Sp7Zw7Xd+tPbzt+La8RJk/bd949UWz2csLfKlieTLOK9ePeuc6bdXj2r89x8/HXqX21L++jC/fZjx68O834eZvz7M+32Y9evDvN+H2b8+zPt9mPPrw7zbh3mXG5r++jC/fZjy68O834epvz7M+32YuG/Dt9+R9f1E8LNi3c8XQ6dcb/5Xhp8V+x0zqE8/g/70M5hPPgO9rk8/A/n0M4B/U/U7ZgD/pup3zMA//QwCtkvQ7XfIfD8R7ZskvWjfJOlF+yZJhfZNkgrtmyQV2jdJKvuvUPvtq2ZUHJeIdoWaCu0KNRXaFWoqtCvUVGhXqKleuESCS6S4RLRzX7r9TmXvJ8J1tuI6W3GdrbjOVlxnG26fbbh9tuE623D77PvcEemuiXCdbbjONty5EcOdGzHcuRHHdbbjOttx50Yc19mO62zHdbbjOttx+2zH7bMdt88O3LmRwJ0bCdw+G3eXDL3PXTLumgjX2YHr7MB1duA6O3CdnbjOTlxnJ66zE7fPvs9dMu6aCHfdSOKuG0ncuZHEnRtJ3LkR3F0yFHeXDC3cuZHCdXbhOrtw++zC7bMLt88u3D67cPvsxu2zG7fPbtw+u3HnRu5y64X7JsJ1duM6u3Gd3bjOblxnD26fPbh99uA6e3D77Ps417smwnX24Dp7cOdGBnduZGjnRuyidbZdtM62i3ZuxC5aZ9tF62y7aJ1tF62z7aLts+2i7bPtou2zTWjnRkxo50ZMaPtsE9q5EbuPg7xrIlxn4xyk4Ryk4Ryk4Ryk4Ryk4Ryk4RykKW6ffR8HeddEtOtGTGnXjZjSzo2Y0s6NmOLOjeAcpOEcpBnu3AjOQRrOQRrOQRrOQZrh9tmG22cbbp/tuH224/bZjttnO+7cyPanzb+fCNfZOAdpOAdpOAdpOAdpuKeFG+5p4YZzkBa4ffYHPC38vUS4zsY5SAvcuZHAnRsJ3LmRxHV24jo7cedGcA7ScA7ScE8LN9zTwg33tHDDPS3ccE8Lt8KdGyncuZHC7bMLd27kPg7yrolwnY1zkIZzkIZzkIZzkIZzkIZzkIZzkNa4ffZ9HORdE+GuG2ncdSONOzfSuHMjjTs3gnOQhnOQNrhzI7jnfRrueZ82uM4eXGfjHKThHKThHKTjHKTjHKTjHKRftM72i9bZjnsepOOeB+m450E67nmQjnsepOOeB+m450E67nmQjnOQjnOQLrjOFlxnC66zBdfZgutsxXW24jpbcZ2Nex6k454H6TgH6TgH6TgH6TgH6TgH6TgH6TgH6TgH6YbrbMN1tuE623CdjXsepOOeB+m450E67nmQjnsepOOeB+k4B+k4B+mO62zHdbbjOttxne24zsY5SMc5SA9cZ+OeB+m450F64Do7cJ2Nc5COc5COc5COc5COc5COc5CeuM5OXGfjngfpuOdBOu55kI57HqTjngfpuOdBOu55kI57HqTjHKTjHKQXrrML19mF6+zCdXbhOrtxnd24zm5cZ+OeB+m450E6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkEGzkEGzkEGzkEGzkHGRevswDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIxDnIxDnIxDnIxDnIvGidnTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHWTgHWTgHWTgHWTgHWRetswvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIBvnIBvnIBvnIBvnIPuidXbjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHOTgHOTgHOTgHOTgHORctM4enIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcmoOMi+YgVyJYZ69EsM5eiWCdvRLBOnslgnX2SgTr7JUI1tkrEayzVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EtM4WnIMUnIMUnIMUnIOUi9bZgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQinOQinOQinOQinOQetE6W3EOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEO0nAO0nAO0nAO0nAO0i5aZxvOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQTrOQTrOQTrOQTrOQfpF62zHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOcjAOcjAOcjAOcjAOci4aJ0dOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAeZOAeZOAeZOAeZOAeZF62zE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgC+cgC+cgC+cgC+cg66J1duEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOMcZOMcZOMcZOMcZF+0zm6cg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycgxycgxycgxycgxycg5yL1tmDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5CDc5BDc5B50RzkSgTr7JUI1tkrEayzVyJYZ69EsM5eiWCdvRLBOnslgnX2SoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS7O1sv628v1rXz+D7RW/FL5yW/5/PLRd56vdqlT8HXP4f/8PpvM+7jZjyHzVi2O9GPn7EcN2M9bsZ3+Z0v/vTqsnnnt0dZPr844uXF/pTIcYkClyi3J6rnF/clbyQqXKLGJRracXQfR3vXRIJLpLhEuM4WXGcLrrMlcYkKlwjX2TK0RHrhEgku0e7OVpmnF6v69X2iN35y1PUcJCrljX252qefgX/6GcSnnwHud47ifudo4xIN+7jrtqcf/eXP9TeOO7s+/Qzk08/gHr8DM57PZdX13rksv+RpBq79zo/WlqcfrR0vQaTf+tkWz2eyLPLl05Ev47x69axzad9eParx33/8NNldSPWvD/Pbh+m/Psz7fZjx68O834eZvz7M+32Y9evDvN+H2Z9+P/Lpd7X+6Xe1/ul3tQ4/s/M7ZgA/s/M7ZuC0830euES4b2gd9w2t4872O+5sf+DO9gfubH8oLpHhEuE6O3CdHbjODlxnB66zA9fZievsxHV24jo7cZ2duM5OXGcnrrMT19mJ6+zEdXbhOrtwnV24zi5cZxeuswvX2YXr7MJ1duE6u3Cd3bjOblxnN66zG9fZjevsxnV24zq7cZ3duM5uXGcPrrMH19mD6+zBdfbgOntwnT24zh5cZw+us4fW2XrROlsvWmfrRetsvWidrRets/WidbbiZL/iZL/iZL9euM4WXGcLrrMF19mC62zBdbbgOltwnS24zsbJfsXJfsXJfsXJflVcZyuusxXX2YrrbMV1tuI6W3GdrbjONlxnG66zDdfZhutsw3W24TrbcJ1tuM42XGcbrrMd19mO62zHdbbjOhvnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBX3hGzFPSFbcU/IVtwTshX3hGzFPSFbcU/IVtwTshX3hGzFPSFbcU/IVtwTshX3hGzFPSFbcU/IVtwTshX3hGzFPSFbcU/IVtwTshX3hGzFPSFbcU/IVtwTshX3hGzFPSFbcU/IVtwTshX3hGzFPSFbB9fZg+vsoXW2XbTOtovW2XbROtsuWmfbRetsu2idbRets+2idbZdtM62C9fZgutswXW24DpbcJ0tuM4WXGcLrrMF19mC62zBdbbiOltxna24zlZcZyuusxXX2YrrbMV1tuI6W3GdbbjONlxnG66zDdfZhutsw3W24TrbcJ1tuM42XGc7rrMd19mO62zHdbbjOttxne24znZcZzuusx3X2YHr7MB1duA6O3CdHbjODlxnB66zA9fZgevswHV24jo7cZ2duM5OXGcnrrMT19mJ62ycgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScg3Scg3Scg3Scg3Scg/SL1tmOc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5CBc5CBc5CBc5CBc5Bx0To7cA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycQ4ycQ4ycQ4ycQ4yL1pnJ85BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BJs5BFs5BFs5BFs5BFs5B1kXr7MI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5yMI5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zmOwPA7LE7A8uT3PNc95/HWeguVpWJ5h5fELlkdgefb38/V0YVhe+TqPwfI4LE/A8iQsT8HyNCzPsPLEBcsjsDywfg5YPwesnwPWzwHr54D1c8D6OWD9nLB+TlI/r3/TL698+/Svv5wYkZeNd86Xebx9evY332E//Q7/6XfEz71j/Yt9eeHbX6OkPYm0/u4Pe4n++kb/+sY3j/bspwG7+rs32teM18+/RX7+Lfrzb7Gff4v//Fve/E8019MBPSo/vOX18Wz59J/F6uXY17+f7337li73+/H1cz/+y1veLOiJp89oSt9JpPWsI/p1ovmjP/77CV8//PjXr51nXCeXXP841bfPJT8qi/rTazXtHz+Wt08jf0wU5USxrVF+67h9+7zxrVFe//h47I/Px/74euyPf7uS/vna/ukimD88wG8ex2+fFL3jz5cH/3z94z//ny+u9W/x5ZVv/1fo52uAW15+O2te//yD/e23yM+/RX/+Lfbzb/Gff0v8/Fvy59/y9p+Qbc+7TXn1lv7Jt6x/yy+vfPMQkL6ert+VzvqHre361//7L//5l3/517/+z/9ab/ry//6ff/+3v/3lP/7927/+7f/977//P+vF/x8=","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":"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":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+1dB3xURRM/0ggQqkqRYmgC0t7eXXIXQAQp0qSDdEhyOXpvAhaKBWkiWFHsqNh7771hwQJiwy4qiopd8ZsH+2Q4huTKbHzzee/3+5NhNm/zn53debs7e+/KePZdD1XxeOpm7ZPLAFL1zxRAdoTO+YnlNEKXQdybRegqEboqhK4aoasB6BChO4r4vWxCV5/QNSB0RxO6JoDMCF1TQteM0B1D6JoTuhaEriWha0XoWhM6i9ApQucldD5C5yd0OYQul9AFCF2Q0OURujaEri2ha0fojiV07QndcYSuA6HrSOiOJ3SdCF1nQteF0HUldCcQum6Erjuh60HoehK6XoTuRELXm9D1IXR9CV0/Qtef0A0gdAMJ3SBCN5jQnUTohhC6oYRuGKEbTuhGELqRhG4UoRtN6MYQunxCV0DoCgldiNAVEbqw1uGrjP7ZQf/0Wbl+f1HAW6R8Kt/y5hUEcyx/TkFuUAVVTjAn5A36fEVBfzCQV5AXsPKU31ekwjl5vrC179qZsr8uK6HLW2iS57dx81QqUmNzs59faYir3Q57tGw/Yxy5KZK/1b/j3Pcd/H8X4HvADyn79c6VGtEGVmKXasZY13cpfL75ka0PWZbJ9juGsa5djO23W0j7NWes63vG9vuJsf2o2PAjig27kfwTkn+IiA0/w/9/AfwK+K0UYkMLxrp+ZvTN70L6dkvGun5hbL8/hLRfK8a6fmVsvz8Nx4bfUQz4A8l/Ivm3iNjwl/1/wN8p+xxhOja0ZqzrL0bflEmV0bctxrr2MLZfipD2U4x1/c3YfqmpZmOD3b+dGJCC5FQke1IPjA1p8P90QAagbCnEBi9jXWmpfL7JFNK3fYx1pTO2Xzkh7ednrCuDsf3KG44NmSgGlENyeSSXjYgNFeD/WYCKgEqlEBtyGOuqwOibykL6di5jXVmM7VfFcN+ujPpwFSRXRHKliL5dFf5fDXAY4PDU/Xmt4vbp7FyGIwc9h96nOwLqqw6oAahZCuMmj7GuIxj9XkvIuGnDWFd1xvY7Ukj7tWWsqwZj+9U2HHdqofhyJJJrI7lmRNypA/+vC6gHOKoUYkM7xrrqMPomW0jfPpaxrrqM7VdfSPu1Z6yrHmP7NTAcG7JRDKiP5AZIPioiNjSE/zcCNAYcXQqx4TjGuhoy+qaJkL7dgbGuRozt11RI+3VkrKsxY/s1MxwbmqAY0BTJzZB8dERsOAb+3xzQAtCyFGLD8Yx1HcPom1ZC+nYnxrqaM7ZfayHt15mxrhaM7WcZjg2tUAxojWQLyS0jYoOC/3sBPoC/FGJDF8a6FKNvcoT07a6MdXkZ2y/XcN/OQX04F8k+JPsj+nYA/h8E5AHaRLlPZ5+ZdeRunkPv07WF+toBjgW0L4Vx052xrraMfj9OyLjpwVhXO8b26yCk/Xoy1nUsY/t1NBx3jkPxpQOSOyK5fUTcOR7+3wnQGdClFGJDL8a6jmf0TVchfftExro6MbbfCULarzdjXZ0Z26+b4djQFcWAE5DcDcldImJDd/h/D0BPQK9SiA19GOvqzuibE4X07b6MdfVgbL/eQtqvH2NdPRnbr4/h2HAiigG9kdwHyb0iYkNf+H8/QH/AgFKIDf05xwmjbwYK6dsDOMcJY/sNEtJ+Azn7MmP7DTYcGwaiGDAIyYORPCAiNpwE/x8CGAoYVgqxYRBjXScx+ma4kL49mLGuIYztN8Jw3x6O+vAIJA9F8rCIvj0S/j8KMBowJsp9Ovuz2Y48xHPofbp8qK8AUAgIlcK4GcpYVz6j34uEjJthjHUVMLZfWEj7DWesq5Cx/cYajjtFKL6EkTwWyaGIuDMO/j8eMAEwsRRiwwjGusYx+maSkL49krGu8YztN1lI+41irGsCY/tNMRwbJqEYMBnJU5A8MSI2TIX/TwNMB8wohdgwmrGuqYy+mSmkb49hrGsaY/vNEtJ++Yx1TWdsv9mGY8NMFANmIXk2kmdExIY58P+5gJMB80ohNhQw1jWH0TfzhfTtQsa65jK23wIh7RdirOtkxvY7xXBsmI9iwAIkn4LkeRGx4VT4/2mA0wELSyE2FDHWdSqjbxYJ6dthxrpOY2y/xYb79iLUhxcj+XQkL4zo20vg/2cAzgScFeU+XVVUXyD10Pt0Z0PZUsA5gGWlMG5G8rWvOpvR78uFjJsljO23lLH9VhgeN8tRH16B5HOQvCxi3KyE/68CnAtYXcy4WYnqWIXkc5G8OqLu8+D/awBrAecXU/d5qI41SF6L5PMj6r4A/n8h4CLAxcXUfQGq40IkX4TkiyPqvgT+vw5wKeCyYuq+BNWxDsmXIvmyiLrXw/8vB1wBuJKIJSn6Zwf900rsUkd7+PrvVYzjym6bVN1Gdr3Z8DMdtW3kVYa5Xcp4eMeiw9Gx4Wqw6RrAtYANgOtSSzAoUedcz+acvWs6YzxviJ+nP1JBDcrr0eC7GskbkHxDxKDcCP+/EXAT4OZSeMBfwziQNjI+oG4x/IC6BfngRiTfhOSbI3xzK/z/NsDtgDsI33D3zzvjbwNfNG2A++e1SL4VyXdGtMFd8P+7AfcA7i2FNriPrx+EqTa4D9l6HZLvKqYN7of/PwB4EPBQFA/OhF+q6OEbo/cbmjhz+/1hPp4hyu8PI//a/nLk9cX4/RH4/6OAxwCPl8KEaQNjPH2E0e/2xKKCp3QmR4zPJwvzfSLVIGG7cu56n2TsDKbsfhLNLJnqNbo6x3Ul2qbXMPrnKaGD9SlDg/XpVIOEnzYwWJ9x+WC17X7G0GDlngk8qblyP12fTHWnv+0Ba3+1V4rn4Iu7HxzhMROomfrVP1/zgtviWd1vn3P2bJyfdsEHEbrn9H4OvrifIrgR43S+VztfPcvYkZ4zNNXnHoicNj9P1FVgFYZyVEFuKKCK8nOChYV5PqW8+bn5uQXeYLioIEcFc4JQZ2G+Nwh/zptfqIqs/Nyi0nxyPm/oyflCqkHCLxh4cr7o8ienbfeLQp6cz2muXAPWqZfTRy8xd3wn8Nv11vcceHEHrucY2+FlvnbIwe3wMvEA5O5nm5iTMeWQr+z/b0J7Mjb26LJXUs3a9SpfHiNgkudriKfKyS3KLwgH/UU+eNhZIb9V5PP5LK/XH/aGvEVBlesPhsPhYFiFA0WFqqAwF6oP+AoL4YGXl5MXwjy5x8srjOPldb4+V0jtD76K+txrSH69mP3BzfD/NwBvAt7S+4Ppnv17jJEX97PJ1ISPm+dmRp4ZiOfbOh5s0T+36p/v6J/b9Hylqf79d+H/7wHetxcOgA8B2wEfAT4GfAL4FPAZ4HPAF4AvATsAXwG+BnwD2An4FvAdYBfge8APgB8BuwE/AX4G/AL4FfAb4HfAH4A/AX/Z/Qjwd+q+zlQGkOJk+p1Avi11f2a6tGalWwzNSlPTDBK2K+euNy3N3bNS2+40lI5gqrdUNw+3Gups6WkGCacb6GwZLu9stt0ZwjvbO4Y6W9k0g4TLGuhsmS7vbLbdmQY6mwmudgTOSOOf35dLkznIthkaZOXTDBIub2CQVXD5ILPtriBkkNnBoJyBQZaVxttZIxeUW9DCcSuSt6Ue+jBgRRAqASoDqqSZPwzI+FRUFRn7fFXDvrHrd3xQCcmVkVwl7UDfVAPhMMDhgCPSDqyPs1/a4zLLQH+vztemKnJzg3vMv834IHEW/zXA/pqAWoAjAbUBdQB1AfUARwGyAfUBDQANAY0AjQFHA5oAmgKaAY4BNAe0ALQEtAK0BlgABfACfAA/IAeQCwgAgoA8QBtAW0A7wLGA9mn7Nozw+r9G2v4NUEdXk9DVInRHErrahK4OoatL6OoRuqMIXTahq0/oGhC6hoSuEaFrTOiOJnRNCF1TQteM0B1D6JoTuhaEriWha0XoWhM6i9ApQucldD5C5yd0OYQul9AFCF2Q0OURujaEri2ha0fojiV07VE8dC4n/nbQP63ErgNiTqKxtgbDs7AovO+qyfhcXZdlZsM40hcJ2hyqxdd+eUfy1aVqM/riUhG+KFJ12NqvUNVlqyuo6jH64jIRvrDUUVztV2SpbK66Ci1Vn9EX6yX4ImipBlztB8+ehkx1FUFdjRh9cbkAXxSCzY2Z2i9of2qVqS4wWTVh9MUV7vdFkW1zU572K7TrasZTV9Cu6xhGX1zpfl/YVavmLO1XtLeuFix1Fe6tqyWjL65yvS+Ce21uxdJ+e2mq1hx1Fe2ry2L0xdVu90XhPpsVR/sF99Xl5ahrn8nKx+iLa1zui5C22c9gc4GuK4ehroCuK5fRF9e62xf/fBohkLjNyqkrmHBdwbBTVx6jLza42hfBAsfmNom3n2OzaptwXYF/6mrH6IvrXO2LnH9sPjZhm9U/dbVP49uzxPt5Cb/EpZR8YSV2KcZ9M8W476PWM/riBiG+YNwfUIzrW3Uloy82CvEF4zpIMc7j1TWMvrhRiC8Y53uKcb6irmP0xU1CfMH4XFOMcVltZPTFzYZ8wX3eiHH8Ksb+p0y1X0pE+7khr/zPN5QzzkPtOrjPANnnraqn8Z+D6pDG62tuu+0PKdUwYPfjWe62e29/NGD3E6UUGxPl2ZFxPDL6Wj3h8n5jj5fjDPSbp11udw1D4+UZIePleMbxwuhrZar9uP3cKU0Gz87x8/RGKmxukWfB7bjrnPk+HsmdkNw57cCz4F1A6Ao4AdAt7dBnwa3ELmV/WLmmgTH+vOHYlig/2+YuBux+QciatQvjPL87Y5xk7DdKii/eYzwX3CPNzBh207igYmx3FEt7RBlje4LQC3AioLfBGGu/DKKWgVjzsstjrG1zTwN2bxIyrnsyjsU+jDGWsd8oKb54nzHG9k0zM4bdNC6oGNsHxdK+UcbYfiD0BwwADDQYY+2X7RxpINa85vIYa9vcz4DdrwsZ1/0Yx+IgxhjL2G+UFF98wBhjB6eZGcNuGhdUjB2EYungKGPsSSAMAQwFDDMYY+2XmdU2EGvedHmMtW0+yYDdbwkZ1ycxjsXhjDGWsd8oKb74kDHGjkgzM4bdNC6oGDscxdIRUcbYkSCMAowGjDEYY7en7n9nAq430Tbd6vIYa9s80oDd7wgZ1yMZx2I+Y4xl7DdKii+2M8bYgjQzY9hN44KKsfkolhZEGWMLQQgBigBhgzHWfhlvXQOx5j2Xx1jb5kIDdr8vZFwXMo7FsYwxlrHfKCm++Igxxo5LMzOG3TQuqBg7FsXScVHG2PEgTABMBEwyGGPtl53XMxBrtrs8xto2jzdg90dCxvV4xrE4mTHGMvYbJcUXHzPG2ClpZsawm8YFFWMno1g6JcoYOxWEaYDpgBkGY6z9ZRJHGYg1n7o8xto2TzVg92dCxvVUxrE4kzHGMvYbJcUXnzDG2FlpZsawm8YFFWNnolg6K8oYOxuEOYC5gJMNxlj7y3qyDcSaL10eY22bZxuwe4eQcT2bcSzOY4yxjP1GSfHFp4wxdn6amTHspnFBxdh5KJbOjzLGLgDhFMCpgNMMxlj7y9DqG4g137g8xto2LzBg904h43oB41g8nTHGMvYbJcUXnzHG2IVpZsawm8YFFWNPR7F0YZQxdhEIiwFLAGcYjLH2l002MBBrdrk8xto2LzJg9/dCxvUixrF4JmOMZew3SoovPmeMsWelmRnDbhoXVIw9E8XSs6KMsWeDsBRwDmCZwRhrf5lvQwOxZrfLY6xt89kG7P5JyLg+m3EsLmeMsYz9RknxxReMMXZFmpkx7KZxQcXY5SiWrogyxq4EYRXgXMBqgzHW/rL0RgZiza8uj7G2zSsN2P2bkHG9knEsnscYYxn7jZLiiy8ZY+yaNDNj2E3jgoqx56FYuibKGLsWhPMBFwAuNBhjd6Tu/w5EXG+ibfqny2OsbfNaA3b/JWRcr2UcixcxxljGfqOk+GIHY4y9OM3MGHbTuKBi7EUoll4cZYy9BIR1gEsBlxmMsV+l7v9OWVxvom3qqejuGGvbfIkBu8tUlDGuL2Eci+sZYyxjv1FSfPEVY4y9PM3MGHbTuKBi7HoUSy+PMsZeAcKVgKsAVxuMsV+n7v+Oblxvom2a5vIYa9t8hQG704WM6ysYx+I1jDGWsd8oKb74mjHGXptmZgy7aVxQMfYaFEuvjTLGbgDhOsD1gBsMxthvwL9NDcSaTJfHWNvmDQbsLidkXG9gHIsbGWMsY79RUnzxDWOMvTHNzBh207igYuxGFEtvjDLG3gTCzYBbALcajLE7wb/NDMSaLJfHWNvmmwzYXVHIuL6JcSzexhhjGfuNkuKLnYwx9vY0M2PYTeOCirG3oVh6e5Qx9g4Q7gTcBbjbYIz9Fvx7jIFYU8XlMda2+Q4DdlcVMq7vYByL9zDGWMZ+o6T44lvGGHtvmpkx7KZxQcXYe1AsvTfKGHsfCPcDHgA8aDDGfgf+bW4g1hzu8hhr23yfAbuPEDKu72Mciw8xxljGfqOk+OI7xhj7cJqZMeymcUHF2IdQLH04yhj7CAiPAh4DPG4wxu4C/7YwEGtqujzG2jY/YsDuWkLG9SOMY/EJxhjL2G+UFF/sYoyxT6aZGcNuGhdUjH0CxdIno4yxT4HwNOAZwLMGY+z34N+WBmJNHZfHWNvmpwzYXVfIuH6KcSw+xxhjGfuNkuKL7xlj7PNpZsawm8YFFWOfQ7H0+Shj7AsgvAh4CfCywRj7A/i3lYFYk+3yGGvb/IIBu+sLGdcvMI7FTYwxlrHfKCm++IExxr6SZmYMu2lcUDF2E4qlr0QZY18F4TXA64DNBmPsj+Df1gZiTSOXx1jb5lcN2N1YyLh+lXEsvsEYYxn7jZLiix8ZY+ybaWbGsJvGBRVj30Cx9M0oY+xbILwN2ALYajDG7gb/WgZiTVOXx1jb5rcM2N1MyLh+i3EsvsMYYxn7jZLii92MMXZbmpkx7KZxQcXYd1As3RZljH0XhPcA7wM+MBhjfwL/KgOxpoXLY6xt87sG7G4pZFy/yzgWP2SMsYz9RknxxU+MMXZ7mpkx7KZxQcXYD1Es3R5ljP0IhI8BnwA+NRhjfwb/eg3EGsvlMda2+SMDdish4/ojxrH4GWOMZew3SoovfmaMsZ+nmRnDbhoXVIz9DMXSz6OMsV+A8CVgB+ArgzH2F/Cvz0Cs8bs8xto2f2HA7hwh4/oLxrH4NWOMZew3SoovfmGMsd+kmRnDbhoXVIz9GsXSb6KMsTtB+BbwHWCXwRj7K/jXbyDWBF0eY22bdxqwO0/K5zcZx+L3jDGWsd8oKb74lTHG/pBmZgy7aVxQMfZ7FEt/iDLG/gjCbsBPgJ8NxtjfwL85BmJNO5fHWNvmHw3YfayUXDbjWPyFMcYy9hslxRe/McbYX9PMjGE3jQsqxv6CYumvUcbY30D4HfAH4E+DMfZ38G+ugVjTweUx1rb5NwN2d5QyrhnH4l+MMZax3ygpvvidMcbuSTMzht00LqgY+xeKpXuijLF/20I6lAFS0s3F2D/AvwEDsaazy2OsbfPfBuzuImRc/804FlPT+Xgx9hslxRd/MMbYtHQzY9hN44KKsXYfdGJpWnp0MTYdfi8DUBaQaTDG/gn+DRqINd1cHmNtm+025q63u5Bxnc44FssxxljGfqOk+OJPxhhbPt3MGHbTuKBibDkUV8tHGWMrwO9lASoCKhmMsX+Bf/MMxNheLo+xts0VDMTYE4WM6wqMY7EyY4xl7DdKii/+YoyxVdLNjGE3jQsqxlZGcbVKlDG2KvxeNcBhgMMNxtg94N82BmJsX5fHWNvmqgZibD8h47oq41g8gjHGMvYbJcUXexhjbPV0M2PYTeOCirFHoLhaPcoYWwN+ryagFuBIgzH2b/BvWwMxdqDLY6xtcw0DMXaQkHFdg3Es1maMsYz9Rknxxd+MMbZOupkx7KZxQcXY2iiu1okyxtaF36sHOAqQbTDG2hW3MxBjh7g8xto21zUQY4cKGdd1GcdifcYYy9hvlBRfeBjzjw3SzYxhN40LKsbWR3G1QZQxtiH8XiNAY8DRBmNsGaj4WAMxdoTLY6xtc0MDMXakkHHdkHEsNmGMsYz9RknxRRnGGNs03cwYdtO4oGJsExRXm0YZY5vB7x0DaA5oYTDGpkDF7Q3E2DEuj7G2zc0MxNh8IeO6GeNYbMkYYxn7jZLiixTGGNsq3cwYdtO4oGJsSxRXW0UZY1vD71kABfCiGOtcKcx+rurha8/W6Wb6dmqEzYny3JzK135bGPfUfIztB1V5Knj2P0vwxf285uSN+frTDRL2p/PXm8MY6EzZnZO+v4GZ6t3b2VI8+4OTyc7GOHgtkzy3pJoZFLmo3/J/CpZx1rT39LLm6JBORzrTHYXTAbhjB/QACto2mXBAroHIlMv8aDZld4pBuxM+kmi4Da3ELmV3zDwDy8c2zI93JwDY9S7U9XK3RdBQW7Q11BZtDbaFHQhNtEXI7R+FM9QHiv5duwtL4Ges74cNbV1ELu+sxC7F2C8Vo68VZ/vZcxB7a4CacXtibM+S+hOu08Qzi6tN8KSyXXGzZCuxS+UZeghg0jFyViX9HZtzOwNBYYJL9jNjmbwlnAtNd2eAmVDRTL88Fk1O4vVPSW3O6Z/2qC7l88HYCAVUOBT25QTyvAUq15ebG/aHA7lBfyic488PBYqUP9/nzSsKWGEVLCoK5PgKA7nhvFBhbhgHbRXy+fyhvIJClePNzS+wgiFfvhX2B3xeKz/kC4RCvmBubr7PF8oNhoN5Qa83P+wLWjmBQJ6V6/XleU35p732T2murjcbWl0fp1fXHaQEcFP8jjMQrDsaenB1NLh62esrA21xvKG2ON5gW2w2tJKb5PYPgxoaD5NdvpIz1fenCFnJMfZLxehrNSW5kou81HGGVnKdJK7kOhleyXUyEBRm/AdXcp3T3RlgZhhaKXQWtpLrwriSm8K4kjPlny5oJXeoh4Kbt+BM8jT1gOkq8QHT1fADpquBB8ysUnrAcOZ5XZQrOuABkyiv2aW0AkiU5wmMD2jG/qdmG3oAnBDFAzrhV3Ol8z0ID9geddEDepYh/3T7P9pq7a63WntQB5msxC51qAM9nCfUEn4fOWNwMeF4pw25g6qpNky0rp4u94c9YHoamBj1MjRJ7GVwK7qHobY40VBbnGh4W95EW5zs8m15U+Nhnsu35U31/flCtuUZ+6Vi9LWan9yWj7z2PrO42gRPdnub3DXpaegh0NvgronNubeBoHCakG35nowTwT7p7gwwpxlaVfYphW15Tv/0ZdyWn8+46jfln77/wqrf1MeX+ulVf38pAdwUv34GgvUAQw+uAQZXL3Zb9DfQFgMNtcVAwx+VMTGzX+jylZyp8bDI5Ss5U31/sZCVHGO/VIy+VouTK7nIS/UztJIbJHElN8jwSm6QgaBw1n9wJTc43Z0B5ixDK4XBwlZyJzGu5BYzruRM+eekf+GAVfd0M+NeygNmiMQHzBDDD5ghBh4wS4UcsOIMYPMMzWAT5XWOkANWQxkf0Iz9T51j6AEwtBQOWA1jPGA1v6I7H9BLDflnGOEf7lXvZsZ39r3DWNdwxmeZPcEprff/DTc0cRiRbpDwiHT+ekcyPthM2T0yfX8DM9Vbqu//e0fI+/84T23iQTGquNl0wm8dZ5wN4KjukP5/ODY7Wg+gMdSxWQ4HjDIQmUYZTshx2Z1i0O6EXxft8qSm3THzDSwrCwwtsQsMJvLGGGqLQkNtUWj4eKqJtljh8qSmqfGw0uVJTVN9f5WQpCZjv1SMvlarkknNyGvvM4urTfCkMmRyzznf0EMgZHDP2eYcMhAU1ghJauYzTgSL0t0ZYNYY2pMrKoWkJqd/woxJzVWMe6am/BP+F46nvmNodT1Wr67HSQngpviNNRCsxxt6cI03uHqx22KcgbaYYKgtJhhsi3cMreTOd/lKztR4uMDlKzlTff9CISs5xn6pGH2tLkyu5CIvNdbQSm6ixJXcRMMruYkGgsK6/+BKblK6OwPMOkMrhUnCVnKTGVdyFzKu5Ez5Z/K/cDx1dLqZcS/lATNF4gNmiuEHzBQDD5jLhBxP5QxgKw3NYBPltV7I8dSpjA9oxv6n1ht6AEwtheOp0xiPp66q6M4H9GWG/DPt/2irdbreap1BHWSyErvUoQ70cJ5QS7QuxkNRRt4357Qhd1A11YaJ1jXT5f6wB8xMAxOjWYYmibMMbkXPMNQWsw21xWzD2/Im2uJKl2/LmxoPV7l8W95U379ayLY8Y79UjL5WVye35SOvvc8srjbBk905JndNZhp6CMwxuGtic55jIChcJ2RbfibjRHBuujsDzHWGVpVzS2FbntM/JzNuy1/NuOo35Z+T/4VVv6mPL83Tq/75UgK4KX7zDATrBYYeXAsMrl7stphvoC1OMdQWpxj+qIyJmf0NLl/JmRoPG12+kjPV928UspJj7JeK0dfqxuRKLvJS8wyt5E6VuJI71fBK7lQDQeHW/+BK7rR0dwaYWw2tFE4TtpI7nXEldyPjSs6Uf07/Fw5YTU83M+6lPGAWSnzALDT8gFlo4AFzu5ADVpwB7CpDM9hEed0h5IDVIsYHNGP/U3cYegAsKoUDVosZD1hdXdGdD+jbDflncTG7OxznXmam879kiDOeLXH5zmkmDJYKafy+OcOw3RzfmdrTQN/hfBfumS5vQ7tvn5HOv4vFOGbUGYz+OMvl/rD7y1kG5qFnGz7Hlyg/e5f/bAN2313R3bF7iyG77zE01+WOtYz+Ufe4PKOz1ZCvlzLGNHsTprTeUbyUeZ/Auc5JN0j4nHT+epcxPuBM2b0sfX8DM9W7t7PZSPGY72xlPGYCIjfP5xjPmGQhnsu1/1bonyv1z1X657n652r98zz9c43+uVb/PF//vED/vLC4ncREO/OydN4O4KxoV2rSWLea0K0ldI7BpRkplxuKlBelGyR8kYFIebHLI6Vt98WGImVpdbYVhjrbJekGCV9ioLOtc3lns+1eZ6CzUVwT/tC1Hhjc6wfOgHCp0Hn0KkMD9rJ0g4QvMzBg17t8wNp2rxf+dDjXUGe7PN0g4csNdLYrXN7ZbLuvEPJ0WK0HBvfTgTMgXOnyLJA9E7jUwO7SVS632+7jVxqw+2qhs4HzDAXoa9INEr7GQIC+1uUB2rb7WuGzgTWGOtuGdIOENxjobNe5vLPZdl8nZDawVg8M7tkAZ0C43uVPRfupfbWBp+INLrfb7uPXG7B7o9DZwPmGAvSN6QYJ32ggQN/k8gBt232T8NnABYY6283pBgnfbKCz3eLyzmbbfYuQ2cCFemBwzwY4A8KtLn8q2k/tjQaeire53G67j99qwO7bme12rhRmnpwHS+5gzMWb8LXdF2834Os7Dfmam+ddbDx9fpM8746fZyhSYXOr4dn/aRH7/3Y77NHyciSvQPLdWnbuuwf+fy/gPsD96fv1zsV9Onol41i6h3GMP2Cor3O3H2PGU93L2H4PCmk/xiSeuo+x/R5iXkBExoYHUAx4EMkPIfn+iNjwMPz/EcCjgMdKITasZvTNw4y+eVxI32bMf6hHGNvvCSHtx7ilrx5lbL8nDceGx1EMeALJTyL5sYjY8BT8/2nAM4BnSyE2rGX0zVOMvnlOSN9m3A1VTzO23/NC2o9xg089w9h+LxiODc+hGPA8kl9A8rMRseFF+P9LgJcBm0ohNlzI6JsXGX3zimHfvIJ88BKSX0bypgjfvAr/fw3wOmBz+oH1YZ9w7JncaWDv8g5G/7zh8j0821dvGNjXedPldpv6tOBbLrfb7ttvGrD7fpd/OtS2+y0Ddj8g5JPAjP5RDzC/qzLDUzoJVM4PKVZEPN/Wub4t+udW/fMd/XOb/vmu/vme/vm+/vmB/vmh/rld//xI//w4vZgPAVqJXYrxQ4AHvNZma/rBH+57l9B9QOg+Si/9DwG+zdwOzvVJukHCn6Tz1/sp4+zHlN2fpu9vYKZ6S/UoxxZDne2zdIOEPzPQ2T53eWez7f7cQGejuCb8Agw9MLinDpwB4Yt0mQP2HUMD9st0g4S/NDBgd7h8wNp27xD+dNhmqLN9lW6Q8FcGOtvXLu9stt1fC3k6vKsHBvfTgTMgfOPyzRN7JvCFgU2EnS632+7j3xiw+1uhs4H3DAXo79INEv7OQIDe5fIAbdu9S/hs4H1Dne37dIOEvzfQ2X5weWez7f5ByGzgAz0wuGcDnAHhR5c/Fe2n9rcGnoq7XW633cd/NGD3T0JnAx8aCtA/pxsk/LOBAP2LywO0bfcvwmcD2w11tl/TDRL+1UBn+83lnc22+zchs4GP9MDgng1wBoTfXf5UtJ/aPxl4Kv7hcrvtPv67Abv/dLndtl/+NGD3X8wBvrgPcL2N5C3ph/4A1x74/9/6pEaZDPOHLbfytYHawxiDUjLMHPbhbj/GbJX6m7H9UoW0H2MCRnky+NovLcNsbLD7txMDUpGchuQyGQfGhnT4fwagLCCzFGLDu4y+SWf0TTkhfZtx71plMLZfeSHtx7gdq8oytl8Fw7GhHIoB5ZFcAcmZEbEhC/5fEVAJULkUYsMHjL7JYvRNFSF9m3EnS1VkbL+qQtqPcXNGVWJsv2qGY0MVFAOqIrkakitHxIbD4P+HA44AVC+F2PARo28OY/RNDcO+qYF8cDiSj0By9Qjf1IT/1wIcCaidYe4DXPbZ878M7DtxvpinDnPs4d6HsH1lc+T2TV3D/fK+1P39ry7qix+jfYg7Uw/sl/Xg944CZAPqF9MvrcSuvR8UWWZgb+dhl39Iyra5noG+9IiQD0kx+kc94vKvxrR9vdVAH3/c5XbbL4e6w4DdT1QsnTlqojwb8MV1xehr9YShr1dvgOKZiTH0roG+9LTLx9BqQ2PoGSFjqCHjGGL0tXpGwDPnAwP95nmX273W0Hh5Qch4acQ4Xhh9rV4w9MxpZPiZ87aBvvSyy8fQckNjaJOQMdSYcQwx+lptEvDM2WKg37zmcrtXGBovrwsZL0czjhdGX6vXmZ85kftqjdFe2tFIbpBx6H21JlDWFNAMcAyxF8+9z3JVKp+fmzP6GT/D7XqzI9oh7eB2UFYCV5PINk2gtqYH+yfu2poxjsM3DcULwhdWIlYf4yF5xlVbc88hbI6jthaMvnirtH1hxWd1S08xPGOsrZWnWJtjqq01oy/e/nd8YcVstadEnlHXpjxR2BxlbV5GX2z5N31hRW+1zxMlzyhq83uitrnE2nIYfbH13/eFFY3VuZ6YeBZbW8ATo83F1BZk9MU7bvGFVbzVeZ44eB6itjaeuGwma2vL6Itt7vKFdSir23ni5nlQbcd6ErA5orb2jL54142+sA62+jhPgjxRbR08Cdv8T20dGX3xnnt9YWGrj/ew8NxbWycPk81QW2dGX7zvdl/su1QXxroY17cKr88SfsODEF8wroMU4zxebWX0xYdCfME431OM8xX1LqMvtgvxBeNzTTHGZfUBoy8+KiVfJMqzBeMeM2MsUIx9WX1UeuMioT3zEzx8e+bdPHx75t0Z+9suIXvmPTx8e+Y9PXx75r0YffG9kD3zEz18e+a9PXx75n0YffGDkD3zvp4SeUZdWz9PFDZHWVt/Rl/8KGTPfIAnSp5R1DbQE7XNJdY2iNEXu4XsmQ/2xMSz2NpO8sRoczG1DWH0xU9C9syHeuLgeYjahnnispmsbTijL34Wsmc+whM3z4NqG+lJwOaI2kYx+uIXIXvmoz0J8kS1jfEkbPM/teUz+uJXIXvmBR4WnntrK/Qw2Qy1hRh98ZuQ/agixroY17fqe8b9qN+F+IJxHaQY5/FqN6Mv/hDiC8b5nmKcr6hfGH3xpxBfMD7XFGNcVr8z+uIvIXvmLRn3zBljgWLsy4rTF3vfn+XZ952X9mX/vwU6s9/Vs19uifRhpG+i9fbZtFYgt84o3e/QbMX8zhDnsjIMErYy+OtVjC8IMmW3ytjfwEz1luqb0Fsb6mzeDIOEvQY6m8/lnc2222egs1FcE7Vfaa7c9fqZP6WU5dn/ibkD2tSvvF6f8geAmgUcQ4VBb1EwPycnPy/HG/KHwl7Lm5MbLrKAWyjPnwdqvyrMt6ywlV8QVjl7IuvLDxaC1blWyIJ/wjmhIJjtzwv5g2Gf5feHrFzltwrygkWhgArk5xXk+Lz54VyfVahyfFYgT+1h9vnet9RSdifYptw87fpywOe5gIB+CmdFcHcu7vEWMPS2ROY29+K2COr4kOd8F7zzMTy74K8IXV7GwU8Y7tcFBhiCalF43xVkDNB5hpybwtx+nDa3QXWpoM/rDfjs3wuGLOUPFXqDXm+owG8VWvmF3qI8v8oL+71+X2GosADqzFdhK5xfmBcO7uNVmjOUNoZmKG0zDBJua2CG0s7lMxTb7nZCZih5mit3vccyd1YnWNv1phjqr/Yyxm+gLdq7/J2frQ3ZfZzL7TY1O+/A3Pcratvbo32a45DcQdtgIwfpc5HsTHI6ws/jAZ30LLKsZ/8eEXV1YGprE3XnWbmFBXmFvjKEDdx9pUUG/0SJm2NXj/s5thTQjmEB7djE0MSdm2dHITybM8ds5+qc4Tnw4ibeWcgKrjnjpL2LoZf0dNEv6SnNVZ2pjtc1wyDhrgZWdSe4fFVn231CKa3qrMSuvW+pe8/A29qyKrnb7vMMvaWuYiUzQZb7LXXdGAMjo69VRZf3G3u8vG+g31Rxud1rDI2XqkLGS3fG8cLoa8XZftRbHbuhnYHuSG5UzFsde0BZT0AvwIml8FbHHozzgd7Yz7lWbi5s6ltFPiusLC/s+uflFUCCMV8V5RSqXEgE5BYVwt8p9AVz8vIhRxkK+v35KlhQ6MuBTGVpTg57G5oc9skwSLiPgclhX5dPDm27+xo6AWMf40rxmO9sPYQkenHg6afbvL/+OUD/HIhzutxPt76Glp8D0D5uZMTuhyJzfyQPKCZiD4KywYCTAEMyzH2/VQ/d+bnb+XDDsyeOfjDIgN1HGJo9cZ/JZQwYahBjXYz9RnH6wg7m5ZA/8BN5qB247F9I9ZTO1GIoY7THT6dhOgIPj9z45D5SM5RxSjAs+roKS6hLDWeesx3ybF5iV0ln1LyFYeXLKQrkWLn5/pxQrs8b8gaskD8nrKAhvHl+aIZwoR8mx15f2BvwFpo8m1dGdyznSTdcyyPg50jAqFI+EzdK4Jm40XpAjok8Ezdan4nDF/dgHcV4/m0048AfIyR7wmlzvtDzb/mGFsMFGQYJFxhYDBe6fDFs211YSpkSjgBQaGAOHzJ0/i1k8PybvQv+joHd4Jou3wVfZWgXvJaQXfAixrUXo69VLQFZo20G+k0dl9t9rqHxUlfIeAkzjhdGX6u6zFkjvPK0/1+EVmBhJDfUz8+SVmtj4ec4wPhSXq2NF7ham6DnTxMjV2sTSmG1Np5xtTaBcbI6UchqjdPmSUJXa5MMrdYmZxgkPNnAam2Ky1drtt1ThKzWJmqu3PVONbRam5px8BOO23+cQdE017GMXLN1PdOgzumAGYCZgFmA2YA5gLmAkwHzAPMBCwCnAE4FnAY4HbAQsAiwGLAEcAbgTMBZgLMBSwHnAJYBlgNWAFYCVgHO1U9n7HObT6bnQN10QjeD0M0kdLMI3WxCN4fQzSV0JxO6eYRuPqFbQOhOIXSnErrTCN3phG4hoVtE6BYTuiWE7gxCdyahO4vQnU3olhK6cwjdMkK3nNCtIHQrCd0qQneu1uGL+y1YYxmfX9PYJpaWms7IK9vlGXfbZtsXM1jab59fZyZel9fJec5i9EV9N/vCvz/POzsxmy2cM56TSF3eA/PPcxl90cCdvrAic+4nx2lzbvjg/P28+OoKUmcB5jP6oqHbfBGkzz8siN3mwKHOUpwSa12BQ5/LOJXRF43c4wtvcWdRTovF5kDx51pOj76uEs/ILGT0RWM3+CJQIk+1KDqbrShsVoujqcuKqv3UEkZfHP3v+iInSp7qjJJs9kdtszqz2Lr84RjaT53F6Ism/5YvAjHxVGcf2uZgjDarpYeoKy8cc/upcxh90bT0fWHFwVMto2y24rJZLT+4LhVn+6kVjL5oVpq+CMXNU6080GZfAjarVagubzih9lPnMvrimFLyhZXYpRj3BxTj+lbh9VmivmguxBeM6yDFOI9XjRl90UKILxjne4pxvqKaMvqipRBfMD7XFGNcVs0ZfdGqlE4IWYldinH8Ksb+pzjbz+6/YUC2ru9cnRNbqXNky3XO7BydQztb59TO1Dm2JTrntkjn4E7XOblTdY5ugc7ZzdM5vLk6pzdb5/hm6pyfnQew8wqRV+ShjkT73jjGec/qDLZDHaX6knzM20rwwnzPyzBI2K6cu941jJ3BlN1r0KBgqndvZ0vxlM6xvXEZZoJ9ZJskOgBxR16bYfBz52v4GuSAz51j0jFyLizpyJnN2a4/1iN2JTX6WsYBeD5zVHPa1a53YZx9Qdmf81FW2Mrzwk5OoDA3UJAX8hYE88O+cI4v5Iu3XUvq7JzteoGhdr0g/nb9v+ivFxpq1wv/4/31IkPtepFu19L8eD/nwxM/7C/Wk4pL7GeGiQfcWgOztbXMMwlTdsc6OKwY7E6U4zrDbWgldim7Y67L4PfNpYaCwqXFBFsrsUtdYqgtLjPUFpcZbItxhtqivctfTmRqPBz379pd4tESU32/g5CtR8Z+qRh9rTjbz55I2duP1C6EJ8b2LKk/4TpNPLO42gRPKtcXtwthJXapdYYeAuuL2YUooRpV0t+xOa83EBQ6uyQ3FMvkLVGbL89wZ4Dh9AXul5ejyUm8/impzTn9cwXOLfh8MDZCARUOhX05gTxvgcr15eaG/eFAbtAfCuf480OBIuXP93nzigJWWAWLigI5vsJAbjgvVJgbxkFbhXw+fyivoFDleHPzC6xgyJdvhf0BHyz4Q75AKOQL5ubm+3yh3GA4mAeLdFj6B62cQCDPyvX68rym/HMFWl1zPRRK2s3BdUp5KFwp8aFwpeGHwpUGHgpdXfJQOGQnDuz7ZD5n0LnKpQ+FroaCzlUMD4WStjY5/XO1Sx8Kpvxz9f/Rlus1esv1WmrL1UrsOmS+gzNXmWhdjNu3yoTjnTbkfs+QqTZMtK4NLveHPWA2GHiwX2doknOdwe3Paw21xfWG2uJ6w1vBJtqim8u3gk2Nh+4u3wo21fd7CNkKZuyXitHXqkdyKzjy2vvM4moTPNm9weSqf4Ohh8ANBlf9NucbDASF3kK2gjcwTgQ3ZrgzwPQ2tKrcWApbwZz+uZFx1d+DcdVvyj83Ev6J9UxNSVu/nP65yVD8vImhHUraneJsh5sNtcPNwvrDLYba4RZh/eFWQ+1waxSpIjdP7Ai6bP0YTxpvkzhpvM3wpPE2A5PGvu54j1BhaQa52xnr4pw09jU0Kbk9ikljoqfrOf1zRwbfRI9z0mjKP3cwPBxLuFjfmXEnW/wMmvlOcb3rxp1R4uzjd7k8g2H7+C4Dz5u7DT177Xoz9f/DnoMvrr/p1Mfd3p3S3M/xHu6JpJRO29/l6RXb5nsM2D1AyItH7mEMzPcyBmbGfqM4fWE4SP6TpvgvBsl7/6tB8r4Ms0HSSuxSts33GbD7fkMzmvsz9r9Z38THPakZspXYpThnyA+4vD/ZK6oHDPSnBwWMowcN2P2QoXH0UDHjyErsMhZTBrv8+xdN9YGThHz/4sOMk0RGX6uTDO1QPZxcXRvn+IjpiSPHKvMRA4N+mJBV5iMCBn2ivhguJAA/yugLxv6nhidX6SKC7aOcwVbqU3FTqvs5Pmbq8AL3U+xxPqJeqR3q8Qz3c3xCSod6ko+oT2qHelJAh3pKSod6mo+oX2qHelpAh3pGSod6lo9ojtQO9ayADvWclA71PB/RXKkd6nkBHeoFKR3qRT6iAakd6kUBHeolKR3qZT6iQakd6mUBHWqTlA71Ch/RPKkd6hUBHepVKR3qNT6i+VI71GsCOtTrUjrUZj6iBVI71GYBHeoNKR3qTT6ihVI71JsCOtRbyRyZpR4WkCN7W8rI38JHtEhqh9oiYORvTY58S90nYOS/I2Xkb2MjqiypHWqbgJH/rpQO9R5fh1JSO9R7AjrU+1I61Ad8HUrs+Z0PBHSoD6V0qO18HUrs+Z3tAjrUR1I61Md8HUrs+Z2PBXSoT6R0qE/5OpTY8zufCuhQn0npUJ/zdSix53c+F9Chvkju70BGV8D+zpdSRv4OvpEv9lzMDgEj/yspHeprvg4l9lzM1wI61DdSOtROvg4l9lzMTgEd6tvk3MRS1wuYm3wnZeTv4hv5Ys+b7BIw8r+X0qF+4OtQIakd6gcBHepHKR1qN1+HEnsuZreADvWTlA71M1+HCkvtUD8L6FC/mOpQ3F/kx/hyT4VfcJhoR//VUANyD8jf2Hj6AjY3+91W9RHXX/UL2mz5MSQ/geSnkPwMkp9D8gtIfgnJm5D8KpJfR/IbSH4LyW8jeSuS30Hyu0h+H8kfIvkjJH+C5M+Q/AWSv0TyV0j+BsnfIvk7JH+P5B+R/BOSf0Hyb1r+HX7+AfgT8BdgD+BvgKcs/B4gBZAKSAOkAzIAZQGZgHKA8oAKgCxARUAlQGVAFUBVQDXAYYDDAUcAqgNqAGoCapU9+PuEuANWGb66rGxdz5HAuzagDqAuoB7gKEA2oD6gAaAhoBGgMeBoQBNAU0AzwDGA5oAWgJaAVoDWAAugAF6AD+AH5AByAQFAEJBXdl8j2XY5Lzu0+Th+dXS1CV0dQleX0NUjdEcRumxCV5/QNSB0DQldI0LXmNAdTeiaELqmhK4ZoTuG0DUndC0IXUtC14rQtSZ0FqFThM5L6HyEzk/ocghdLqELELogocsru//ltM7F/d5CPGYTfY7ZYyPRuorC9mWp2mX5eI1yx9dYFWuz7Ys6LO23z691E6/L63yxcD1GX4x2sy/8+79M+ajEbLbwFzNnJ1KX98Avea7P6Isx7vSFFfnF1g3itDk3fPCXZDeMr64g9YXbjRh9ke82XwTpLxlvHLvNgUN9YfnRsdYVOPSXnzdh9EWBe3zhLe4L35vGYnOg+C+PbxZ9XYUlfRH9MYy+KHSDLwIl8lTNo7PZisJm1SKauqyo2k+1ZPRF6N/1RU6UPFWrkmz2R22zal1sXf5wDO2nLEZfFP1bvgjExFOpQ9scjNFm5T1EXXnhmNtP+Rh9ES59X1hx8FR+ymYrLptVzsF1qTjbT+Uy+mJsafoiFDdPFTjQZl8CNqsgqssbTqj9VB6jL8YJ+e4Gxv0Bxbi+VWMYv7thvBBfMK6DFOM8XhUy+mKCEF8wzvcU43xFhRl9MVGILxifa4oxLqvxjL6YVErfL2MldinG8asY+5/ibD8nN5itf+J8RGS+AuczcL4D50NwvgTnU3C+BedjcL4G53Nwvgfng3C+COeTcL4J56Nwvgrns3C+C+fDcL4M59Nwvg3n43C+DufzcL4P5wNxvhDnE3G+sTySKyA5C8kVkVwJyZWRXAXJVZFcDcmHIflwJB+B5OpIroHkmkiuheTfUU78DyT/ieS/kLwHyX8j2YPqLIPkFJxDQ3IaktORnIHkskjORHI5LTsBpQ38vy2gHeBYQHvAcfacGdARcDygE6AzoAugK+AEQDdAd0APQE9AL8CJgN6APoC+gH6A/oABgIGAQYDBgJMAQwBDAcMAwwEjACMBowCjAWMA+YACQCEgBCgChAFjAeMA48vq/uLZHxPt/3ezzyJouTuSG2XodkW/OwyVD9fyBKh3ImASIF3X79yDLyemdNA/rcQuNamsoQNSvDy9uC0ml933c0pZz4HJXrvgrwgC3A+uSQyLu30J2nB4MuNCcYohR6Ywtx+nzVNRXQo2+mGD3v69YAj2aUKwxe71hgr8VqGVX+gtyvPDHpff6/cVhgph0zGYr8JWOL8wLxzcx8sedBU8+wcYvrgH3dSy/JMM+5pW1iDhaWX5653O2BlM2T297P4GZqqX5MoRAKaX5a93BnNndYK1Xa/p03ScQdE01wmMXLN1PTOhzlmA2YA5gLmAkwHzAPMBCwCnAE4FnAY4HbAQsAiwGLAEcAbgTMBZgLMBSwHnAJYBlgNWAFYCVgHOBawGnAdYo5/O2Oczyx58QmsWoZtN6OYQurmE7mRCN4/QzSd0CwjdKYTuVEJ3GqE7ndAtJHSLCN1iQreE0J1B6M4kdGcRurMJ3VJCdw6hW0bolhO6FYRuJaFbRejOJXSrCd15hG5NWfMn/yYwPr9msk0sLTWLkdcpQk7+zWZpv31+nZN4Xf+c/JvL6ItThZz8Ozkxmw84+TcvkboiTv7NZ/TFaUJO/i2I02bq5N8p8dVFnvw7ldEXpws5+Xda7DYf8uTf6bHWVczJv4WMvlgo5OTfolhsLuHk3+Lo6yrx5N8SRl8sEnLy74zobI7q5N+Z0dQV5cm/sxh9sVjIyb+zS7I5hpN/S8vynfw7h9EXS4Sc/FtWlu/k3/KyfCf/VjD64gwhJ/9WluU7+beqLN/Jv3MZfXGmkJN/q8vynfw7ryzfyb81jL44S8ipGsb9AcW4vlWnMZ6qOVuILxjXQYpxHq8WMfpiqRBfMM73FON8RZ3B6ItzhPiC8bmmGOOyOpvRF8uEnPxjHL+Ksf8pzvaz++9EQLaub43Oia3WObJVOme2QufQlumc2lKdYztL59zO0Dm4xTont1Dn6E7TObtTdA5vvs7pnaxzfHN0zs/OA9h5hcgr8lBHwieAGec9a8uyHeqwSvNQB+ZtJXhhvueXNUjYrpy73gsYO4Mpuy9Ag4Kp3r2dLcVTOsf2JpY1E+wj2yTRAYg78oWor7GfUrmAr0EUziJj0jFyLizpyJnN2a4/1iN2JTX6hYwD8CLmqOa0q13vwjj7grI/S6SssJXnhZ2cQGFuoCAv5C0I5od94RxfyBdvu5bU2Tnb9WJD7Xpx/O36f9FfLzHUrpf8x/vrOkPtuk63azrSRV5ufnjih/2lelJxmf3MMPGAu9DAbO1C5pmEKbtjHRxWDHYnynG94Ta0EruU3THXl+X3zeWGgsLlxQRbK7FLXWaoLa4w1BZXGGyLiYbaYl0ld8cUU+Ph0n/X7hKPlpjq+5cJ2Xpk7JeK0deKs/3siZS9/UjtQnhibM+S+hOu08Qzi6tN8KTyyuJ2IazELrXe0EPgymJ2IUqoRpX0d2zOVxoICle6JDcUy+QtUZuvKuvOAMPpC9wvr0KTk3j9U1Kbc/rnapxb8PlgbIQCKhwK+3ICed4ClevLzQ37w4HcoD8UzvHnhwJFyp/v8+YVBaywChYVBXJ8hYHccF6oMDeMg7YK+Xz+UF5Bocrx5uYXWMGQL98K+wM+WPCHfIFQyBfMzc33+UK5wXAwDxbpsPQPWjmBQJ6V6/XleU3552q0uuZ6KJS0m4PrlPJQuEbiQ+Eaww+Faww8FK52yUPhkJ04sO+T+ZxB51qXPhSuNhR0rmV4KJS0tcnpnw0ufSiY8s+G/6Mt1+v0luv11Jarldh1yHwHZ64y0boYt2+VCcc7bZgqpA0TresGl/vDHjA3GHiwbzQ0ydlocPvzekNtcaOhtrjR8Fawiba41uVbwabGwwaXbwWb6vvXCdkKZuyXitHX6rrkVnDktfeZxdUmeLJ7k8lV/w2GHgI3GVz125xvMvFAFLIVfAPjRPDmsu4MMDcaWlXeXApbwZz+uYVx1X8d46rflH9uIfwT65makrZ+Of1zq6H4eStDO5S0O8XZDrcZaofbhPWH2w21w+3C+sMdhtrhjihSRW6e2BF02foxnjTeKXHSeKfhSeOdBiaNN7vjPUKFpRnk7uJMazBOGm82NCm5K4pJY6Kn6zn9c3dZvoke56TRlH/uZng4lnCxvjPjHrb4GTRyEPsCvevGnVHi7OP3ujyDYfv4XgPPm/sMPXvtejP1/yd6Dr64/qZTH3d7d0pzP8f7uSeSUjrtrS5Pr9g232/A7tuEvHjkfsbA/ABjYGbsN4rTF4aD5D9piv9ikHzgvxokH3T5x/Nsmx80YPdDhmY0D5Xd/2Z9Ex/3pGbIVmKX4pwhP+zy/mSvqB420J8eETCOHjFg96OGxtGjxYwjK7HLWEy5s9J/sw/cVUrnWhLl+RjjJJHR1+ouQztUjyVX18Y5Pm564sixynzcwKC/V8gq83EBgz7h7TkhAfgJRl8w9j91X3KVLiLYPsEZbKU+FTelup/jk0lHwZMnw/0cn0o6CnqrAEc9nXQUNIIARz2TdJSlnhXgqGeTjrLU8wIc9VzSUZZ6UYCjnk86ylIvC3DUC0lHWeoVAY56MekoS70mwFEvJR1lqc0CHPVy0lGWelOAozYlHWWphwXs9b2SdJSltggYUa8mHQWpHgEj6rWkoyy1TcCIej3pKEu9J8BRm5OOstQHAhz1RtJRltouwFFvJh1lqY8FOOqtpKMs9akAR72ddJSlPhfgqC1JR8FiUsA6amvSUZbaIWBEvZN0lKW+FuCobUlHWWqnAEe9m3SUpa4X8Ix6L+koS+0SMKLeTzrKUj8IcNQHSUdZarcAR32YdJSlfhbgqO2mXkXJ/eJ6xpdZqEcYX4rwEfOH5O3PSNZHzv5If9DXlp9E8lNIfhrJzyD5WSQ/h+TnkfwCkl9E8ktIfhnJm5D8CpJfRfJrSH4dyZuR/AaS30TyW0h+G8lbkLwVye8geRuS30Xye0h+H8kfIPlDJG9H8m8Z++SPQfcJ4FPAZ4DPAV8AvgTsAHwF+BrwDWAn4FvAd4BdgO8BPwB+BOwG/AT4GfAL4FfAb4DfAX8A/gT8BdgD+Btg//EymQe/l5Y7EJThq8vK1vWkAO9UQBogHZABKAvIBJQDlAdUAGQBKgIqASoDqgCqAqoBDgMcDjgCUB1QA1ATUAtwJKA2oA6gLqAe4ChANqC+diD+0LzNx/Gro0sldGmELp3QZRC6soQuk9CVI3TlCV0FQpdF6CoSukqErjKhq0LoqhK6aoTuMEJ3OKE7gtBVJ3Q1CF1NQleL0B1J6GoTujqEri6hq0fojiJ02YSufub+l5w4F/fn3/GYTfQ5Zo+NROsq2vsdkpZKzeTj9aA7XodcrM22L9JY2m+fX9MTr8vrfEFNBqMvHnKzL/z7v5SnbGI2W/gLfjITqct74JcFlWP0xcPu9IUV+QVJ5eO0OTd88JctVYivriD1xU1ZjL54xG2+CNJfVlUxdpsDh/riq0qx1hU49JdoVWb0xaPu8YW3uC8OqxKLzYHiv4SsavR1lfgFedUYffGYG3wRKJGnOiw6m60obFaHR1OXFVX7qSMYffH4v+uLnCh5quol2eyP2mZVo9i6/OEY2k/VZPTFE/+WLwIx8VS1Dm1zMEab1ZGHqCsvHHP7qdqMvniy9H1hxcFT1aFstuKyWdU9uC4VZ/upeoy+eKo0fRGKm6c66kCbfQnYrLJRXd5wQu2n6jP64mkh7wBk3B9QjOtb9TDjOwCfEeILxnWQYpzHq8cYffGslHdjMrYf43xFPcnoi+eE+ILxuaYY47J6htEXzwv5AnTG8asY+5/ibD8nN5itf+J8RGS+AuczcL4D50NwvgTnU3C+BedjcL4G53Nwvgfng3C+COeTcL4J56Nwvgrns3C+C+fDcL4M59Nwvg3n43C+DufzcL4P5wMPyBciGecbf0A55R+RvBvJPyH5ZyT/guRfcW4ayb8j+Q8k/4nkv5C8B8l/I9mDOJdB8sfodz5B8qdI/gzJnyP5CyR/ieQdSP4KyV8j+Rsk70Tyt0j+Dsm7kPy9lp2A0gD+0xDQCNAYcDSgCaApoBngGEBzQAtAS0ArQGuABVAAL8AH8ANyALmAACAIyAO0AbQFtAMcC2gPOA7QAdARcDygE6AzoAugK+AEQDdAd0APQE9AL8CJgN6APoC+gH6Z5s8AtGA8sJSt6+kPvAcABgIGAQYDTgIMAQwFDAMMB4wAjASMAowGjAHkAwoAhYAQoAgQBowFjAOMB0wATARMAkwGTAFMBUwDTNcdAedl+2cenKsdQOgGErpBhG4woTuJ0A0hdEMJ3TBCN5zQjSB0IwndKEI3mtCNIXT5hK6A0BUSuhChKyJ0YUI3ltCNI3TjCd0EQjeR0E0idJMJ3RRCN5XQTSN00zPNnwHAYzbROZw9NhKtyzkDMCCTj9dWIWcABrK03z6/Dkq8rn/OAAxm9MU7Qs4AnJSYzQecARiSSF0RZwCGMvpim5AzAMPitJk6AzA8vrrIMwAjGH3xrpAzACNjt/mQZwBGxVpXMWcARjP64j0hZwDGxGJzCWcA8qOvq8QzAAWMvnhfyBmAwuhsjuoMQCiauqI8A1DE6IsPhJwBCJdkcwxnAMZm8p0BGMfoiw+FnAEYn8l3BmBCJt8ZgImMvtgu5AzApEy+MwCTM/nOAExh9MVHQs4ATM3kOwMwLZPvDMB0Rl98LCS/xrg/oBjXt2obY37tEyG+YFwHKcZ5vHqf0RefCvEF43xPMc5X1HZGX3wmxBeMzzXFGJfVJ4y++FzIGQDG8asY+5/ibD/TucKufHX9kyucAXOXmYBZgNmAOYC5gJMB8wDzAQsApwBOBZwGOB2wELAIsBiwBHAG4EzAWYCzAUsB5wCWAZYDVgBWAlYBzgWsBpynkzc4fzODyOnMJHSzCN1sQjeH0M0ldCcTunmEbj6hW0DoTiF0pxK60wjd6YRuIaFbROgWE7olhO4MQncmoTuL0J1N6JYSunMI3TJCt5zQrSB0KwndKkJ3LqFbTejOyzSfK8RjNtFYP4Ml17UvVziTcc3ys5Bc4SyW9tvn19mJ1/VPrnAOoy9+EZIrnJuYzQfkCk9OpK6IXOE8Rl/8KiRXOD9Om6lc4YL46iJzhacw+uI3IbnCU2O3+ZC5wtNirauYXOHpjL74XUiucGEsNpeQK1wUfV0l5goXM/riDyG5wiXR2RxVrvCMaOqKMld4JqMv/hSSKzyrJJtjyBWencmXK1zK6Iu/hOQKz8nkyxUuy+TLFS5n9MUeIbnCFZl8ucKVmXy5wlWMvvhbSK7w3Ey+XOHqTL5c4XmMvvBUlrEPz7g/oBjXt+pXxn34MkJ8wbgOUozzePUHoy9ShPiCcb6nGOcrag+jL1KF+ILxuaYY47LCcSVRX6QZ8gV3rpBx/CrG/qc42890rrClgc8VroG5y1rA+YALABcCLgJcDLgEsA5wKeAywHrA5YArAFcCrgJcDbgGcC1gA+A6wPWAGwAbATcCbgLcDLgFcCvgNsDtgDt08gbnb9YQOZ21hO58QncBobuQ0F1E6C4mdJcQunWE7lJCdxmhW0/oLid0VxC6KwndVYTuakJ3DaG7ltBtIHTXEbrrCd0NhG4jobuR0N1E6G4mdLcQulsJ3W2E7nZCd0em+VxhS8bPFa5hyXXtyxWuZVyzHF5K84FEc4Xns7TfPr9ekHhd/+QKL2T0xRFu9gXKFV6UmM0H5AovTqSuiFzhJYy+qO5OXxyUK1wXp81UrvDS+Ooic4WXMfqihtt8cYhc4frYbT5krvDyWOsqJld4BaMvarrHF8XmCq+MxeYScoVXRV9XibnCqxl9UcsNvogiV3hNdDZHlSu8Npq6oswVbmD0xZH/ri+izhVeV5LNMeQKr8/kyxXewOiL2v+WL2LMFW7M5MsV3pjJlyu8idEXdUrfF3HlCm/O5MsV3pLJlyu8ldEXdUvTFwnkCm/L5MsV3p7Jlyu8g9EX9YTswzPuDyjG9a2qzrgPf5QQXzCugxTjPF7VYvRFthBfMM73FON8RdVh9EV9Ib5gfK4pxrisjmL0RQMhuULG8asY+59qIChXGOar659c4Z0wd7kLcDfgHsC9gPsA9wMeADwIeAjwMOARwKOAxwCPA54APAl4CvA04BnAs4DnAM8DXgC8CHgJ8DJgE+AVwKuA1wCv6+QNzt/cSeR07iJ0dxO6ewjdvYTuPkJ3P6F7gNA9SOgeInQPE7pHCN2jhO4xQvc4oXuC0D1J6J4idE8TumcI3bOE7jlC9zyhe4HQvUjoXiJ0LxO6TYTuFUL3KqF7jdC9nmk+V4jHbKKx/k6WXNe+XOFdjGsWr5Bc4d0s7bfPr/ckXtc/ucJ7GX3hE5IrvC8xmw/IFd6fSF0RucIHGH3hF5IrfDBOm6lc4UPx1UXmCh9m9EWOkFzhI7HbfMhc4aOx1lVMrvAxRl/kCskVPh6LzSXkCp+Ivq4Sc4VPMvoiICRX+FR0NkeVK3w6mrqizBU+w+iLoJBc4bMl2RxDrvC5TL5c4fOMvsgTkit8IZMvV/hiJl+u8CVGX7QRkit8OZMvV7gpky9X+AqjL9oKyRW+msmXK3wtky9X+DqjL9oJ2Ydn3B9QjOtb5Wfchz9WiC8Y10GKcR6vAoy+aC/EF4zzPcU4X1FtGH1xnBBfMD7XFGNcVscy+qKDkFwh4/hVjP1PdRCUK2xi4HOFm2Hu8gbgTcBbgLcBWwBbAe8AtgHeBbwHeB/wAeBDwHbAR4CPAZ8APgV8Bvgc8AXgS8AOwFeArwHfAHYCvgV8B9gF+F4nb3D+ZjOR03mD0L1J6N4idG8Tui2Ebiuhe4fQbSN07xK69wjd+4TuA0L3IaHbTug+InQfE7pPCN2nhO4zQvc5ofuC0H1J6HYQuq8I3deE7htCt5PQfUvoviN0uwjd95nmc4VNGD9XuJkl17UvV/gG45qlr5Bc4Zss7bfPr28lXtc/ucK3GX3RT0iucEtiNh+QK9yaSF0RucJ3GH3RX0iucFucNlO5wnfjq4vMFb7H6IsBQnKF78du8yFzhR/EWlcxucIPGX0xUEiucHssNpeQK/wo+rpKzBV+zOiLQUJyhZ9EZ3NUucJPo6krylzhZ4y+GCwkV/h5STbHkCv8IpMvV/gloy9OEpIr3JHJlyv8KpMvV/g1oy+GCMkVfpPJlyvcmcmXK/yW0RdDheQKv8vkyxXuyuTLFX7P6IthQvbhGfcHFOP6VvVn3IcfLsQXjOsgxTiPV4MYfTFCiC8Y53uKcb6ihjD6YqQQXzA+1xRjXFbDGX0xSkiukHH8Ksb+pzjbz84/ZKG2s/9fBLmCPVoOI7lhxr6fKeh3h6Hy4Vr+AeYWPwJ2A9J1/Smegy/uvOTuTDP9ysPL04vb4ied+Pk5MilkF/wVQYC7g+9mS+SEwz8xTih/NuTIFOb247T5F1SXgg1B2Mizfy8YspQ/BFtxXm+owG8VWvmF3qI8P6yF/V6/rzBUCJsTwXwVtsL5hXnh4D5e9qCr4Nk/wPDFPeh+yeQNRs71a6ZBwnbl3PX+xtgZTNn9W+b+Bmaql+TKEQB+y+Sv93fmzuoEa7te06duOIOiaa4/MHLN1vX8AXX+aT8UAXsAf9t9uRxwB6QAUgFpgHRABqAsIBNQDlAeUAGQBagIqASoDKgCqAqoBjgMcDjgCEB1QA1ATUAtwJHlPAedEPqDOMnxJ6H7i9DtIXR/EzrbvkhdGUKXQuhSCV0aoUsndBmEriyhyyR05QhdeUJXgdBlEbqKhK4SoatM6KoQuqqErhqhO4zQHU7ojiB01QldDUJXk9DVInRHljN/QugHxufXH4wnhP5k5DVFyAmhvxhPCO1hPCH0N6Mvpgo5IWTH4ATqOuCEUJlE6oo4IZRSjs8X04ScEEqN02bqhFBafHWRJ4TSGX0xXcgJoYzYbT7kCaGysdZVzAmhTEZfzBByQqhcLDaXcEKofPR1lXhCqAKjL2YKOSGUFZ3NUZ0QqhhNXVGeEKrE6ItZQk4IVS7J5hhOCFUpx3dCqCqjL2YLOSFUrRzfCaHDyvGdEDqc0RdzhJwQOqIc3wmh6uX4TgjVYPTFXCEnhGqW4zshVKsc3wmhIxl9cbKQ7Dvj/oBiXN+qaYzZ93lCfMG4DlKM83g1k9EX84X4gnG+pxjnK2oOoy8WCPEF43NNMcZlNY/RF6cIOSHEOH4VY/9TnO1n99/ZgGxd35E6J1ZT58iq65zZ4TqHVk3n1KroHFslnXPL0jm48jonl6lzdBk6Z5emc3gpOqdn77v+rXN9f+nc3x+RSRDPwYc6Eu17PzLucdcux3aowyrNQx2Yt5XghfnWKWeQsF05d711GSfBpuyuW25/AzPVu7ezpXhK59jej6V0bC/RAYg7cj3U19hPqdTlG30KZ5Ex6Rg5F5Z05MzmbNcf6xG7khq9HuMAPIo5qjntate7MM6+oKDtCpUVtvK8sJMTKMwNFOSFvAXB/LAvnOML+eJt15I6O2e7Zhtq1+z42/X/or/WN9Su9f/j/bWBoXZtoNs1HekiLzc/PPHDvqGeVDSynxkmHnD1DMzW6pXjnUmYsjvWwWHFYHeiHBsbbkMrsUvZHbNxOX7fHG0oKBxdTLC1ErtUI0Nt0cRQWzQx2BZ2IDTRFisquzummBoPK/9du0s8WmKq768SsvXI2C8Vo68VZ/vZEyl7+5HahfDE2J4l9Sdcp4lnFleb4Ell0+J2IazELtXY0EOgaTG7ECVUo0r6OzbnpgaCwhqX5IZimbwlanOzcu4MMJy+wP2yGZqcxOufktqc0z/H4NyCzwdjIxRQ4VDYlxPI8xaoXF9ubtgfDuQG/aFwjj8/FChS/nyfN68oYIVVsKgokOMrDOSG80KFuWEctFXI5/OH8goKVY43N7/ACoZ8+VbYH/DBgj/kC4RCvmBubr7PF8oNhoN5sEiHpX/QygkE8qxcry/Pa8o/x6DVNddDoaTdHFynlIdCc4kPheaGHwrNDTwUznfJQ+GQnTiw75P5nEGnhUsfCucbCjotGB4KJW1tcvqnpUsfCqb80/L/aMu1ld5ybU1tuVqJXYfMd3DmKhOti3H7VplwvNOGqULaMNG6LJf7wx4wloEHuzI0yVEGtz9bG2oLr6G28BreCjbRFhe6fCvY1Hi4yOVbwab6/sVCtoIZ+6Vi9LW6OLkVHHntfWZxtQme7PpMrvotQw8Bn8FVv83ZZyAoXCZkK9hinAj6y7kzwFxmaFXpL4WtYE7/5DCu+i9mXPWb8k8O4Z9Yz9SUtPXL6Z9cQ/Ezl6EdStqd4myHgKF2CAjrD0FD7RAU1h/yDLVDXhSpIjdP7Ai6bP0YTxrbSJw0tjE8aWxjYNJ4uTveI1RYmkGuLWNdnJPGyw1NStpGMWlM9HQ9p3/aleOb6HFOGk35px3Dw7GEi/WdGceyxc+gkYPYdfWuG3dGibOPt3d5BsP2cXsDz5vjDD177Xoz9f9new6+uP6mUx93e3dKcz/HDtwTSSmd9kqXp1f2BhMDdl8l5MUjHRgDc0fGwMzYbxSnLwwHyX/SFP/FINnxvxokj3f5x/Nsm483YHcnQzOaTuX2v1nfxMc9qRmyldilOGfInV3en+wVVWcD/amLgHHUxYDdXQ2No67FjCMrsctYTLm28n+zD2wopXMtifI8gXGSyOhrtcHQDtUJydW1cY7dTE8cOVaZ3QwM+huErDK7CRj0ifpio5AA3J3RF4z9T21MrtJFBNvunMFW6lNxU6r7OfZIOspSj2e4n2PPpKMs9aQAR/VKOspSTwtw1IlJR1nqWQGO6p10lKWeF+CoPklHWepFAY7qm3SUpV4W4Kh+SUdZ6hUBjuqfdJSlXhPgqAFJR1lqswBHDUw6ylJvCnDUoKSjLPWwgL2+wUlHWWqLgBF1UtJRlrpPwIgaknSUpbYJGFFDk46y1HsCHDUs6ShLfSDAUcOTjrLUdgGOGpF0lKU+FuCokUlHWepTAY4alXSUpT4X4KjRSUdZ6lUB66gxSUdZaoeAEZWfdJSlvhbgqIKkoyy1U4CjCpOOstT1Ap5RoaSjLLVLwIgqSjrKUj8IcFQ46ShL7RbgqLFJR1nqZwGOGmfqVZTcL65nfJmF6sL4UoTxzB+Stz8jWR85e7z+oK8t90ByTyT3QvKJSO6N5D5I7ovkfkjuj+QBSB6I5EFIHozkk5A8BMlDkTwMycORPALJI5E8CsmjkTwGyflILkByIZJDSC5CchjJY5E8Dsm/ZeyTJ4BuImASYDJgCmAqYBpgOmAGYCZgFmA2YA5gLuBkwDzAfMACwCmAUwGnAU4HLAQsAiwGLAGcATgTcBbgbMBSwDnoM77bPfuvDkz9LjNZX7K+ZH3J+pL1JetL1pesL1mfm+tTyfZL1pesL1lfsr5kfcn6kvX9t+vLY64vt5C3voI83voKfc7e5PTM/fuU05A8FclTkDwZyZOQPBHJE5A8HsnjkDwWyWEkFyE5hORCJBcgOR/JY5A8GsmjkDwSySOQPBzJw5A8FMlDkHwSkgcjeRCSByJ5AJL7I/k8JK9G8rlIXoXklUhegeTlSF6G5HOQvBTJZyP5LCSfieQzkLwEyYuRvAjJC5F8OpJPQ/KpSD4FyQuQPB/J85B8MpLnInkOkmcjeRaSZyJ5BpLvQPLtSL4Nybci+RYk34zkm5B8I5I3IvkGJF+P5OuQvAHJ1yL5GiRfjeSrkHwlkq9A8uVIXo/ky5B8KZLXIfkSJF+M5IuQfCGSL0Dy+Uhei+Q1SH4dya8h+VUkv4LkTUh+GckvIflFJL+A5OeR/BySn0XyM0h+GslPIflJJD+B5MeR/BiSH0XyI0h+GMkPIflBJD+A5PuRfB+S70XyPUi+G8l3IflOJH+P5F1I/g7J3yJ5J5K/QfLXSP4KyTuQ/CWSv0Dy50j+DMmfIvkTJH+M5I+QvB3JHyL5AyS/j+T3kPwukrch+R0kb0XyFiS/jeS3kPwmkt9A8mYkz0d5wgVIPgXJpyL5NCSfjuSFSF6E5MVIXoLkM5B8JpLPQvLZSF6K5HOQPAHJE5E8CcmTkTwFyVORPA3J05E8A8kzkTwLybORPAfJc5F8MpLnaXmXZ9+1DP6/HLACsBKwCnAuYDXgPMAawFrA+YALABcCLgJcDLgEsA5wKeAywHrA5YArAFcCrgJcDbgGcC1gA+A6wPWAGwAbATcCbgLcDLgFcCvgNsDtgDsAdwLuAtwNuAdwL+A+wP2ABwAPAh4CPAx4BPAo4DHA44AnAE8CngI8DXgG8CzgOcDzgBcALwJeArwM2AR4BfAq4DXA64DNgDcAbwLeArwN2ALYCngHsA3wLuA9wPuADwAfArYDPgJ8DPgE8CngM8DngC8AXwJ2AL4CfA34BrAT8C3gO8AuwPeAHwA/AnYDfgL8DPgF8CvgN8DvgD8AfwL+AuwB/A3wlAd/A1IAqYA0QDogA1AWkAkoBygPqADIAlQEVAJUBlQBVAVUAxwGOBxwBKA6oAagJqAW4EhAbUAdQF1APcBRgGxAfUADQENAI0BjwNGAJoCmgGaAYwDNAS0ALQGtAK0BFkABvAAfwA/IAeQCAoAgIA/QBtAW0A5wLKA94DhAB0BHwPGAToDOgC6AroATAN0A3QE9AD0BvQAnAnoD+gD6AvoB+gMGAAYCBgEGA04CDAEMBQwDDAeMAIwEjAKMBowB5AMKAIWAEKAIEAaMBYwDjAdMAEwETAJMBkwBTAVMA0wHzADMBMwCzAbMAcwFnAyYV37f9+46L7V3LkfuoH8mekanbwbYn3FwvVZilxrIeMArBdk/v/y+nwvK68ZwGsguWBihW1B+/3dVmmo47sNcuOES5Wi3SZR1FZZQl1pQns+hxX2htCfG9iyJN66Tu5PPZ2wTPMhPiezctqJMRANxv6U+BmNK/ALoU8rz8Tq1PFtnOOBrQk4tf/AX2XK36QLGduBs09NiaNOS/hZu09N0m0YObO6BN5zx6ZKt6znd5g5YBFgMWAI4A3Am4CzA2YClgHMAywDLASsAKwGrAOcCVgPOA6wBrAWcD7gAcCHgIsDFgEsA6wCXAi4DrAdcrgc8bkubjzOzd3QLCd0iQreY0C0hdGcQujMJ3VmE7mxCt5TQnUPolhG65YRuBaFbSehWEbpzCd1qQnceoVtD6NYSuvMJ3QWE7kJCdxGhu5jQXULo1hG6SwndZYRuPaG7XOvwxf2NNMMZJzanM8TCorB9WWohY1y9uZS+HSgRm21fLGJpv31+XZx4XV5nsraE0Re3uNkX/v0T1DMSs9nCk90zE6nLe+DE+SxGX9zqTl9YkYuFs+O0OTd88MJjaXx1BalFzDmMvrjNbb4I0gu3ZbHbHDjUInB5rHUFDr2gXMHoi9vd4wtvcYvolbHYHCh+Qb6KcVPiXEZf3OEGXwRK5KlWR2ezFYXN6rxo6rKiaj+1htEXd/67vsiJkqdaW5LN/qhtVucXW5c/HEP7qQsYfXHXv+WLQEw81YWHtjkYo83qokPUlReOuf3UxYy+uLv0fWHFwVNdQtlsxWWzWndwXSrO9lOXMvrintL0RShunuqyA232JWCzWo/q8oYTaj91OaMv7hXyrbyM+wOKcX2rbmX8Vt77hPiCcR2kGOfx6g5GX9wvxBeM8z3FOF9RdzP64gEhvmB8rinGuKzuY/TFg6X0zeFWYpdiHL+Ksf8pzvYznSscZiBXeAXMXa4EXAW4GnAN4FrABsB1gOsBNwA2Am4E3AS4GXAL4FbAbYDbAXcA7gTcBbgbcA/gXsB9gPsBDwAeBDwEeBjwCOBRIld4BZHTuZLQXUXoriZ01xC6awndBkJ3HaG7ntDdQOg2ErobCd1NhO5mQncLobuV0N1G6G4ndHcQujsJ3V2E7m5Cdw+hu5fQ3Ufo7id0DxC6BwndQ4TuYUL3CKF7tLz5XOEwxlzhFYy5wisZ1ywvCskVXsWYK7yaMVd4DaMvXhKSK7yWMVe4gTFXeB2jL14Wkiu8njFXeANjrnAjoy82CckV3siYK7yJMVd4M6MvXhGSK7yFMVd4K2Ou8DZGX7wqJFd4O2Ou8A7GXOGdjL54TUiu8C7GXOHdjLnCexh98bqQXOG9jLnC+xhzhfcz+mKzkFzhA4y5wgcZc4UPMfriDSG5wocZc4WPMOYKH2X0xZtC9uEZ9wcU4/pWvcy4D/+WEF8wroMU4zxevcroi7eF+IJxvqcY5ytqM6MvtgjxBeNzTTHGZfUWoy+2CskVMo5fxdj/1FZBucIyfHX9kyt8DOYujwOeADwJeArwNOAZwLOA5wDPA14AvAh4CfAyYBPgFcCrgNcArwM2A94AvAl4C/A2YAtgK+AdwDbAu4D3AO8DPiByhY8ROZ3HCd0ThO5JQvcUoXua0D1D6J4ldM8RuucJ3QuE7kVC9xKhe5nQbSJ0rxC6Vwnda4TudUK3mdC9QejeJHRvEbq3Cd0WQreV0L1D6LYRuncJ3XuE7n1C90F587lCPGYTjfWPMeYKH2dcs3wpJFf4BGOu8EnGXOFTjL7YISRX+DRjrvAZxlzhs4y++EpIrvA5xlzh84y5whcYffG1kFzhi4y5wpcYc4UvM/riGyG5wk2MucJXGHOFrzL6YqeQXOFrjLnC1xlzhZsZffGtkFzhG4y5wjcZc4VvMfriOyG5wrcZc4VbGHOFWxl9sUtIrvAdxlzhNsZc4buMvvheSK7wPcZc4fuMucIPGH3xg5B9eMb9AcW4vlVfMe7D/yjEF4zrIMU4j1c7GX2xW4gvGOd7inG+onYx+uInIb5gfK4pxrisfmT0xc9CcoWM41cx9j9lqv2484QNDb3d2gTXIgOff/wQ5ljbAR8BPgZ8AvgU8Bngc8AXgC8BOwBfAb4GfAPYCfgW8B1gF+B7wA+AHwG7AT8Bfgb8AvgV8Bvgd8AfgD8BfwH2EDnND4nc03ZC9xGh+5jQfULoPiV0nxG6zwndF4TuS0K3g9B9Rei+JnTfELqdhO5bQvcdodtF6L4ndD8Quh8J3W5C9xOh+5nQ/ULofiV0vxG63wndH4TuT0L3F6HbU958TrOI8fOPHzLmNLczrq0yqsjIaX7EmNP8mDGn+QmjL8q62Rcop/kpY07zM8ac5ueMvsh0py8Oyml+wZjT/JIxp7mD0Rfl3OaLQ+Q0v2LMaX7NmNP8htEX5d3ji2JzmjsZc5rfMuY0v2P0RQU3+CKKnOYuxpzm94w5zR8YfZH17/oi6pzmj4w5zd2MOc2fGH1R8d/yRYw5zZ8Zc5q/MOY0f2X0RaXS90VcOc3fGHOavzPmNP9g9EXl0vRFAjnNPxlzmn8x5jT3MPqiSin5wkrsUoz7A4pxfavw+ixRX1QV4gvGdZBinMerCoy+qCbEF4zzPcU4X1GVGH1xmBBfMD7XFGNcVlUZfXG4IV9w5zQZx69i7H+Ks/3s/rsAkK3r26NzYn/qHNnvOmf2q86h/axzart1ju0HnXPbpXNw3+qc3Dc6R/eVztl9qXN4n+uc3qc6x/exzvnZeQA7rxB5pUT4NNG+F2bMg/yN5lAK9nBg78X+vWDIUv4Q7J54vaECv1Vo5Rd6i/L8sHzxe/2+wlAhrCeD+SpshfML88LBfXXZX2BbwbM/V4sv7vwt5m0leB3At4JBwnbl3PWWqcDXGUzZXabC/vZlqndvZ0vx0N+WzG1DOMNMsI9sk0QHIO7IKaivHdQgiXYU3OmsxC6Fs8iYdIycC0tonL0Dxa4/MhqXRLCkRk9hHICpFXijmtOudr0L4+wLCtquUFlhK88LOzmBwtxAQV7IWxDMD/vCOb6QL952Lamzc7ZrmqF2TYu/Xf8v+mu6oXZN/4/31wxD7Zqh2zUd6SIvNz888cO+rJ5UZNrPDBMPuBQDs7WUCrwzCVN2xzo4rBjsTvj4geE2tBK7lN0xy1Xg9015Q0GhfDHB1krsUpmG2qKCobaoYLAt7EBooi0aVXF3TDE1Hhr/u3aXeLTEVN8/WsjWI2O/VIy+VpztZ0+k7O1HahfCE2N7ltSfcJ0mnllcbYInlVnF7UJYiV2qnKGHQFYxuxAlVKNK+js25ywDQeEYl+SGYpm8JXyuqII7AwynL3C/rIgmJ/H6p6Q25/RPJVSX8vlgbIQCKhwK+3ICed4ClevLzQ37w4HcoD8UzvHnhwJFyp/v8+YVBaywChYVBXJ8hYHccF6oMDeMg7YK+Xz+UF5Bocrx5uYXWMGQL98K+wM+WPCHfIFQyBfMzc33+UK5wXAwDxbpsPQPWjmBQJ6V6/XleU35pxJaXXM9FErazcF1SnkoVJb4UKhs+KFQ2cBDoYVLHgqH7MSBvZ+gCnMGnSoufSi0MBR0qjA8FEra2uT0T1WXPhRM+afq/9GWazW95XoYteVqJXYdMt/BmatMtC7G7VtlwvFOG6YKacOET2G53B/2gDncwIP9CEOTnCMMbn8eZqgtqhtqi+qGt4JNtEUrl28FmxoPrV2+FWyq71tCtoIZ+6Vi9LWyklvBkdfeZxZXm+DJbg2Tq/7DDT0Eahhc9ducaxgICn4hW8GHM04Ea1ZwZ4DxG1pV1iyFrWBO/9RiXPVbjKt+U/6pRfgn1jM1JW39cvrnSEPx80iGdihpd4qzHWobaofawvpDHUPtUEdYf6hrqB3qRpEqcvPEjqDL1o/xpLGexEljPcOTxnoGJo257niPUGFpBrmjGOvinDTmGpqUHBXFpDHR0/Wc/smuwDfR45w0mvJPNsPDsYSL9Z0Z9dniZ9DIQewyeteNO6PE2ccbuDyDYfu4gYHnTUNDz1673kz9/wWegy+uv+nUx93endLcz7ER90RSSqcNujy9YtvcyIDdeUJePNKIMTA3ZgzMjP1GcfrCcJD8J03xXwySjf+rQfJol388z7b5aAN2NzE0o2lSYf+b9U183JOaIVuJXYpzhtzU5f3JXlE1NdCfmgkYR81MfJLF0Dg6pphxZCV2GYsp7ar8N/vAsaV0riVRns0ZJ4mMvlbHGtqhap5cXRvn2ML0xJFjldnCwKDvIGSV2ULAoE/UFx2FBOCWjL5g7H+qY3KVLiLYtuQMtlKfiptS3c+xVdJRlno8w/0cWycdZaknBTjKSjrKUk8LcJRKOspSzwpwlDfpKEs9L8BRvqSjLPWiAEf5k46y1MsCHJWTdJSlXhHgqNykoyz1mgBHBZKOstRmAY4KJh1lqTcFOCov6ShLPSxgr69N0lGW2iJgRLVNOspS9wkYUe2SjrLUNgEj6tikoyz1ngBHtU86ylIfCHDUcUlHWWq7AEd1SDrKUh8LcFTHpKMs9akARx2fdJSlPhfgqE5JR1nqVQHrqM5JR1lqh4AR1SXpKEt9LcBRXZOOstROAY46IekoS10v4BnVLekoS+0SMKK6Jx1lqR8EOKpH0lGW2i3AUT2TjrLUzwIc1cvUqyi5P5N4YvxEcyIVNrcanv2fR7T//xs4a4+WF5TfL89Hss1hD7qvN/y/D6AvoF+F/Xrn4n55/wi+DqV6M74Yor+hTsTdfiMZ268PY/sNYH7RQmTf7l9hfx8egOS+SO4X0bcHwv8HAQYDTqpAvxuXOxgNZGyHbF3PEKhzKGAYYDhgBGAkYBRgNGAMIB9QACgEhABFgDBgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmBuhX2NhD+4P0R/cB/rhhK6YYRuOKEbQehGErpRhG40oRtD6PIJXQGhKyR0IUJXROjChG4soRtH6MYTugmEbiKhm0ToJhO6KYRuKqGbRuimE7oZhG4moZtF6GYTujmEbm6F/S9acS7uz+APZIyDQxjqKtr7PZaWGsrIq3MVM8+3WF/5W5zNti+GsbTfPr8OT7wur/MlOSMYfdHFzb7w7/9ioJGJ2WzhLxkalUhd3gO/sGg0oy+6utMXVuSXNI2J0+bc8MFf+JQfX11B6sujChh9cYLbfBGkvzCrMHabA4f68q1QrHUFDv1FXkWMvujmHl94i/vysnAsNgeK/yK0sdHXVeKX9I1j9EV3N/giUCJPNT46m60obFYToqnLiqr91ERGX/T4d32REyVPNakkm/1R26wmF1uXPxxD+6kpjL7o+W/5IhATTzX10DYHY7RZTTtEXXnhmNtPTWf0Ra/S94UVB081g7LZistmNfPgulSc7admMfrixNL0RShunmr2gTb7ErBZzUF1ecMJtZ+ay+iL3qXkCyuxSzHuDyjG9a3C67NEfdFHiC8Y10GKcR6vujP6oq8QXzDO9xTjfEX1YvRFPyG+YHyuKca4rPow+qK/IV9w5yEZx69i7H9KSvsxfrGFasY4XzmZOY9rXwv1T/v/l5ffn+NZj+TLkHwpktch+RIkX4zki5B8IZIvQPL5SF6L5DVIPg/Jq5F8LpJXIXklklcgeTmSlyH5HCQvRfLZSD4LyWci+QwkL0HyYiQvQvJCJJ+O5EeR/AiSH0byQ0h+EMkPIPl+JN+H5HuRfA+S70byXUi+E8l3IPl2JN+G5FuRfAuSb0byTUi+EckbkXwDkq9H8nVI3oDka5F8DZKvRvJVSL4SyVcg+QMkv4/k95D8LpK3IfkdJG9F8hYkv43kt5D8JpLfQPJmJL+O5NeQ/CqSX0HyJiS/jOSXkPwikl9A8vNIfg7JzyL5GSQ/jeSnkPwkkp9A8uNIfgzJJ6Mccyskt0ayhWSFZC+SfUj2IzkHyblIDiA5iOQ8JLdBclskt0PysUhuj+TjkNwByR2RfDySOyG5M5K7ILkrkk9Acjckd0dyDyT3RHIvJOPzEPi8BD5Pgc9b4PMY+LwGPs+Bz3vg8yD4vAg+T4LPm+DzKPi8Cj7Pgs+7zEUyPq+AzzPg8w74PAQ+L4HPU+DzFvg8Bj6vgc9z4PMe+DwIPi+Cz5M4501We/Zd8+D/8wELAKcATgWcBjgdsBCwCLAYsARwBuBMwFmAswFLAecAlgGWA1YAVgJWAc4FrAacB1gDWAs4H3AB4ELARYCLAZcA1gEuBVwGWA+4HHAF4ErAVYCrAdcArgVsAFwHuB5wA2Aj4EbATYCbAbcAbgXcBrgdcAfgTsBdgLsB9wDuBdwHuB/wAOBBwEOAhwGPAB4FPAZ4HPAE4EnAU4CnAc8AngU8B3ge8ALgRcBLgJcBmwCvAF4FvAZ4HbAZ8AbgTcBbgLcBWwBbAe8AtgHeBbwHeB/wAeBDwHbAR4CPAZ8APgV8Bvgc8AXgS8AOwFeArwHfAHYCvgV8B9gF+B7wA+BHwG7AT4CfAb8AfgX8Bvgd8AfgT8BfgD2AvwGeLOgzgBRAKiANkA7IAJQFZGZ5DrjK6J8d9E8rsUuNYTxwbPqsH+NZ1n/O+pWD9i0PqADIAlQEVAJUBlQBVAVUAxwGOBxwBKA6oAagJqAW4EhAbUAdQF1APcBRgGxAfUADQENAI0BjwNGAJoCmWfsayW4n5/yVzceJI46uPKGrQOiyCF1FQleJ0FUmdFUIXVVCV43QHUboDid0RxC66oSuBqGrSehqEbojCV1tQleH0NUldPUI3VGELpvQ1Sd0DQhdQ0LXiNA1JnRHE7omhK6p1uGLew8Jj9lE18r22Ei0LuesX/ksPl4FQs76VWBpv31+zUq8rn/O+lVk9EWhkLN+lRKz+YCzfpUTqSvirF8VRl+EhJz1qxqnzdRZv2rx1UWe9TuM0RdFQs76HR67zYc863dErHUVc9avOqMvwkLO+tWIxeYSzvrVjL6uEs/61WL0xVghZ/2OjM7mqM761Y6mrijP+tVh9MU4IWf96pZkcwxn/epl8Z31O4rRF+OFnPXLzuI761c/i++sXwNGX0wQctavYRbfWb9GWXxn/Roz+mKikLN+R2fxnfVrksV31q8poy8mCTlHw7g/oBjXtyrEeI5mshBfMK6DFOM8Xo1l9MUUIb5gnO8pxvmKmsDoi6lCfMH4XFOMcVlNZvTFNCFn1RjHr2Lsf4qz/ez+uxCQretrqnNiR+scWSOdM2ugc2jZOqdWT+fY6uic25E6B1dT5+Sq6xzd4TpnV03n8KronF4lnePL0jk/Ow9QLiLHal8pET5NtO+NZMyDNENzKAV7OLD3Yv9eMGQpfwh2T7zeUIHfKrTyC71FeX5Yvvi9fl9hqBDWk8F8FbbC+YV54eC+utKhDjsNXebgJmDP32LeVoIX5ntMlkHCduXc9TZnnASbsrs5GhRM9e7tbCmeg18KZMKGkQbepIYvp+5EByDuyC1QXzuoQRLtKM35Rp/CWWRMOkbOhSU0zt6BYtcfGY1LIlhSo7dgHIAtmaOa0652vQvj7AvKXikqK2zleWEnJ1CYGyjIC3kLgvlhXzjHF/LF264ldXbOdm1lqF1bxd+u/xf9tbWhdm39H++vlqF2tXS7piNd5OXmhyd+2Cs9qfDazwwTD7gWBmZrLbJ4ZxKm7I51cFgx2J0oR5/hNrQSu5TdMX1Z/L7xGwoK/mKCrZXYpbyG2iLHUFvkGGwLOxCaaIuFVdwdU0yNh0X/rt0lHi0x1fcXC9l6ZOyXitHXirP97IkU9WpifEX7t0rqT7hOE88srjbBk8rc4nYhrMQu5TP0EMgtZheihGpUSX/H5pxrICic5ZLcUCyTt0RtDmS5M8Bw+gL3ywCanMTrn5LanNM/QZxb8PlgbIQCKhwK+3ICed4ClevLzQ37w4HcoD8UzvHnhwJFyp/v8+YVBaywChYVBXJ8hYHccF6oMDeMg7YK+Xz+UF5Bocrx5uYXWMGQL98K+wM+WPCHfIFQyBfMzc33+UK5wXAwDxbpsPQPWjmBQJ6V6/XleU35J4hW11wPhZJ2c3CdUh4KeRIfCnmGHwp5Bh4KS13yUDhkJw7s/QRVmDPotHHpQ2GpoaDThuGhUNLWJqd/2rr0oWDKP23/j7Zc2+kt12OpLVcrseuQ+Q7OXGWidTFu3yoTjnfaMFVIGyZaV3uX+8MeMO0NPNiPMzTJOc7g9uexhtqig6G26GB4K9hEWyxz+VawqfGw3OVbwab6/gohW8GM/VIx+lqtSG4FR157n1lcbYInux1NrvrbG3oIdDS46rc5dzQQFFYL2QpuzzgRPD7LnQFmtaFV5fGlsBXM6Z9OjKv+FYyrflP+6UT4J9YzNSVt/XL6p7Oh+NmZoR1K2p3ibIcuhtqhi7D+0NVQO3QV1h9OMNQOJ0SRKnLzxI6gy9aP8aSxm8RJYzfDk8ZuBiaNa9zxHqHC0gxy3Rnr4pw0rjE0KekexaQx0dP1nP7pkcU30eOcNJryTw+Gh2MJF+s7M3qyxc+gkYPYzfWuG3dGibOP93J5BsP2cS8Dz5sTDT177Xoz9f8Xeg6+uP6mUx93e3dKcz/H3twTSSmd9nyXp1dsm3sbsPsCIS8e6c0YmPswBmbGfqM4fWE4SP6TpvgvBsk+/9Ug2dflH8+zbe5rwO5+hmY0/bL2v1nfxMc9qRmyldilOGfI/V3en+wVVX8D/WmAgHE0wIDdAw2No4HFjCMrsctYTLm4yn+zD1xSSudaEuU5iHGSyOhrdYmhHapBydW1cY6DTU8cOVaZgw0M+suErDIHCxj0ifpivZAAfBKjLxj7n1qfXKWLCLYncQZbqU/FTanu5zgk6ShLPZ7hfo5Dk46y1JMCHDUs6ShLPS3AUcOTjrLUswIcNSLpKEs9L8BRI5OOstSLAhw1KukoS70swFGjk46y1CsCHDUm6ShLvSbAUflJR1lqswBHFSQdZak3BTiqMOkoSz0sYK8vlHSUpbYIGFFFSUdZ6j4BIyqcdJSltgkYUWOTjrLUewIcNS7pKEt9IMBR45OOstR2AY6akHSUpT4W4KiJSUdZ6lMBjpqUdJSlPhfgqMlJR1nqVQHrqClJR1lqh4ARNTXpKEt9LcBR05KOstROAY6annSUpa4X8IyakXSUpXYJGFEzk46y1A8CHDUr6ShL7RbgqNlJR1nqZwGOmmPqVZTcL65nfJmFGsD4UoS5zB+Stz8j2SFlv7Ptz25lJuWk/B+V52btl4cgeSiShyF5OJJHIHkkkkcheTSSxyA5H8kFSC5EcgjJRUgOI3kskscheTySJyB5IpInIXkykqcgeSqSpyF5OpJnIHkmkmcheTaS5yC5Tdn9clskt0PysUhuj+TjkNwByR2RfDySOyG5M5K7ILkrkk9Acjckd0dyDyT3RHIvJJ+I5N5I7oPkvkjuh+T+SB6A5IFIHoTkwUg+CclDkDwUycOQPBzJI5A8EsmjkDwayWOQnI/kAiQXIjmE5CIkh5E8FsnjkDweyQ0y98sNkdwIyY2RfDSSmyC5KZKbIfkYJDdHcgskt0RyKyS3RrKFZIVkL5J9SPYjOQfJuUgOIDmI5Dwkt0FyWyS3Q/KxSG6P5OOQ3AHJHZF8PJI7IbkzkrsguSuST0ByNyR3R3IPJPdEci8kn4jk3kjug+S+SO6H5HkV9svzkbwAyacg+VQkn4bk05G8EMmLkLwYyUuQfAaSz0TyWUg+G8lLkXwOkpcheTmSVyB5JZJXIflcJK9G8nlIXoPktUg+H8kXIPlCJF+E5IuRfAmS1yH5UiRfhuT1SL4cyVcg+UokX4Xkq5F8DZKvRfIGJF+H5OuRfAOSNyL5RiTfhOSbkXwLkm9F8m1Ivh3JdyD5TiTfheS7kXwPku9F8n1Ivh/JDyD5QSQ/hOSHkfwIkh9F8mNIfhzJTyD5SSQ/heSnkfwMkp9F8nNIfh7JLyD5RSS/hOSXkbwJya8g+VUkv4bk15G8GclvIPlNJL+F5LeRvAXJW5H8DpK3IfldJL+H5PeR/AGSP0TydiR/hOSPkfwJkj9F8mdI/hzJXyD5SyTvQPJXSP4ayd8geSeSv0Xyd0jeheTvkfwDkn9E8m4k/4Tkn5H8C5J/RfJvSP4dyX8g+U8k/4XkPUj+G8keNL8tg+QUJKciOQ3J6UjOQHJZJGcieVm5/fJyJK9A8kokr0LyuUhejeTzkLwGyWuRfD6SL0DyhUi+CMkXI/kSJK9D8qVIvgzJ65F8OZKvQPKVSL4KyVcj+RokX4vkDUi+DsnXI/kGJG9E8o1IvgnJNyP5FiTfiuTbkHw7ku9A8p1IvgvJdyP5HiTfi+T7kHw/kh9A8oNIfgjJDyP5ESQ/iuTHkPw4kp9A8pNIfgrJTyP5GSQ/i+TnkPw8kl9A8otIfgnJLyN5E5JfQfKrSH4Nya8jeTOS30Dym0h+C8lvI3kLkrci+R0kb0Pyu0h+D8nvI/kDJH+I5O1I/gjJHyP5EyR/iuTPkPw5kr9A8pdI3oHkr5D8NZK/QfJOJH+L5O+QvAvJ3yP5ByT/iOTdSP4JyT8j+Rck/4rk35D8O5L/QPKfSP4LyXuQ/DeSPeX3y2WQnILkVCSnITkdyRlILovkTCSXQ3J5JFdAchaSKyK5EpIrI7kKkqsiuRqSD0Py4Ug+AsnVkVwDyTWRXAvJRyK5NpLrILkukush+SgkZyO5PpIbILkhkhshuTGSj0ZyEyQ3RXIzJB+D5OZIboHklkhuheTWSLaQrJDsRbIPyX4k5yA5F8kBJAeRnIfkNkhui+R2SD4Wye2RfBySOyC5I5KPR3InJHdGchckd0XyCUjuhuTuSO6B5J5I7oXkE5HcG8l9kNwXyf2Q3B/JA5A8EMmDkDwYyScheQiShyJ5GJKHI3kEkkcieRSSRyN5DJLzkVyA5EIkh5BchOQwkscieRySxyN5ApInInkSkicjeQqSpyJ5GpKnI3kGkmcieRaSZyN5DpLnIvlkJM/T8skwj54HmA9YADgFcCrgNMDpgIWARYDFgCWAMwBnAs4CnA1YCjgHsAywHLACsBKwCnAuYDXgPMAawFrA+YALABcCLgLgS6fk2HKQXTL4cpAXM+ZG9z4HtR/serM9+74bsbxnf04XX2WY26V5Bm8+1cmlRl5cfyNZb7LeZL3JepP1JutN1pusN1lvst5kvcl6k/Um603Wm6w3WW+y3mS9yXqT9bqjXu79as7P/5jiOEQAx6ECOA4TwHG4AI4jBHAcKYDjKAEcRwvgOEYAx3wBHAsEcCwUwDEkgGORAI5hARzHCuA4TgDH8QI4ThDAcaIAjpMEcJwsgOMUARynCuA4TQDH6QI4zhDAcaYAjrMEcJwtgOMcARzt93O4nWNbARzbCeB4rACO7QVwPE4Axw4COHYUwPF4ARw7CeDYWQDHLgI4dhXA8QQBHLsJ4NhdAMceAjj2FMCxlwCOJwrg2FsAxz4COPYVwLGfAI79BXAcIIDjQAEcBwngOFgAx5MEcBwigONQARyHCeA4XADHEQI4jhTAcZQAjqMFcBwjgGO+AI4FAjgWCuAYEsCxSADHsACOYwVwHCeA43gBHO3vB3A7x4YCODYSwLGxAI5HC+DYRADHpgI4NhPA8RgBHJsL4NhCAMeWAji2EsCxtQCOlgCOSgBHrwCOPgEc/QI45gjgmCuAY0AAx6AAjnkCOLYRwLGtAI7tBHA8VgDH9gI4HieAYwcBHDsK4Hi8AI6dBHDsLIBjFwEcuwrgeIIAjt0EcOwugGMPARx7CuDYSwDHEwVw7C2AYx8BHPsK4NhPAEf7+8ndznG+AI4LBHA8RQDHUwVwPE0Ax9MFcFwogOMiARwXC+C4RADHMwRwPFMAx7MEcDxbAMelAjieI4DjMgEclwvguEIAx5UCOK4SwPFcARxXC+B4ngCOawRwXCuA4/kCOF4ggOOFAjheJIDjxQI4XiKA4zoBHC8VwPEyARzXC+B4uQCOVwjgeKUAjlcJ4Hi1AI7XCOB4rQCOGwRwvE4Ax+sFcLxBAMeNAjjeKIDjTQI43iyA4y0CON4qgONtAjjeLoDjHQI43imA410CON4tgOM9AjjeK4DjfQI43i+A4wMCOD4ogONDAjg+LIDjIwI4PiqA42MCOD4ugOMTAjg+KYDjUwI4Pi2A4zMCOD4rgONzAjg+L4DjCwI4viiA40sCOL4sgOMmARxfEcDxVQEcXxPA8XUBHDcL4PiGAI5vCuD4lgCObwvguEUAx60COL4jgOM2ARzfFcDxPQEc3xfA8QMBHD8UwHG7AI4fCeD4sQCOnwjg+KkAjp8J4Pi5AI5fCOD4pQCOOwRw/EoAx68FcPxGAMedAjh+K4DjdwI47hLA8XsBHH8QwPFHARx3C+D4kwCOPwvg+IsAjr8K4PibAI6/C+D4hwCOfwrg+JcAjnsEcPxbAEdPlvs5lhHAMUUAx1QBHNMEcEwXwDFDAMeyAjhmCuC4rJz7OS4XwHGFAI4rBXBcJYDjuQI4rhbA8TwBHNcI4LhWAMfzBXC8QADHCwVwvEgAx4sFcLxEAMd1AjheKoDjZQI4rhfA8XIBHK8QwPFKARyvEsDxagEcrxHA8VoBHDcI4HidAI7XC+B4gwCOGwVwvFEAx5sEcLxZAMdbBHC8VQDH2wRwvF0AxzsEcLxTAMe7BHC8WwDHewRwvFcAx/sEcLxfAMcHBHB8UADHhwRwfFgAx0cEcHxUAMfHBHB8XADHJwRwfFIAx6cEcHxaAMdnBHB8VgDH5wRwfF4AxxcEcHxRAMeXBHB8WQDHTQI4viKA46sCOL4mgOPrAjhuFsDxDQEc3xTA8S0BHN8WwHGLAI5bBXB8RwDHbQI4viuA43sCOL4vgOMHAjh+KIDjdgEcPxLA8WMBHD8RwPFTARw/E8DxcwEcvxDA8UsBHHcI4PiVAI5fC+D4jQCOOwVw/FYAx+8EcNwlgOP3Ajj+IIDjjwI47hbA8ScBHH8WwPEXARx/FcDxNwEcfxfA8Q8BHP8UwPEvARz3COD4twCOnvLu51hGAMcUARxTBXBME8AxXQDHDAEcywrgmCmAYzkBHMsL4FhBAMcsARwrCuBYSQDHygI4VhHAsaoAjtUEcDxMAMfDBXA8QgDH6gI41hDAsaYAjrUEcDxSAMfaAjjWEcCxrgCO9QRwPEoAx2wBHOsL4NhAAMeGAjg2EsCxsQCORwvg2EQAx6YCODYTwPEYARybC+DYQgDHlgI4thLAsbUAjpYAjkoAR68Ajj4BHP0COOYI4JgrgGNAAMegAI55Aji2EcCxrQCO7QRwPFYAx/YCOB4ngGMHARw7CuB4vACOnQRw7CyAYxcBHLsK4HiCAI7dBHDsLoBjDwEcewrg2EsAxxMFcOwtgGMfARz7CuDYTwDH/gI4DhDAcaAAjoMEcBwsgONJAjgOEcBxqACOwwRwHC6A4wgBHEcK4DhKAMfRAjiOEcAxXwDHAgEcCwVwDAngWCSAY1gAx7ECOI4TwHG8AI4TBHCcKIDjJAEcJwvgOEUAx6kCOE4TwHG6AI4zBHCcKYDjLAEcZwvgOEcAx7kCOJ4sgOM8AxxN8OySYYbnP1cKM+GLs/bX5bNy/f6igLdI+VS+5c0rCOZY/pyC3KAKqpxgTsgb9PmKgv5gIK8gL2DlKb+vSIVz8nxhXdklWXy8bMekagfZ9WaX0A6Jcuds07EeM52A2+YyjDaPE2JzCqPN44XYnMpo8wQhNqcx2jyxlGy2ErvUJMb2W58q44E72SOD5xQhPKcK4TmNsa9jntxjcjojz5eFjMkZHhk8ZwrhOUsIz9lCeM4RwnOuEJ4nC+E5TwjP+UJ4LhDC8xQhPE8VwvM0ITxPF8JzoRCei4TwXCyE5xIhPM8QwvNMITzPEsLzbCE8lwrheY4QnsuE8FwuhOcKITxXCuG5SgjPc4XwXC2E53lCeK4RwnOtEJ7nC+F5gRCeFwrheZEQnhcL4XmJEJ7rhPC8VAjPy4TwXC+E5+VCeF4hhOeVQnheJYTn1UJ4XiOE57VCeG4QwvM6ITyvF8LzBiE8NwrheaMQnjcJ4XmzEJ63COF5qxCetwnhebsQnncw82R/0V+Gx9Mvg/8M7Z2orkTP0PbLcH8b9jfQhncxtmF/AW04wEAb3s3YhgMEtOFAA214D2MbDjT0YUtum+9lq8vn7ZuRePsVhe2rMIxt5u4/93lkPFPvF8LzASE8HxTC8yEhPB8WwvMRITwfFcLzMSE8HxfC8wkhPJ8UwvMpITyfFsLzGSE8nxXC8zkhPJ8XwvMFITxfFMLzJSE8XxbCc5MQnq8I4fmqEJ6vCeH5uhCem4XwfEMIzzeF8HxLCM+3hfDcIoTnViE83xHCc5sQnu8K4fmeEJ7vC+H5gRCeHwrhuV0Iz4+E8PxYCM9PhPD8VAjPz4Tw/FwIzy+E8PxSCM8dQnh+JYTn10J4fiOE504hPL8VwvM7ITx3CeH5vRCePwjh+aMQnruF8PxJCM+fhfD8RQjPX4Xw/E0Iz9+F8PxDCM8/hfD8SwjPPUJ4/i2Ep12hBJ5lDPFMYeaZgngm+vmYjkI+H5PKaHPzDBn9MU3IuEkXwjNDCM+yQnhmCuFZTgjP8kJ4VhDCM0sIz4pCeFYSwrOyEJ5VhPCsKoRnNSE8DxPC83AhPI8QwrO6EJ41hPCsKYRnLSE8jxTCs7YQnnWE8KwrhGc9ITyPEsIzWwjP+kJ4NkA8VV6Bz59bWBTO8+X6c3IC8P/C3FBhUBWEcvMLC3yBglBBMBgsKigIFRUWeHO9RUGowevL9+cXBQoKcjBP7r3Uhox7qVcJ+b7hRqW0t59oe5ZhtLmxkHzG0Yz98eIsGf2xiZCY1lQIz2ZCeB4jhGdzITxbCOHZUgjPVkJ4thbC0xLCUwnh6RXC0yeEp18IzxwhPHOF8AwI4RkUwjNPCM82Qni2FcKznRCexwrh2V4Iz+OE8OwghGdHITyPF8KzkxCenYXw7CKEZ1chPE8QwrObEJ7dhfDsIYRnTyE8ewnheaIQnr2F8OwjhGdfITz7CeHZXwjPAUJ4DhTCc5AQnoOF8DxJCM8hQngOFcJzmBCew4XwHCGE50ghPEcJ4TlaCM8xQnjmC+FZIIRnoRCeISE8i4TwDAvhOVYIz3FCeI4XwnOCEJ4ThfCcJITnZCE8pwjhOVUIz2lCeE4XwnOGEJ4zhfCcJYTnbCE85wjhOVcIz5OF8JwnhOd8ITwXCOF5ihCepwrheZoQnqcL4blQCM9FQnguFsJziRCeZwjheaYQnmcJ4Xm2EJ5LhfA8RwjPZUJ4LhfCc4UQniuF8FwlhOe5QniuFsLzPCE81wjhuVYIz/OF8LxACM8LhfC8SAjPi4XwvEQIz3VCeF4qhOdlQniuF8LzciE8rxDC80ohPK8SwvNqITyvEcLzWiE8NwjheZ0QntcL4XmDEJ4bhfC8UQjPm4TwvFkIz1uE8LxVCM/bhPC8XQjPO4TwvFMIz7uE8LxbCM97hPC8VwjP+4TwvF8IzweE8HxQCM+HhPB8WAjPR4TwfFQIz8eE8HxcCM8nhPB8UgjPp4TwfFoIz2eE8HxWCM/nhPB8XgjPF4TwfFEIz5eE8HxZCM9NQni+IoTnq0J4viaE5+tCeG4WwvMNITzfFMLzLSE83xbCc4sQnluF8HxHCM9tQni+K4Tne0J4vi+E5wdCeH4ohOd2ITw/EsLzYyE8PxHC81MhPD8TwvNzITy/EMLzSyE8dwjh+ZUQnl8L4fmNEJ47hfD8VgjP74Tw3CWE5/dCeP4ghOePQnjuFsLzJyE8fxbC8xchPH8VwvM3ITx/F8LzDyE8/xTC8y8hPPcI4fm3EJ6eFBk8ywjhmSKEZ6oQnmlCeKYL4ZkhhGdZITwzhfAsJ4RneSE8KwjhmSWEZ0UhPCsJ4VlZCM8qQnhWFcKzmhCehwnhebgQnkcI4VldCM8aQnjWFMKzlhCeRwrhWVsIzzpCeNYVwrOeEJ5HCeGZLYRnfSE8Gwjh2VAIz0ZCeDYWwvNoITybCOHZVAjPZkJ4HiOEZ3MhPFsI4dlSCM9WQni2FsLTEsJTCeHpFcLTJ4SnXwjPHCE8c4XwDAjhGRTCM08IzzZCeLYVwrOdEJ7HCuHZXgjP44Tw7CCEZ0chPI8XwrOTEJ6dhfDsIoRnVyE8TxDCs5sQnt2F8OwhhGdPITx7CeF5ohCevYXw7COEZ18hPPsJ4dlfCM8BQngOFMJzkBCeg4XwPEkIzyFCeA4VwnOYEJ7DhfAcIYTnSCE8RwnhOVoIzzFCeOYL4VkghGehEJ4hITyLhPAMC+E5VgjPcUJ4jhfCc4IQnhOF8JwkhOdkQzxTInj6rFy/vyjgLVI+lW958wqCOZY/pyA3qIIqJ5gT8gZ9vqKgPxjIK8gLWHnK7ytS4Zw8X1jXfTSjzVNKyWYrsUtNTeFrv0uyzNicdrCffQnwVCdnRdgcir+ueVkHtZ+Kt675WXy+uLJKqfliH08rPpsX0DZb8dR1yiHaLy8ce12nMvriqtL2xT6ewVhtPq04mwOx1XV6se3nD8dS10JGX1z97/hiH09/9DYvKtnmnGjrWhxN+1nR1bWE0RfX/Ju+2MfTisbmM6K1OVByXWdG336FJdV1FqMvrv33fbGPZ6B4m8+OzWZvcXUtjbX9Aoeu6xxGX2xwiy/28QwcyuZl8dgcpOtaHl/7Bam6VjD64jp3+WIvz9zwwTavjN9mK7KuVYm0n/fAus5l9MX1LvSF5mlhm1cnarN/f13nJd5+XqeuNYy+uMG9vtjLs2gfUbU2i6OusF2bOp+pLqhNXcDoi40u94XD80K+/QHFuL5VeH2WqI03lpIvrMQuxbgOUozzeHUtoy9uEuILxvmeYpyvqOsZfXGzEF8wPtcUY1xWNzL64hYhvpjGt4euGGOBYuzLypQvUph9MZ0xT9AlQ0beakYK03wvVBAqzjeJtmcq3/dxqJlCcoqzhPCcLYTnHCE85wrhebIQnvOE8JwvhOcCITxPEcLzVCE8TxPC83QhPBcK4blICM/FQnguEcLzDCE8zxTC8ywhPM8WwnOpEJ7nCOG5TAjP5UJ4rhDCc6UQnquE8DxXCM/VQnieJ4TnGiE81wrheb4QnhcI4XmhEJ4XCeF5sRCelwjhuU4Iz0uF8LxMCM/1QnheLoTnFUJ4XimE51VCeF4thOc1QnheK4TnBiE8rxPC83ohPG8QwnOjEJ43CuF5kxCeNwvheYsQnrcK4XmbEJ63C+F5hxCedwrheZcQnncL4XmPEJ73CuF5nxCe9wvh+YAQng8K4fmQEJ4PC+H5iBCejwrh+ZgQno8L4fmEEJ5PCuH5lBCeTwvh+YwQns8K4fmcEJ7PC+H5ghCeLwrh+ZIhnikRPBP9zGo6o80vC7E5g9HmTUJsLsto8ytCbM5ktPlVITaXY7T5NSE2l2e0+XUhNldgtHmzEJuzGG1+Q4jNFRltflOIzZUYbX5LiM2VGW1+W4jNVRht3iLE5qqMNm8VYnM1RpvfEWLzYYw2bxNi8+GMNr8rxOYjGG1+T4jN1Rltfl+IzTUYbf5AiM01GW3+UIjNtRht3i7E5iMZbf5IiM21GW3+WIjNdRht/kSIzXUZbf5UiM31GG3+TIjNRzHa/LkQm7MZbf5CiM31GW3+UojNDRht3iHE5oaMNn8lxOZGjDZ/LcTmxow2f8Nos30ewHmP+lhkfxndBqm63M6f2/lkO79q5xvt/Judj7LzM3a+wt6/t/ez7f1de7/T3v+z98Ps/SF7v8TeP7DX0/b60l5v2esPez5uz0/t+Zo9f7Gf5/bzLRtgxz87Htjjw+4vdvvZ35faBNAU0AxwDKA5oAWgJaAVoLXdJgAF8Np+A/gBOYBcQAAQBOQB2gDaAtoBjgW0Bxyn/dQRcDygE6AzoAugK+AEQDdAd0APQE9AL8CJgN6APoC+gH6A/oABgIGAQYDBgJMAQwBDAcMAwwEjACMBowCjAWMA+YACQCHAfpl3ESCM/HNWyn6fjQOMB0wATARMAkwGTAFMBUwDTAfMAMwEzALMBswBzAWcDJgHmA9YADgFcCrgNMDpgIWARYDFgCWAMwBn2hwAZwOWAs4BLAMsB6wArASsApwLWA04D7AGsBZwPuACwIWAiwAXAy4BrANcCrgMsB5wOeAKwJWAqwBXA64BXAvYALgOcD3gBsBGwI2AmwA3A24B3Aq4DXA74A7AnYC7AHcD7gHcC7gPcD/gAcCDgIcADwMeATwKeAzwOOAJwJOApwBPA54BPAt4DvA84AXAi4CXAC8DNgFeAbwKeA3wOmAz4A3Am4C3AG8DtgC2At4BbAO8C3gP8D7gA8CHgO2AjwAfAz4BfAr4DPA54AvAl4AdgK8AXwO+AewEfAv4DrAL8D3gB8CPgN2AnwA/A34B/Ar4DfA74A/An4C/AHsAfwPsYFAGkAKw3/2eBkgHZADKAjIB5QDlARUAWYCKgEqAyoAqgKqAaoDDAIcDjgBUB9QA1ATUAhwJqA2oA6gLqAc4CpANqA9oAGgIaARoDDga0ATQFNAMcAygOaAFoCWgFaA1wA5yCuAF+AB+QA4gFxAABAF5gDaAtoB2gGMB7QHHAToAOgKOB3QCdAZ0AXQFnADoBugO6AHoCegFOBHQG9AH0BfQD9AfMAAwEDAIMBhwEmAIYChgGGA4YARgJGAUYDRgDCAfUAAoBIQARYAwYCxgHGA8YAJgImASYDJgCmAqYBpgOmAGYCZgFmA2YA5gLuBkwDzAfMACwCmAUwGnAU4HLAQsAiwGLAGcATgTcBbgbMBSwDmAZYDlgBWAlYBVgHMBqwHnAdYA1gLOB1wAuBBwEeBiwCWAdYBLAZcB1gMuB1wBuBJwFeBqwDWAawEbANcBrgfcANgIuBFwE+BmwC2AWwG3AW4H3AG4E3AX4G7APYB7AfcB7gc8AHgQ8BDgYcAjgEcBjwEeBzwBeBLwFOBpwDOAZwHPAZ4HvAB4EfAS4GXAJsArgFcBrwFeB2wGvAF4E/AW4G3AFsBWwDuAbYB3Ae8B3gd8APgQsB3wEeBjwCeATwGfAT4HfAH4ErAD8BXga8A3gJ2AbwHfAXYBvgf8APgRsBvwE+BnwC+AXwG/AX4H/AH4E/AXYA/gb4A9ESgDSAGkAtIA6YAMQFlAJqAcoDygAiALUBFQCVAZUAVQFVANcBjgcMARgOqAGoCagFqAIwG1AXUAdQH1AEcBsgH1AQ0ADQGNAI0BRwOaAJoCmgGOATQHtAC0BLQCtAZYAAXwAnwAPyAHkAsIAIKAPEAbQFtAO8CxgPaA4+y5FqAj4HhAJ0BnQBdAV8AJgG6A7oAegJ6AXoATAb0BfQB9Af0A/QEDAAMBgwCDAScBhgCGAoYBhgNGAEYCRgFGA8YA8gEFgEJACFAECAPGAsYBxgMmACYCJgEmA+zvhLe/b93+Xhv7+1Ts7xexv2/D/i4L+3si7O9gsL/fwP7uAPu9/PY77+33ydvvarffg26/Y9x+f/dCgP3eafudzvb7ku13Edvv+bXnIPb7ae13v9rvVbXfWWq/D9R+16b9Hkv7HZH2+xftdxva7w2038lnv+/Ofpec/Z42+x1o9vvF7Hd32e/Fst85Zb/PyX5Xkv0eIvsdP/b7c64E2O99sd+pYr+vxH4XiP2eDfsdFvb7Iex3L9jvNbDfGWB/Ht/+rLv9OXL7M9r255/tzxbbn9u1PxNrf97U/iyn/TlJ+zOI9uf77M/O2Z9Lsz/zZX+eyv6skv05IPszNvbnVx4H2J+7sD/TYH9ewD6Lb59zt8+Q2+ez7bPP9rli+8yufR7WPh9qn5e0zw/a5+ns82X2eSv7/JF9Hsc+n2Kf17DPL9j5fDu/bed77fynnQ+082N2vsjOn9j5BHt/3d5vtvdf7f1Ie3/O3q+y92/s/Qx7fW+vd+31n70estcHdqxzro37xb1zbfvKnzWraPK0Wdmzpmbnh0LZc8fPGpc9dU7RjPCkqfaUcO+8yLka6J/dp4yfNT5/0vj5+bPGT52SPS5/5rjs0NSimdlTps7Knpw/q9CeiO6dMTmXFXln0Qz7z80omjkze/y++2aNK8ounDpl1oz8wlnZoaJpk6bOK7InqntnUrGy/h5Z3Vj/7Dtj6pzxU8ZmT5tdMGl8Yfac/Emzi7LHTymcNHumbUU4f/ykor1fl/MHurm2/lmYP2nS3r82c2bRjFmjJ+efPLpg/KzRM8ESu/iv2G+xg2aMt2TGfkuF2G+pGPst1WO/pWbst9SL/Zbs2G9pFPstR8d+S+vYb1Gx3+KP/Zbc2G85LvZbOsZ+ywmx39I99lsGxH7LoNhvGRX7LWNiv6Uw9luKYr9lSuy3TIv9ljmx33Jy7LecEvstp8V+y9mx33JO7LesiP2WVbHfclHst1wS+y1XxH7LVbHfcj26pYX+2XffZCGUPys/e9aMInvCECo6ee9sZ0oTPdmxpx9TYCZj//4NDHVsZKijaer+Ohrpn92nwJxnfMiZAE0smjcze9z4KbOyw1P/mY3Zv9csgXuPSeDeVujeaCd6OXHc0z6Oe+bGcc/G1IP92Cl/ij3Zhf63bxqcPW2q3RL5s8Ch4fEwO54HvTO7YN6sopn2LrbnE1RHlN34s9hv+SL2W3bEfsvO2G/5LvZbfo39lt9jv+Xv2G8pkxbzLemx31I29luqxH5LtdhvOTz2W6rHfkvN2G85MvZbjor9lvqx39IY3RJtzGmJ7ql/8D2TZ0+aNX7apHkH36jivTEnDpZ3oXvijYw7Y2/Q72K/5fvYb/kx9lt+if2W32K/JSU95lvSYr+lXOy3VIj9lsqx31I19luOjP2WOrHfUi/2W7Jjv6VB7Lc0iv2WZrHf0jz2W1qjW6KNOQF0T0wBrm28Nx4XB8uLMvbfE29kfD0j5gZ9I/Zb3or9li2x3/Ju7Le8H/stn8d+y5ex37Iz9lu+i/2WH2O/5afYb9kT+y17jwzFdktK7LekxX5LRuy3ZMZ+S8XYb6kc+y2HoVuijTm10T0xBbij4r2xYRwse8XeGCfGfkv/2G8ZGPstX6Jb4o3yDTJj/rONYr/l6NhvaRr7LS1iv6VV7LcEYr8lL/Zb2sd+S4fYb+kc+y1dY7+lT+y39Iv9lgGx3zIo9ltOiv2WobHfMir2W8bEfksI3RJt/JyE7okpWE+L98ZZcbB8Hd0Tb2SsUC7mBq0Y+y2VY7+lauy3HBH7LTVivyU79lsaxH5Lk9hvaRb7LS1jv6V17LcEY7+lTey3tIv9lvax39Ih9luOj/2WE2K/pXvst5yIbok25gxC98QU4IbGe+PIOFieGcc9S2O8xz7FtFn/3iRP/PdOQ/fW0j87zpiRP0+nLafOnpU9NZxdMHX2lNBMfOOceG9cHAfbn/WhLT+6l3DjzNkF+w6lHbKCYKysnRvbx3tjnzjM/VXfq2L9o86NxybwRzvG+0f7xfFHU3QCPYDujcmxTgVtY2Xt3Ngx3hvjMbecvjdmxzo3xuPYcvFaWi4BS6sl6thq8Tq2WrzmVkvA3FqJmlsrXnNrxWturQTMrR9vP66fQD+uH6+l9ROwtHmijm0er2Obx2tu8wTM9cbrWG8CjvXGa6k3AUvbJurYtvE6tm285rZNwNzjEzX3+HjNPT5ec49PwNze+t64J4xOBTFPGJ0b28d7YzwTxr7xDtu+CQzbvvE6tm8Cjh2WaD8eFm8/HhavucMSMDc/XsfmJ+DY/HgtzU/A0gmJOnZCvI6dEK+5ExIwd3qi5k6P19zp8Zo7PQFz58Xbj+cl0I/nxWvpvAQsXZKoY5fE69gl8Zq7JAFzl8Xr2GUJOHZZvJYuS8DStYk6dm28jl0br7lrEzB3XaLmrovX3HXxmrsuAXNv1fc2Q/e20z8HzJo6I39sUfbMSZDbsvZ+BBa2tqfOLQq1ysZlM2EfeSZkv2blz5iVHZ4xdXK2aoXrvj5Wg5wbb4n3xgfiaImV+rx8zCPauTGeEe3cG7PPnRvj8fl2fW/ciwSngpgXCc6N7eO9MZ5FwlfxOvarBBz7VbyO/SoBx+7W98Ydu5wKYo5du+M1d3cC5v6RqLl/xGvuH/Ga+0cC5qbo8/Qx92Pnxnj6sXNvzJY6N8ZjaZa+N27HOhXE7NiseM3NSsDc2omaWztec2vHa27tBMz9St8b9+PHqSDmx49zY/t4b4zn8bM73mG7O4Fhuztex+5OwLF7Eu3He+Ltx3viNXdPAuampydorlNBzOY6N3aM98a4grK+N+Z+7NwYTz/OitfSrAQsrZ6oY6vH69jq8ZpbPQFzGydqbuN4zW0cr7mNEzD3Ff25kLgfP04FMT9+nBvbx3tjPI+frfremIetc2M8w9a5N2bHOjfG49iP9b1x92Ongpj78cfxmvtxAubuSNTcHfGauyNec3ckYO6uePvxrgT68a54Ld2VgKW/J+rY3+N17O/xmvt7AuaWK5uguU4FMZvr3Ngx3hvjMbenvjfmfuzcGE8/7hmvpT0TsLRPoo7tE69j+8Rrbp8EzD1Kfy4k7nmFU0HM8wrnxvbx3hjPvKKZvjfmfuzcGE8/du6N2bHOjfE41qfvjbsfOxXE3I998ZrrS8DcNoma2yZec9vEa26bBMztGG8/7phAP+4Yr6UdE7C0Z6KO7RmvY3vGa27PBMwdlqi5w+I1d1i85g5LwNxM/UGauB8/TgUxP36cG9vHe2M8j59q+t6Yh61zYzzD1rk3Zsc6N8bj2Dr63rj7sVNBzP24Trzm1knA3IaJmtswXnMbxmtuwwTMPSbefnxMAv34mHgtPSYBS/2JOtYfr2P98ZrrT8DcToma2yleczvFa26neM2tqH/pKP3Tfow5b4i1K7aTLB30/63ELoU+fc9bd9C/91UaaQZ5p5up27J3XzrphnH4O3/L/sYz502gzu/Yq9wjkK+M8Ar6/XbdGWZszsnU3A3Uvfeb5sqhdkxDfysDtVt59PfLMPYV/Pedup2/5ejTkHw4+l3n95zfSUV87cv+5jvn3T7li7kvPeK+yuh3yqL7MiPuc/7vjP90dJ/9LXvOa2Fw/ab6SJZn/3jwoL/hieDsXNi3hsaqsr+F8DBd19iiWZ3094l0nzJzVv6UwqIyEX/WE0HF+RlpRuTv2FcqobOvLGRqGtKVjagLh44MpHPuwd3oMi3LDP0Br0GXew128QNCf3qEr1JQmfPT+fvUYwH7tjN6VNRBvu+i9alI1zXi0WPrTojgZOu6ZR7Iz9Z1R3/HviLDKuPjKN+uu4KJui1v0K67opG69z2OKnn2t2ca+lsVULtVRn+f+3FUKaJu5285+jQk10a/6/ye8zvOGK6I7s/ScuVi7isfcV9l9DtZ6L6KEfc5/8ePo6path9HTn9uqXXmphXeEI67HvQ3PBGcPYiL87OsEU77Hkc1dV3wONr3JQ6d82flD5xRVHTSvm9rwM8dh3/LCP7UM8n5nRSkSyVsTYloj7SI/5eNuKdsxH0Gp+0WNcWJfHZW8hw8zTI4PVXUdC0j4u/bnJzpYXlUZiS2Que268s6BKfyiJMTr7LMc/JR8YDi5HDBsaJiBE+HW4rn4Fjk3JMVUbdzj0Eb/Tg2F2cjjrcezamSGU7eLM+B/dP5G54Inp5iOHn4+Fh2vVWN2OoN2rZWjsHWqsjWKkY47Zsnm7K3DKrbsc35P34eV4vQ2fc5yx5nDlONaBO8lOWewxwWUbfztw5DtjhyV8Tf4YnHi6PzRNiC5xnHoTrKI9lpI8duHBsO1bYp6H5HVwXVlY7ucf5+Ly2bez7u6w+Rc9NILnhuGEK/21fLlTz7n1vlkU0ZRPtkRLQPXus4dTnzA7zmKmkOgWMWXts4vMshneND/CxzfIGfG1WR7Px0+kkm0jl9rizSORxwe+D5hqNz2hr3K8du3D+cujEnh0M1pHPsPAz9/Urob2M+lSN01Lzd+T/2T6UIzpFrF84toDKoHRxOkW2Gx11GxO9UQfc5vzNZ/8Rj1YNsMRR7QzjuOGOtSgQXHIumF8OTimGR/cb2k9NG1czbF6SeEemEfc7vzI0ow9feMRSxL2HXn450OC4dsJbINGOfPQbPQfycds7I3P+3qxlp2wOff479VVBb21dl9Dt4bETOLyO3hvGaLXL84P0B53eW6J+U3/CzEsevyPgTuU7E9eNnpaPDMS6SG35W7uWuDVuOylei+x1/paI9rkuJcg/i6ong+o+MfJ9ppN/pdAbimob+Fv775dHfZ09nRNTt/K1yaDw68jrUbuUzD2w3p80d/nuf91rG/CPvy4i4rzL6nbLovsyI+5z/43ndaiQ7frf7ZX8tC01/5v4/7oHHss+N5zaR+9x4r7AM8rMRm9S+NWs5E3VbXsvk3hSea3o8B7aXc+H459hox/ojUHvbNzn1ZOOKSso3Gtzktwxu5CjcUbG9h2q4ChENl4ZuSqUaLnLHsDzRcIZ2UVWsO99ph+DE+FSyKnsO3sk1mMXZ2wZZnujbAGc6skpoF85oeqjdhIbob5saYHtnCuhv4plkBcTJ+Z3m6HebaLmSh34KZKDfdXSR2W1ntUvtUhvqh+Rhj7RibLaQHT0RPzM+UeFIfmnob0XOFpy2PJTfnN/J0T8PtYI2tFtl4YxAekS74t0q53fyiuGJ63Luc55YTp24L1UsJfsqRWGf8zvHlWBf5MovlbAvMrNQJuJvpkTRBqaz1WkRvHEbODu9eDxFxiHKBvz8KIfsKmfILvwcKEdwNhcDDoxRTvtFju/iYgBud+d3nN3fQ+3epBO2Os+ggchmqSutNIO83XTQFK+qOhOnh7pE1IcPCeK5qRGb9ErL0IkPy+TJjXhPk1ArLaeebFxRNMcuUg0al+6J3rhUgpPHw7tYSCf+lsnVIA64zt84lP04vViulHnGsmqljqJ4PLwPydRi/paJxVLk1rTdTxqgv20muCirTMTfxA/XTNT2zu+0RL97tJZx6hVvi0c+fHF/xKnL4o4M43sdXvjIcCXPgfydurOMtBc9+U9DHJ32cn7Hq39GO/mnjoVFThrx0aIK6H78u3g8ZZVwH5bLR9yDY1YF4u/giWrk0a3IfoT7Wobn0G3n/I7zWdBDLfDMjEfax5HHsrCPjy+GZ3E+durE4wf7GG8ceIjfxT4u6T4sU4uQyHFJ/R28sWVfHfRPK5ELJk+YU4rn4LbA8RgfVTa5UIn0WeRmCt5FjuzLFdF9zu84aZ1DLVQi78XxfyiyOZkSOuD6v0wJ4b+Tjn4Xx1O8IODcIMDxaSDigI9XGpmL6EWU1KxLLPPsyKwLXkQ59WTjiqLJupjJOOxrODOTqdgn/hUjGq7EdFXkjATPhJyGM5muwlHV+RuHMq600lWZxN8zdHBO4cOP0bRBZfSzUgntwr0Ci5x543SQuQG2bwWGUyE4AuOZhPM7rdDvOqkrfGAVr6ycpxZeYQ1G91AH+k1uqVeIqDutGDt9iPOJiJ+h1Go4kh+e4UfOMBzdoXzl/I7zGpx/I0VVGbUfblecwnF+p10xPHFdzn3OUwqvCPFsvTTsqxKFfc7vlLRCizzcm0rY59iFP3CB/2ZKFG3APZ6qRNQduUrBbdBd/8TjKTL2UDbgZ0YFpHNiRlmiXpNHIDBnx8bIMVjcOKVSySWtziLvxc+GkuIsXhVQO1x45+8NLctc6eWo/8eVnu0HZzXXOfPAvx/LKrC6Z3+56Q/A27oezmFVpHNehYd3VXs5B1+R7kStw0dYeiP7nJ99tA5/YKWv1jnxAa9wnXsroL9nv79iXP74Kd1D1Po3crYYeUXUNLhoxszxU6fgu8pGWZPBFaI31rUAzjqYOcC5b26O/47zE8dWrr+FD+TjOVZJC1t8XylkoiyDzy1vFc07cnczcsfdkA8s3IbpngPHovN3DR07OeAD8Gm67sgMD94tPUb/pJ7HKZ6DjyM5/OPJ2qqc3KL8gnDQX+Qrys+xQn6ryOfzWV6vP+wNeYuCeMcrpnpz/cFwOBwMq3CgqFAVFOaGvMGAr7AwP7coLycvxLSbriIVHtQOKUjGf6ukcup38RnpNOL3mOyJvPa2k6EPmYdijct4nWzq1II9Hp0xOXPfF2T2L8r/5+GIh1LFCMplPAfTx8tSyiS8RVauhPuKu/CQdu7D3cy+TIZXPO3CnDwRnCLtM/iILczyHDgkSuKEk3Cm9lxN2kud8CsX0d54SxD3hcjtikpEm0QudzswtQn++07dzt+qjGxx5B6ozOGJpzWRJ14jPx9q29gJ1ZFGtFHkI664tsXTJTy1d346ywd8UMI5OWm6P+AlcZrn4EMhJqe4aejvX4l4DNIyTnLjZVfkVnAZT/zvDIi8z/l7+L0qaTHch09Nl4+4z2Bb7n03T3oUnCI/IZHiOXhJ7YwxPJXDdad4Dj4V7dxj0EYf9QyjbKQO8Rni5Ke2uyhO1AEJQ5xyqNQaxSnyEzD4cEpkKgD3BVw3PjVfin0hlzoEQtkY+d4ng5wC1LOF4kSldQxxCuJnZ3GcIt/XkeI5+P1/VF/Adad4Dp4XlEJfyMPzgeJsjEwRGOSUb9dXNQpOke/2MMipwK6vWhSc8LsT7cv2a+S7Zai+gA+Tp6DfjewL+B05+LmO30fj6Jz3N+HtVOe11njb1dm+xVu2NbSM41xNJDs/nRen4/ndkVrG7+Fx3nmJ38PjvDcVv8eirpbxe3jwgSJH59h+GNI5Nh2OdI7tRyCd09Z429rxZQ2kc9oe2+20by2kc9roSKRz2qg20jlthN8X67SRY7dz8NfhmEb8HTx3i3x+4sOGHs+B8xb8/DS0BgvhZ0vkvJg6RHyD/hntAdNMVLdjH/XpOUPbKoXUeg5zcXg6v3NrMfbhd/DgrfzId/BEzsf3pl4zzdhn83gc8fvnmABKuZhav1PPW9yXPJ4D32uL51mR4yByLYbXHcV9Atf5nQf1z0O9g6e01rU4LdsX26f98SQqfxrdT72DZzNR7kFcPRFc/5GR75Pv4Nknv47azY3v4HkOyY7f7WfLeC1LTsOnGeTtpk+G4jlLNJ8Mxal2XPcJRFq9W8RzB6facVq9B5FW70mk1XsRafUTibR6byKt3geNE0fXF40B+8KfesXPeUPHJkKx7rmX1ldj1NN1/fMu8p5F82Z2nBLqmz9j1vj8SR1DoRkRbySPfFJFk1HB+kN9Swa1a4Z3xpzWMJRMsvAOrPP30yI449lvWfOclLNaL4lT5IFWg5y81CyE4hS5msWr00zEzVm5Ria5nXsyI+rGuxiGbPRRBy4oG6k3vhviRO5uUpwiD48Y5ETublKcYt3dTI34feeeyI9slkJfIHc3KRup3U1DnMjdTYoTtbtpiBO5u0lxinV3MzXi9517KkXUXQp9gdzdpGykdjcNcSJ3NylO1O6mIU7k7ibFidrdjHxLPdUXcN14d7MU+8LenZvDorDR4Yp3Fh0Zz6CdXUY8g8ZfGujonF1GPIN2dhnxDNrZZcSxF+8yOj+dXUY8g66N+Ds6Z5cR77g6u4x4x9WZUeIdV+eLKvGOq9NGuF2c9sM7rs4cEK9enHbDO65Ou+EdV6fd8I6r0264LZx2wzuuTrvhHVen3fCOq9NudZHOabd6SOe0m9MW5T0H+lfe6tkfMplJyvSYO7yKV8+RczjbD86KtGfE7hS1sqYOsRtbtQX9OQZXqQccdMYr/shTMXi89UDt4PS1nmg3AMeBXhG7DtWQzlkPVkD3TJk6a3x4XqcZRfmzikK9p84qwotG3PHwhReRkUcUnN9PJ34XL/4yiXJ8lSnh7+LfczpO5MsKcWfC72lpjjgIDAp5BrcsRLzDAD9IOT+9gj8d4tyb6TH2wjM/Hvge9Dfwhbes8CaEqQBlBwfnAQ9bVrBZNTh/0vhQ/qzxU6f0L5o+u2jmLLwfFfle3eL2qpzfSUG6kr49D184I+T8Pplp8xhpGnL/KtJ+fPqprHlO5P4VxYnavzLEidy/ojjFun+VFvH7zj2ZEXXjtYkhG8n9K8rGyLkPfv7jkOXMhfHaBH8Ix9FVjGgDHDapb1bCa5PIrD6e5+MPAOG/K/Dx6De5h20yvuDHY+QHcst6DuwHnYh5XidinueskyCU98+fEpo6uev4okmhaLIFkRfuVbjnUh8d7qe7jcgelB/MMfbQ9/r3TrAyzbTJAT0oMuKneA793dl2GfWx4hQNZ1LUhShzJltdiTJn0nUCUeZMvroRZU5esztR5qyGehBl1KrSKXNWQb2IMifveSJR5uQ/exNlTh60D1Hm5EP7EmX9tK4fUdZf6/oTZQO0bgBRNlDrBhJlg7RuEFE2WOsGE2Unad1JRNkQrRtClA3VuqFE2TCtG0aUDde64UTZCK0bQZSN1LqRRNkorRtFlI3WutFE2RitG0OU5WtdPlFWoHUFRFmh1hUSZSGtCxFlRVpXRJSFtS5MlI3VurFE2TitG0eUjde68UTZBK2bQJRN1LqJRNkkrZtElE3WuslE2RStm0KUTdW6qUTZNK2bRpRN17rpRNkMrZtBlM3UuplE2Sytm0WUzda62UTZHK2bQ5TN1bq5RNnJWncyUTZP6+YRZfO1bj5RtkDrFhBlp2jdKUTZqVp3KlF2mtadRpSdrnWnE2ULtW4hUbZI6xYRZYu1bjFRtkTrlhBlZ2jdGUTZmVp3JlF2ltadRZSdrXVnE2VLtW4pUXaO1p1DlC3TumVE2XKtW06UrdC6FUTZSq1bSZSt0rpVRNm5WncuUbZa61YTZedp3XlE2RqtW0OUrdW6tUTZ+Vp3PlF2gdZdQJRdqHUXEmUXad1FRNnFWncxUXaJ1l1ClK3TunVE2aVadylRdpnWXUaUrde69UTZ5Vp3OVF2hdZdQZRdqXVXEmVXad1VRNnVWnc1UXaN1l1DlF2rddcSZRu0bgNRdp3WXUeUXa911xNlN2jdDUTZRq3bSJTdqHU3EmU3ad1NRNnNWnczUXaL1t1ClN2qdbcSZbdp3W1E2e1adztRdofW3UGU3al1dxJld2ndXUTZ3Vp3N1F2j9bdQ5Tdq3X3EmX3ad19RNn9Wnc/UfaA1j1AlD2odQ8SZQ9p3UNE2cNa9zBR9ojWPUKUPap1jxJlj2ndY0TZ41r3OFH2hNY9QZQ9qXVPEmVPad1TRNnTWvc0UfaM1j1DlD2rdc8SZc9p3XNE2fNa9zxR9oLWvUCUvah1LxJlL2ndS0TZy1r3MlG2Ses2EWWvaN0rRNmrWvcqUfaa1r1GlL2uda8TZZu1bjNR9obWvUGUval1bxJlb2ndW0TZ21r3NlG2Reu2EGVbtW4rUfaO1r1DlG3Tum1E2bta9y5R9p7WvUeUva917xNlH2jdB0TZh1r3IVG2Xeu2E2Ufad1HRNnHWvcxUfaJ1n1ClH2qdZ8SZZ9p3WdE2eda9zlR9oXWfUGUfal1XxJlO7RuB1H2ldZ9RZR9rXVfE2XfaN03RNlOrdtJlH2rdd8SZd9p3XdE2S6t20WUfa913xNlP2jdD0TZj1r3I1G2W+t2E2U/ad1PRNnPWvczUfaL1v1ClP2qdb8SZb9p3W9E2e9a9ztR9ofW/UGU/al1fxJlf2ndX0TZHq3bQ5T9rXV/E2X/pDjKHVxWxtERZSlal0KUpWpdKlGWpnVpRFm61qUTZRlal0GUldW6skRZptZlEmXltK4cUVZe68oTZRW0rgJRlqV1WURZRa2rSJRV0rpKRFllratMlFXRuipEWVWtq0qUVdO6akTZYVp3GFF2uNYdTpQdoXVHEGXVta46UVZD62oQZTW1riZRVkvrahFlR2rdkURZba2rTZTV0bo6RFldratLlNXTunpE2VFadxRRlq112URZfa2rT5Q10LoGRFlDrWtIlDXSukZEWWOta0yUHa11RxNlTbSuCVHWVOuaEmXNtK4ZUXaM1h1DlDXXuuZEWQuta0GUtdS6lkRZK61rRZS11rrWRJmldRZRprROEWVerfMSZT6t8xFlfq3zE2U5WpdDlOVqXS5RFtC6AFEW1LogUZandXlEWRuta0OUtdW6tkRZO61rR5Qdq3XHEmXtta49UXac1h1HlHXQug5EWUet60iUHa91xxNlnbSuE1HWWes6E2VdtK4LUdZV67oSZSdo3QlEWTet60aUdde67kRZD63rQZT11LqeRFkvretFlJ2odScSZb21rjdR1kfr+hBlfbWuL1HWT+v6EWX9ta4/UTZA6wYQZQO1biBRNkjrBhFlg7VuMFF2ktadRJQN0bohRNlQrRtKlA3TumFE2XCtG06UjdC6EUTZSK0bSZSN0rpRRNlorRtNlI3RujFEWb7W5RNlBVpXQJQVal0hURbSuhBRVqR1RURZWOvCRNlYrRtLlI3TunFE2XitG0+UTdC6CUTZRK2bSJRN0rpJRNlkrZtMlE3RuilE2VStm0qUTdO6aUTZdK2bTpTN0LoZRNlMrZtJlM3SullE2Wytm02UzdG6OUTZXK2bS5SdrHUnE2XztG4eUTZf6+YTZQu0bgFRdorWnUKUnap1pxJlp2ndaUTZ6Vp3OlG2UOsWEmWLtG4RUbZY6xYTZUu0bglRdobWnUGUnal1ZxJlZ2ndWUTZ2Vp3NlG2VOuWEmXnaN05RNkyrVtGlC3XuuVE2QqtW0GUrdS6lUTZKq1bRZSdq3XnEmWrtW41UXae1p1HlK3RujVE2VqtW0uUna915xNlF2jdBUTZhVp3IVF2kdZdRJRdrHUXE2WXaN0lRNk6rVtHlF2qdZcSZZdp3WVE2XqtW0+UXa51lxNlV2jdFUTZlVp3JVF2ldZdRZRdrXVXE2XXaN01RNm1WnctUbZB6zYQZddp3XVE2fVadz1RdoPW3UCUbdS6jUTZjVp3I1F2k9bdRJTdrHU3E2W3aN0tRNmtWncrUXab1t1GlN2udbcTZXdo3R1E2Z1adydRdpfW3UWU3a11dxNl92jdPUTZvVp3L1F2n9bdR5Tdr3X3E2UPaN0DRNmDWvcgUfaQ1j1ElD2sdQ8TZY9o3SNE2aNa9yhR9pjWPUaUPa51jxNlT2jdE0TZk1r3JFH2lNY9RZQ9rXVPE2XPaN0zRNmzWvcsUfac1j1HlD2vdc8TZS9o3QtE2Yta9yJR9pLWvUSUvax1LxNlm7RuE1H2ita9QpS9qnWvEmWvad1rRNnrWvc6UbZZ6zYTZW9o3RtE2Zta9yZR9pbWvUWUva11bxNlW7RuC1G2Veu2EmXvaN07RNk2rdtGlL2rde8SZe9p3XtE2fta9z5R9oHWfUCUfah1HxJl27VuO1H2kdZ9RJR9rHUfE2WfaN0nRNmnWvcpUfaZ1n1GlH2udZ8TZV9o3RdE2Zda9yVRtkPrdhBlX2ndV0TZ11r3NVH2jdZ9Q5Tt1LqdRNm3WvctUfad1n1HlO3Sul1E2fda9z1R9oPW/UCU/ah1PxJlu7VuN1H2k9b9RJT9rHU/E2W/aN0vRNmvWvcrUfab1v1GlP2udb8TZX9o3R9E2Z9a9ydR9pfW/UWU7dG6PUTZ31r3N1H2z8eZyh9cVsbREWUpWpdClKVqXSpRlqZ1aURZutalE2UZWpdBlJXVurJEWabWZRJl5bSuHFFWXuvKE2UVtK4CUZaldVlEWUWtq0iUVdK6SkRZZa2rTJRV0boqRFlVratKlFXTumpE2WFadxhRdrjWHU6UHaF1RxBl1bWuOlFWQ+tqEGU1ta4mUVZL62oRZUdq3ZFEWW2tq02U1dG6OkRZXa2rS5TV07p6RNlRWncUUZatddlEWX2tq0+UNdC6BkRZQ61rSJQ10rpGRFljrWtMlB2tdUcTZU20rglR1lTrmhJlzbSuGVF2jNYdQ5Q117rmRFkLrWtBlLXUupZEWSuta0WUtda61kSZpXUWUaa0ThFlXq3zEmU+rfMRZX6t8xNlOVqXQ5Tlal0uURbQugBRFtS6IFGWp3V5RFkbrWtDlLXVurZEWTuta0eUHat1xxJl7bWuPVF2nNYdR5R10LoORFlHretIlB2vdccTZZ20rhNR1lnrOhNlXbSuC1HWVeu6EmUnaN0JRFk3retGlHXXuu5EWQ+t60GU9dS6nkRZL63rRZSdqHUnEmW9ta43UdZH6/oQZX21ri9R1k/r+hFl/bWuP1E2QOsGEGUDtW4gUTZI6wYRZYO1bjBRdpLWnUSUDdG6IUTZUK0bSpQN07phRNlwrRtOlI3QuhFE2UitG0mUjdK6UUTZaK0bTZSN0boxRFm+1uUTZQVaV0CUFWpdIVEW0roQUVakdUVEWVjrwkTZWK0bS5SN07pxRNl4rRtPlE3QuglE2UStm0iUTdK6SUTZZK2bTJRN0bopRNlUrZtKlE3TumlE2XStm06UzdC6GUTZTK2bSZTN0rpZRNlsrZtNlM3RujlE2Vytm0uUnax1JxNl87RuHlE2X+vmE2ULtG4BUXaK1p1ClJ2qdacSZadp3WlE2eladzpRtlDrFhJli7RuEVG2WOsWE2VLtG4JUXaG1p2Byg71RrJMj6G3QOi3V5h6HzV+gxh+ORJ+2ZGjc94M4rSH/T6BPin7ZPttE2dqvXPZb5tw3ipYNHn8rC5TCmfMm6bfKtZr6lhPxJVKyI699tUhZX95BnGP87tlNLA+JeJ+53dtyuWQrYdHlHfQ/7cSu/a+m+IIM3Vb+A1IDn/qLYcexr+J2z7yu/E82r7Ir+bN9Bzolw5MbYuq3Ps38d+wL/zm0jIEp/KojPvFaRXM1H2Azx3+FQ7hh0jbsZyCfpcqp3RZxN+pRuj+B4aLskdWfgwA","debug_symbols":"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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":"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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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns","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":5,"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":"00000000000000000000000000000000000000000000000000000000906cb9c3"},{"kind":"string","value":"EcdsaPublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"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":"EcdsaRAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaRAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}}],"kind":"struct","path":"EcdsaRAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaRAccount::constructor_abi"}]}},"file_map":{"106":{"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::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::{raw_storage_read, storage_read}\n};\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"},"112":{"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, public_call_stack_item::PublicCallStackItem,\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"},"120":{"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"},"121":{"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, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{\n hash::sha256_to_field, address::AztecAddress, point::Point, abis::note_hash::NoteHash,\n constants::MAX_NOTE_HASHES_PER_CALL\n};\n\nunconstrained fn compute_unconstrained<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], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n )\n}\n\nfn compute<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], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\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 (encrypted_log, log_hash)\n}\n\nfn emit_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n inner_compute: fn(AztecAddress, Field, Field, OvpkM, IvpkM, AztecAddress, Note) -> ([u8; M], Field)\n) 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 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 let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (encrypted_log, log_hash) = inner_compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\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 emit_with_keys(context, e.note, ovpk, ivpk, iv, compute);\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 let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute_unconstrained);\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 emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute);\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 emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute_unconstrained);\n }\n}\n"},"122":{"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::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n scalar::Scalar, point::Point, hash::poseidon2_hash_with_separator\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n use crate::context::PrivateContext;\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"},"123":{"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"},"124":{"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, point::Point};\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 { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(_self: Self, _context: &mut PrivateContext, _note_hash_for_nullify: Field) -> 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] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\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 { EventSelector::from_signature(\"TestEvent(Field,Field,Field)\") }\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, 185, 29, 14, 152, 216, 130, 219, 151, 80, 185, 43, 223, 167, 8, 89, 189, 88, 188, 101, 137, 255, 136, 84, 252, 79, 18, 52, 3, 110, 54, 54, 206, 244, 209, 246, 226, 207, 247, 143, 253, 211, 75, 160, 224, 172, 41, 45, 7, 208, 137, 90, 56, 59, 4, 234, 48, 53, 23, 130, 230, 49, 249, 142, 243, 170, 72, 183, 242, 49, 124, 46, 52, 198, 75, 55, 102, 56, 89, 254, 67, 59, 157, 249, 120, 184, 67, 154, 16, 148, 227, 93, 37, 120, 199, 93, 166, 80, 127, 173, 52, 80, 135, 87, 1, 168, 164, 51, 48, 126, 120, 47, 102, 211, 227, 234, 170, 208, 99, 111, 198, 170, 226, 156, 244, 241, 174, 206, 30\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"},"128":{"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, MAX_NOTES_PER_PAGE, 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\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"},"130":{"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"},"131":{"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"},"132":{"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"},"140":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH, MAX_ARGS_LENGTH\n},\n traits::Hash,\n hash::{\n pedersen_hash, compute_siloed_nullifier, sha256_to_field, pedersen_commitment,\n poseidon2_hash_with_separator\n}\n};\n// Note: pedersen_commitment is used only as a re-export here\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\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 hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(chunks_hashes, 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..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\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"},"141":{"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"},"143":{"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"},"145":{"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"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage,\n utils::arr_copy_slice\n};\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(block_number: u32, public_data_tree_index: Field) -> 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"},"147":{"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"},"150":{"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"},"151":{"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"},"153":{"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"},"154":{"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/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"},"157":{"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, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, 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"},"158":{"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"},"160":{"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"},"163":{"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"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\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"},"181":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator\n};\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"},"185":{"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"},"2":{"path":"std/array.nr","source":"use crate::cmp::Ord;\nuse crate::convert::From;\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 pub fn sort(self) -> Self where T: Ord {\n self.sort_via(|a: T, b: T| a <= b)\n }\n\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n let sorted_index = unsafe {\n // Safety: These indices are asserted to be the sorted element indices via `find_index`\n let sorted_index: [u32; N] = self.get_sorting_index(ordering);\n\n for i in 0..N {\n let pos = find_index(sorted_index, i);\n assert(sorted_index[pos] == i);\n }\n\n sorted_index\n };\n\n // Sort the array using the indexes\n let mut result = self;\n for i in 0..N {\n result[i] = self[sorted_index[i]];\n }\n // Ensure the array is sorted\n for i in 0..N - 1 {\n assert(ordering(result[i], result[i + 1]));\n }\n\n result\n }\n\n /// Returns the index of the elements in the array that would sort it, using the provided custom sorting function.\n unconstrained fn get_sorting_index<Env>(self, ordering: fn[Env](T, T) -> bool) -> [u32; N] {\n let mut result = [0; N];\n let mut a = self;\n for i in 0..N {\n result[i] = i;\n }\n for i in 1..N {\n for j in 0..i {\n if ordering(a[i], a[j]) {\n let old_a_j = a[j];\n a[j] = a[i];\n a[i] = old_a_j;\n let old_j = result[j];\n result[j] = result[i];\n result[i] = old_j;\n }\n }\n }\n result\n }\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<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\n// helper function used to look up the position of a value in an array of Field\n// Note that function returns 0 if the value is not found\nunconstrained fn find_index<let N: u32>(a: [u32; N], find: u32) -> u32 {\n let mut result = 0;\n for i in 0..a.len() {\n if a[i] == find {\n result = i;\n }\n }\n result\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"},"202":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\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))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: Point::empty(),\n sk_app: 0,\n }\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 {\n pk_m: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"22":{"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 {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\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) | ((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"},"23":{"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"},"24":{"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"},"253":{"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"},"259":{"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 { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\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 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\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 { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\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"},"260":{"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"},"263":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/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 {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\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"},"265":{"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, point::Point\n};\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 pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\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"},"27":{"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{\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{\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"},"271":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{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 {\n x: 0,\n y: 0,\n is_infinite: false\n }\n }\n}\n"},"272":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, 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"},"284":{"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"},"288":{"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"},"309":{"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"},"311":{"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"},"32":{"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 {\n _state: &[],\n }\n }\n}\n"},"323":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash_with_separator,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, 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 {\n inner : 0\n }\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"},"325":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, FromField, 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"},"326":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, 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"},"388":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr","source":"use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteInterface, NoteGetterOptions, PrivateContext};\n\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 ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5;\n// ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN: Field = 5 * 32 + 64;\n\n// Stores an ECDSA public key composed of two 32-byte elements\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 EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\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<ECDSA_PUBLIC_KEY_NOTE_LEN, ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = npk_m_hash\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n\n [x, last_x, y, last_y, self.npk_m_hash]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x:[u8; 32] = serialized_note[0].to_be_bytes();\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes::<32>()[31];\n\n let part_y:[u8; 32] = serialized_note[2].to_be_bytes();\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes::<32>()[31];\n\n EcdsaPublicKeyNote { x, y, npk_m_hash: serialized_note[4], header: NoteHeader::empty() }\n }\n\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 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 note_hash_for_nullify,\n secret,\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], npk_m_hash: Field) -> Self {\n EcdsaPublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"389":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_r_account_contract/src/main.nr","source":"// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\ncontract EcdsaRAccount {\n use dep::aztec::prelude::{PrivateContext, PrivateImmutable};\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys,\n keys::getters::get_current_public_keys\n };\n\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[aztec(storage)]\n struct Storage {\n public_key: PrivateImmutable<EcdsaPublicKeyNote>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\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 = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.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\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[aztec(private)]\n #[aztec(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 // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\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 payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n std::ecdsa_secp256r1::verify_signature(public_key.x, public_key.y, signature, hashed_message)\n }\n}\n"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\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 pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\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 /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\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 /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\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 pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\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 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 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 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 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 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 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"},"55":{"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 {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"69":{"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"},"70":{"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 `keccak256(\"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 = 0xabf64ad4; // 4 first bytes of keccak256(\"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(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(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"},"71":{"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"},"72":{"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(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\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"},"74":{"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(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\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"},"80":{"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"},"81":{"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"},"82":{"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};\nuse crate::keys::constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\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"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, point::Point, storage::map::derive_storage_slot_in_map,\n traits::is_empty\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, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}\n},\n state_vars::{\n shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter,\n public_mutable::PublicMutable, map::Map\n}\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\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// 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"},"98":{"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::{context::PrivateContext, 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"}}}