From e02fe43646a1e444701642ee37ebc66ae95d4ed7 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Tue, 28 May 2024 12:29:04 +0200 Subject: [PATCH 01/39] Now hash the TransferTarget into Transaction transparent outputs. --- crates/benches/native_vps.rs | 2 +- crates/core/src/masp.rs | 14 ++++++++++---- crates/node/src/bench_utils.rs | 6 +++--- crates/sdk/src/masp.rs | 9 +-------- crates/sdk/src/tx.rs | 2 +- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/crates/benches/native_vps.rs b/crates/benches/native_vps.rs index 0ad8a637b5..b538c21b19 100644 --- a/crates/benches/native_vps.rs +++ b/crates/benches/native_vps.rs @@ -400,7 +400,7 @@ fn prepare_ibc_tx_and_ctx(bench_name: &str) -> (BenchShieldedCtx, BatchedTx) { shielded_ctx.generate_shielded_action( Amount::native_whole(10), TransferSource::ExtendedSpendingKey(albert_spending_key), - TransferTarget::Address(defaults::bertha_address()), + defaults::bertha_address().to_string(), ) } _ => panic!("Unexpected bench test"), diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index a63c055d5f..d5a2522610 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -13,7 +13,7 @@ use namada_migrations::*; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; -use crate::address::{Address, DecodeError, HASH_HEX_LEN, MASP}; +use crate::address::{Address, DecodeError, HASH_HEX_LEN, IBC, MASP}; use crate::impl_display_and_from_str_via_format; use crate::storage::Epoch; use crate::string_encoding::{ @@ -411,12 +411,14 @@ impl Display for TransferSource { } /// Represents a target for the funds of a transfer -#[derive(Debug, Clone)] +#[derive(Debug, Clone, BorshDeserialize, BorshSerialize, BorshDeserializer)] pub enum TransferTarget { /// A transfer going to a transparent address Address(Address), /// A transfer going to a shielded address PaymentAddress(PaymentAddress), + /// A transfer going to an IBC address + Ibc(String), } impl TransferTarget { @@ -424,9 +426,12 @@ impl TransferTarget { pub fn effective_address(&self) -> Address { match self { Self::Address(x) => x.clone(), - // An ExtendedSpendingKey for a source effectively means that - // assets will be drawn from the MASP + // A PaymentAddress for a target effectively means that assets will + // be sent to the MASP Self::PaymentAddress(_) => MASP, + // An IBC signer address for a target effectively means that assets + // will be sent to the IBC internal address + Self::Ibc(_) => IBC, } } @@ -452,6 +457,7 @@ impl Display for TransferTarget { match self { Self::Address(x) => x.fmt(f), Self::PaymentAddress(address) => address.fmt(f), + Self::Ibc(x) => x.fmt(f), } } } diff --git a/crates/node/src/bench_utils.rs b/crates/node/src/bench_utils.rs index da0828ecc7..dbfd52a848 100644 --- a/crates/node/src/bench_utils.rs +++ b/crates/node/src/bench_utils.rs @@ -1132,12 +1132,12 @@ impl BenchShieldedCtx { self, amount: Amount, source: TransferSource, - target: TransferTarget, + target: String, ) -> (Self, BatchedTx) { let (ctx, tx) = self.generate_masp_tx( amount, source.clone(), - TransferTarget::Address(Address::Internal(InternalAddress::Ibc)), + TransferTarget::Ibc(target.clone()), ); let token = PrefixedCoin { @@ -1165,7 +1165,7 @@ impl BenchShieldedCtx { packet_data: PacketData { token, sender: source.effective_address().to_string().into(), - receiver: target.effective_address().to_string().into(), + receiver: target.into(), memo: "".parse().unwrap(), }, timeout_height_on_b: timeout_height, diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index 7247d3e2c5..747cdbd0d9 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -1762,14 +1762,7 @@ impl ShieldedContext { // the transparent target address into the shielded transaction so that // it can be signed let transparent_target_hash = if payment_address.is_none() { - let target_enc = target - .address() - .ok_or_else(|| { - Error::Other( - "target address should be transparent".to_string(), - ) - })? - .serialize_to_vec(); + let target_enc = target.serialize_to_vec(); Some(ripemd::Ripemd160::digest(sha2::Sha256::digest( target_enc.as_ref(), ))) diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 5dc90cec70..a0e01dc021 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -2512,7 +2512,7 @@ pub async fn build_ibc_transfer( context, &args.source, // The token will be escrowed to IBC address - &TransferTarget::Address(Address::Internal(InternalAddress::Ibc)), + &TransferTarget::Ibc(args.receiver.clone()), &args.token, validated_amount, !(args.tx.dry_run || args.tx.dry_run_wrapper), From 6cbe813b87b8c06e7493bc316e0c7c825aabeec7 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Fri, 31 May 2024 18:41:34 +0200 Subject: [PATCH 02/39] Modified the MASP VP to check the IBC receivers. --- crates/namada/src/ledger/native_vp/masp.rs | 253 +++++++++++++++------ crates/sdk/src/lib.rs | 2 +- crates/sdk/src/masp.rs | 4 +- wasm/checksums.json | 48 ++-- 4 files changed, 216 insertions(+), 91 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index edca2b17d0..a1dd050f94 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -3,6 +3,7 @@ use std::cmp::Ordering; use std::collections::{BTreeMap, BTreeSet}; +use borsh::BorshDeserialize; use borsh_ext::BorshSerializeExt; use masp_primitives::asset_type::AssetType; use masp_primitives::merkle_tree::CommitmentTree; @@ -17,12 +18,15 @@ use namada_core::address::InternalAddress::Masp; use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; +use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::masp::encode_asset_type; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; +use namada_ibc::event as ibc_events; +use namada_ibc::event::IbcEvent; use namada_proof_of_stake::Epoch; -use namada_sdk::masp::verify_shielded_tx; +use namada_sdk::masp::{verify_shielded_tx, TransferTarget}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; use namada_token::read_denom; use namada_tx::BatchedTxRef; @@ -31,18 +35,22 @@ use ripemd::Digest as RipemdDigest; use sha2::Digest as Sha2Digest; use thiserror::Error; use token::storage_key::{ - is_any_shielded_action_balance_key, is_masp_key, is_masp_nullifier_key, + balance_key, is_any_token_balance_key, is_masp_key, is_masp_nullifier_key, is_masp_token_map_key, is_masp_transfer_key, masp_commitment_anchor_key, masp_commitment_tree_key, masp_convert_anchor_key, masp_nullifier_key, - ShieldedActionOwner, }; use token::Amount; +use crate::address::InternalAddress; +use crate::ledger::ibc::storage::{ + ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, +}; use crate::ledger::native_vp; use crate::ledger::native_vp::{Ctx, NativeVp}; +use crate::sdk::ibc::apps::transfer::types::is_sender_chain_source; use crate::token; use crate::token::MaspDigitPos; -use crate::uint::I320; +use crate::uint::{Uint, I320}; use crate::vm::WasmCacheAccess; #[allow(missing_docs)] @@ -73,7 +81,8 @@ where #[derive(Default)] struct ChangedBalances { tokens: BTreeMap, - decoder: BTreeMap, + decoder: BTreeMap, + ibc_denoms: BTreeMap, pre: BTreeMap>, post: BTreeMap>, } @@ -280,66 +289,183 @@ where Ok(()) } + /// Look up the IBC denomination from a IbcToken. + pub fn query_ibc_denom( + &self, + token: impl AsRef, + owner: Option<&Address>, + ) -> Result { + let hash = match Address::decode(token.as_ref()) { + Ok(Address::Internal(InternalAddress::IbcToken(hash))) => { + hash.to_string() + } + _ => return Ok(token.as_ref().to_string()), + }; + + if let Some(owner) = owner { + let ibc_trace_key = ibc_trace_key(owner.to_string(), &hash); + if let Some(ibc_denom) = self.ctx.read_pre(&ibc_trace_key)? { + return Ok(ibc_denom); + } + } + + // No owner is specified or the owner doesn't have the token + let ibc_denom_prefix = ibc_trace_key_prefix(None); + let ibc_denoms = self.ctx.iter_prefix(&ibc_denom_prefix)?; + for (key, ibc_denom, _gas) in ibc_denoms { + if let Some((_, token_hash)) = + is_ibc_trace_key(&Key::parse(key).into_storage_result()?) + { + if token_hash == hash { + return String::try_from_slice(&ibc_denom[..]) + .into_storage_result() + .map_err(Error::NativeVpError); + } + } + } + + Ok(token.as_ref().to_string()) + } + // Check that transfer is pinned correctly and record the balance changes fn validate_state_and_get_transfer_data( &self, keys_changed: &BTreeSet, ) -> Result { // Get the changed balance keys - let mut counterparts_balances = keys_changed - .iter() - .filter_map(is_any_shielded_action_balance_key); - - counterparts_balances.try_fold( - ChangedBalances::default(), - |mut result, (token, counterpart)| { - let denom = read_denom(&self.ctx.pre(), token)?.ok_or_err_msg( - "No denomination found in storage for the given token", - )?; - unepoched_tokens(token, denom, &mut result.tokens)?; - let counterpart_balance_key = counterpart.to_balance_key(token); - let mut pre_balance: Amount = self - .ctx - .read_pre(&counterpart_balance_key)? - .unwrap_or_default(); - let mut post_balance: Amount = self - .ctx - .read_post(&counterpart_balance_key)? - .unwrap_or_default(); - if let ShieldedActionOwner::Minted = counterpart { - // When receiving ibc transfers we mint and also shield so - // we have two credits/debits, we need - // to mock the mint balance as - // the opposite change - std::mem::swap(&mut pre_balance, &mut post_balance); - } + let mut counterparts_balances = + keys_changed.iter().filter_map(is_any_token_balance_key); + + let mut changed_balances = counterparts_balances + .try_fold( + ChangedBalances::default(), + |mut result, [token, counterpart]| { + let denom = read_denom(&self.ctx.pre(), token)? + .ok_or_err_msg( + "No denomination found in storage for the given \ + token", + )?; + unepoched_tokens(token, denom, &mut result.tokens)?; + let counterpart_balance_key = + balance_key(token, counterpart); + let pre_balance: Amount = self + .ctx + .read_pre(&counterpart_balance_key)? + .unwrap_or_default(); + let post_balance: Amount = self + .ctx + .read_post(&counterpart_balance_key)? + .unwrap_or_default(); + // Make it possible to decode IBC tokens + result.ibc_denoms.insert( + self.query_ibc_denom( + token.to_string(), + Some(counterpart), + ) + .map_err(native_vp::Error::new)?, + token.clone(), + ); + // Public keys must be the hash of the sources/targets + let address_hash = TransparentAddress(<[u8; 20]>::from( + ripemd::Ripemd160::digest(sha2::Sha256::digest( + &TransferTarget::Address(counterpart.clone()).serialize_to_vec(), + )), + )); + // Enable the decoding of these counterpart addresses + result.decoder.insert( + address_hash, + TransferTarget::Address(counterpart.clone()), + ); + let pre_entry = result + .pre + .entry(address_hash) + .or_insert(ValueSum::zero()); + let post_entry = result + .post + .entry(address_hash) + .or_insert(ValueSum::zero()); + *pre_entry = checked!( + pre_entry + + &ValueSum::from_pair( + (*token).clone(), + pre_balance + ) + ) + .map_err(native_vp::Error::new)?; + *post_entry = checked!( + post_entry + + &ValueSum::from_pair( + (*token).clone(), + post_balance + ) + ) + .map_err(native_vp::Error::new)?; + Result::<_>::Ok(result) + }, + ) + .unwrap(); + + // Extract the IBC events + let ibc_events: BTreeSet<_> = self + .ctx + .state + .write_log() + .get_events_of::() + .collect(); + + // Go through the IBC events and note the balance chages they imply + for ibc_event in ibc_events { + // Try to extract an IBC packet from this event + let Ok(msg) = ibc_events::packet_from_event_attributes( + &ibc_event.clone().into_attributes(), + ) else { + continue; + }; + // Check if this is a Transfer packet + if let Ok(packet_data) = + serde_json::from_slice::(&msg.data) + { + let address = + TransferTarget::Ibc(packet_data.receiver.to_string()); // Public keys must be the hash of the sources/targets let address_hash = TransparentAddress(<[u8; 20]>::from( ripemd::Ripemd160::digest(sha2::Sha256::digest( - &counterpart.to_address_ref().serialize_to_vec(), + &address.serialize_to_vec(), )), )); + changed_balances.decoder.insert(address_hash, address); + let pre_entry = changed_balances + .pre + .entry(address_hash) + .or_insert(ValueSum::zero()); + let post_entry = changed_balances + .post + .entry(address_hash) + .or_insert(ValueSum::zero()); + let token = changed_balances + .ibc_denoms + .get(&packet_data.token.denom.to_string()) + .ok_or_err_msg("Unable to decode IBC token")?; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0) + .unwrap(), + ); + if is_sender_chain_source( + msg.port_id_on_a.clone(), + msg.chan_id_on_a.clone(), + &packet_data.token.denom, + ) { + *post_entry = checked!(post_entry + &delta) + .map_err(native_vp::Error::new)?; + } else { + *pre_entry = checked!(pre_entry + &delta) + .map_err(native_vp::Error::new)?; + } + } + } - result - .decoder - .insert(address_hash, counterpart.to_address_ref().clone()); - let pre_entry = - result.pre.entry(address_hash).or_insert(ValueSum::zero()); - let post_entry = - result.post.entry(address_hash).or_insert(ValueSum::zero()); - *pre_entry = checked!( - pre_entry - + &ValueSum::from_pair((*token).clone(), pre_balance) - ) - .map_err(native_vp::Error::new)?; - *post_entry = checked!( - post_entry - + &ValueSum::from_pair((*token).clone(), post_balance) - ) - .map_err(native_vp::Error::new)?; - Ok(result) - }, - ) + Ok(changed_balances) } // Check that MASP Transaction and state changes are valid @@ -371,7 +497,7 @@ where let masp_address_hash = TransparentAddress(<[u8; 20]>::from( ripemd::Ripemd160::digest(sha2::Sha256::digest( - &Address::Internal(Masp).serialize_to_vec(), + &TransferTarget::Address(Address::Internal(Masp)).serialize_to_vec(), )), )); verify_sapling_balancing_value( @@ -423,16 +549,11 @@ where } } - let ibc_address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &Address::Internal(namada_core::address::InternalAddress::Ibc) - .serialize_to_vec(), - )), - )); - // Ensure that this transaction is authorized by all involved parties for signer in signers { - if signer == ibc_address_hash { + if let Some(TransferTarget::Ibc(_)) = + changed_balances.decoder.get(&signer) + { // If the IBC address is a signatory, then it means that either // Tx - Transaction(s) causes a decrease in the IBC balance or // one of the Transactions' transparent inputs is the IBC. We @@ -447,7 +568,9 @@ where // Transaction(s). if let Some(transp_bundle) = shielded_tx.transparent_bundle() { for vout in transp_bundle.vout.iter() { - if vout.address == ibc_address_hash { + if let Some(TransferTarget::Ibc(_)) = + changed_balances.decoder.get(&vout.address) + { let error = native_vp::Error::new_const( "Simultaneous credit and debit of IBC account \ in a MASP transaction not allowed", @@ -458,7 +581,9 @@ where } } } - } else if let Some(signer) = changed_balances.decoder.get(&signer) { + } else if let Some(TransferTarget::Address(signer)) = + changed_balances.decoder.get(&signer) + { // Otherwise the signer must be decodable so that we can // manually check the signatures let public_keys_index_map = diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index f1d6d672ee..d11278fedd 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -1042,7 +1042,7 @@ pub mod testing { // Encode the given Address into TransparentAddress fn encode_address(source: &Address) -> TransparentAddress { let hash = ripemd::Ripemd160::digest(sha2::Sha256::digest( - source.serialize_to_vec().as_ref(), + TransferTarget::Address(source.clone()).serialize_to_vec().as_ref(), )); TransparentAddress(hash.into()) } diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index 747cdbd0d9..2bb7b64287 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -1719,13 +1719,13 @@ impl ShieldedContext { // We add a dummy UTXO to our transaction, but only the source of // the parent Transfer object is used to validate fund // availability - let source_enc = source + let source_enc = TransferTarget::Address(source .address() .ok_or_else(|| { Error::Other( "source address should be transparent".to_string(), ) - })? + })?) .serialize_to_vec(); let hash = ripemd::Ripemd160::digest(sha2::Sha256::digest( diff --git a/wasm/checksums.json b/wasm/checksums.json index 7beed09563..09538165cb 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,26 +1,26 @@ { - "tx_become_validator.wasm": "tx_become_validator.b8c130fcb23c9e7551c013ec4834f20d2448525ad8c6ccf99ed2fbd556143d38.wasm", - "tx_bond.wasm": "tx_bond.8329e5865ec35464d274749f54e9d4d4535224395cabc07bc12570b52f78038a.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.67829e840bf9a5c4588e716769211dbb77c738684c014f42ad9ef9a2ea980f85.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.2605e862f3b98e06b31a4579d2947ca91757c5cd4c0ea04c0d5475c0cb3a6c2f.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.c45bbffa7a2badbddf542f8cec76a677e4077ec5b8618cf89f3cd0c558af25b9.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.7b65f34858ee72481f7691709e945519de43bed3449e068a97962e76c851824d.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.aec0aa17b5b3139df0f1521fb6b4748f22d2f9b539699c288f08b78bfb5f8b50.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.437440f7c1049474e2e66e3c6addf93aa5e71486e27891c6f6d7fac7e6c84683.wasm", - "tx_ibc.wasm": "tx_ibc.3b1782a6ef40b5e2d5d4a287a34daf3b7a760aea7a4b1b6008d14af8e780ac64.wasm", - "tx_init_account.wasm": "tx_init_account.5cf45b0a13174f6f7db39402912b118efd829ca47f9a00cd51c8bc4fe488300e.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.228aa0e0db52f86e7d61377117df22fccc1c7ea34303dedb9b990a3ea2a997f9.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.0777610a4df893bf2984d97a77bff6040366b14fd546361e95e568c482462595.wasm", - "tx_redelegate.wasm": "tx_redelegate.51662b5eded88f0b9872897c1c385c7e1b7621dc2fa6a97bbe112babc6e9c8ed.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.46fef3ab666197a50ed36d52b6fd31ae1d4b357388626d70650457979fb978e7.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.42e75cf62d039659c288a3da799a9e46a60eaa43bf75f935583c389472b8bf75.wasm", - "tx_transfer.wasm": "tx_transfer.3ad8b8ea5da0cf4a6b196d80d41bb98d453f1702bc0e9a7fa66a245a55721ca9.wasm", - "tx_unbond.wasm": "tx_unbond.29a57271b81baa8717c9b012e31201fafe3151218976012b3560a8470d9d80ea.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.14c27524d379910fc37bf9a9f09a7b5a4ac642d71a72e53d8d15559aee53cfce.wasm", - "tx_update_account.wasm": "tx_update_account.dc3d3443d419e533bfeb69973346d8d8cfa8a92bdc39953d4200dc255e46d3d2.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.0c3adcedcc4944540ed919e9feb195c5981c2b9f48ca7ed68ecb6054a0583c8c.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.fe9f78071164a37c55e80cc92abb0df2d20f1abc856df632cc77cc068710287a.wasm", - "tx_withdraw.wasm": "tx_withdraw.73ed0638410b049a981437a7d4d4553bb0822968e2b15786cd9e5db9b640a62a.wasm", - "vp_implicit.wasm": "vp_implicit.baba52f1d39667ee309bab9c1aa5e4467181f6371730b881597413c0db1296d0.wasm", - "vp_user.wasm": "vp_user.0e78655193cb46521b8ba2ac758da5c2cdcb248400104741ee6ffd5422d13ab2.wasm" + "tx_become_validator.wasm": "tx_become_validator.44147f819ea5512dcd6898f9984115fbc50444d9227025bf9d92a54ef678e719.wasm", + "tx_bond.wasm": "tx_bond.3b40c03fd37cba96eca01ebe931f9f1368c086158709b1f5560163982ee1fc4c.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.4a0186bff0398d110006f51408d0bfcfe70d9bc569742f1c18cba38cae32ee5e.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.2c3a97ce98ec1490f381b34209aef8a115b4259f2a8600366f0139f96d749171.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.839878500e456d26734f35684df9d2dac5cd11db89a2661f03d5f1d3480c0e83.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.5a29fc479f43a4d5d11b4094945807fd3be9c125d62ed502d3fc15675c1bdaf1.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.3dff8f09496561a9aaba655aadc4a17fd3e748f70cb933de38bfc359c5440418.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.aeb6a329a4848b8d91c3bba2f98fc253a758bd460407638cb2800618d6e765e5.wasm", + "tx_ibc.wasm": "tx_ibc.0b9ab2479de22e0022708f3616a0adc561051943bdec419b10e6be6cffde8161.wasm", + "tx_init_account.wasm": "tx_init_account.929e8be15b0c966ef6b896592d5a8452e8db4a11e40aec52ac1ca3606188291d.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.b7b703c504cfe63db412938f68c5cc12c51f06c865d5be180feea381a04cd7fd.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.8aed0bd2f609d658c595a7c0f0c1774d08964a237ac3883b60b84a46eb9a80ba.wasm", + "tx_redelegate.wasm": "tx_redelegate.b3880cfa4982cd9babc6777c2d0481c13b0074c613716536ddf57aaea3ef85d0.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.d5c717719ee89d9def8b4a6b352ee6afaa7e7e89d073101e110c152f0a654833.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.3c7dff6efd018a0d28db4ec6744bcec122ced0b47fe2907885e7f8e34bcbb4a4.wasm", + "tx_transfer.wasm": "tx_transfer.8719e986786ac8b0cd8e5692bf35234ae98b0674398257eb71eae839329114f6.wasm", + "tx_unbond.wasm": "tx_unbond.c8de749021c6a41bdb93444f9877b4f7ea62272634d2bbc9225005d346f62f7d.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.91c3638110406510ef15867245f7ef016553b9c0815920c1eb611e3703e061f5.wasm", + "tx_update_account.wasm": "tx_update_account.e18b65753acd3ba4f2393d875c037cf056cf05c7dee29cdb15c9f93c9987c846.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.72bd3ceda6f2ca319c228ce4fbf583849706b14a3a3f017952b933898c2d74ee.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.ba502cb86890c869ea233d1fe3a20a14969d2b35107e68e5bd378f9a9ad664b9.wasm", + "tx_withdraw.wasm": "tx_withdraw.3aaa47f8fa71755aa645d84e49b69ec4bd54f95bbd14ba140049c98ce4a0e3b6.wasm", + "vp_implicit.wasm": "vp_implicit.04d0f961a87a373ddde65cdab69150c828c9f118cdf75a01b1b7b65aac866b00.wasm", + "vp_user.wasm": "vp_user.0a8c711b809e6217e963db5a13e80b08762479fb9b30c8b4ef10f636a074a19d.wasm" } \ No newline at end of file From 20d113b3ac7a0f2eede47745a4b329d0418f20e7 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Sat, 1 Jun 2024 16:59:52 +0200 Subject: [PATCH 03/39] Created a separate type that is either an Address or IBC receiver. --- crates/core/src/masp.rs | 54 ++++ crates/core/src/token.rs | 2 +- crates/events/src/extend.rs | 15 + crates/ibc/src/actions.rs | 11 +- crates/ibc/src/context/token_transfer.rs | 5 +- crates/namada/src/ledger/native_vp/masp.rs | 284 ++++++++++++------ crates/sdk/src/lib.rs | 5 +- crates/sdk/src/masp.rs | 25 +- crates/sdk/src/rpc.rs | 38 ++- crates/sdk/src/tx.rs | 6 - crates/tests/src/vm_host_env/ibc.rs | 6 +- wasm/checksums.json | 48 +-- wasm_for_tests/tx_fail.wasm | Bin 226421 -> 225906 bytes wasm_for_tests/tx_infinite_guest_gas.wasm | Bin 225142 -> 224631 bytes wasm_for_tests/tx_infinite_host_gas.wasm | Bin 249012 -> 248481 bytes wasm_for_tests/tx_invalid_data.wasm | Bin 259197 -> 257916 bytes wasm_for_tests/tx_memory_limit.wasm | Bin 259666 -> 258647 bytes wasm_for_tests/tx_no_op.wasm | Bin 225205 -> 224694 bytes wasm_for_tests/tx_proposal_code.wasm | Bin 295160 -> 294642 bytes .../tx_proposal_ibc_token_inflation.wasm | Bin 310755 -> 310163 bytes wasm_for_tests/tx_proposal_masp_reward.wasm | Bin 284133 -> 283537 bytes wasm_for_tests/tx_read_storage_key.wasm | Bin 287549 -> 286779 bytes wasm_for_tests/tx_write.wasm | Bin 290608 -> 289821 bytes wasm_for_tests/vp_always_false.wasm | Bin 261291 -> 260698 bytes wasm_for_tests/vp_always_true.wasm | Bin 260801 -> 260211 bytes wasm_for_tests/vp_eval.wasm | Bin 295334 -> 294458 bytes wasm_for_tests/vp_infinite_guest_gas.wasm | Bin 260526 -> 259950 bytes wasm_for_tests/vp_infinite_host_gas.wasm | Bin 263755 -> 263251 bytes wasm_for_tests/vp_memory_limit.wasm | Bin 294950 -> 294349 bytes wasm_for_tests/vp_read_storage_key.wasm | Bin 300857 -> 300078 bytes 30 files changed, 338 insertions(+), 161 deletions(-) diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index d5a2522610..5b3c234945 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -399,6 +399,14 @@ impl TransferSource { _ => None, } } + + /// Get the contained MaybeIbcAddress, if any + pub fn maybe_ibc_address(&self) -> Option { + match self { + Self::Address(x) => Some(MaybeIbcAddress::Address(x.clone())), + _ => None, + } + } } impl Display for TransferSource { @@ -410,6 +418,43 @@ impl Display for TransferSource { } } +/// Represents either a Namada address or some IBC address +#[derive(Debug, Clone, BorshDeserialize, BorshSerialize, BorshDeserializer)] +pub enum MaybeIbcAddress { + /// A transparent address + Address(Address), + /// An IBC address + Ibc(String), +} + +impl MaybeIbcAddress { + /// Get the transparent address that this target would effectively go to + pub fn effective_address(&self) -> Address { + match self { + Self::Address(x) => x.clone(), + // An IBC signer address effectively means that assets are + // associated with the IBC internal address + Self::Ibc(_) => IBC, + } + } + + /// Get the contained IBC receiver, if any + pub fn payment_address(&self) -> Option { + match self { + Self::Ibc(address) => Some(address.clone()), + _ => None, + } + } + + /// Get the contained Address, if any + pub fn address(&self) -> Option
{ + match self { + Self::Address(x) => Some(x.clone()), + _ => None, + } + } +} + /// Represents a target for the funds of a transfer #[derive(Debug, Clone, BorshDeserialize, BorshSerialize, BorshDeserializer)] pub enum TransferTarget { @@ -450,6 +495,15 @@ impl TransferTarget { _ => None, } } + + /// Get the contained MaybeIbcAddress, if any + pub fn maybe_ibc_address(&self) -> Option { + match self { + Self::Address(x) => Some(MaybeIbcAddress::Address(x.clone())), + Self::Ibc(x) => Some(MaybeIbcAddress::Ibc(x.clone())), + _ => None, + } + } } impl Display for TransferTarget { diff --git a/crates/core/src/token.rs b/crates/core/src/token.rs index 616ec87221..7a713a1355 100644 --- a/crates/core/src/token.rs +++ b/crates/core/src/token.rs @@ -946,7 +946,7 @@ impl From for IbcAmount { impl From for IbcAmount { fn from(amount: DenominatedAmount) -> Self { - amount.canonical().amount.into() + amount.amount.into() } } diff --git a/crates/events/src/extend.rs b/crates/events/src/extend.rs index fdd098b401..b4111fc4a5 100644 --- a/crates/events/src/extend.rs +++ b/crates/events/src/extend.rs @@ -483,6 +483,21 @@ impl EventAttributeEntry<'static> for Info { } } +/// Extend an [`Event`] with `packet_ack` data, indicating the success or +/// failure of processing a received packet. +pub struct PacketAck(pub Vec); + +impl EventAttributeEntry<'static> for PacketAck { + type Value = Vec; + type ValueOwned = Self::Value; + + const KEY: &'static str = "packet_ack"; + + fn into_value(self) -> Self::Value { + self.0 + } +} + /// Extend an [`Event`] with `masp_tx_block_index` data, indicating that the tx /// at the specified index in the block contains a valid masp transaction. pub struct MaspTxBlockIndex(pub TxIndex); diff --git a/crates/ibc/src/actions.rs b/crates/ibc/src/actions.rs index 24a13a35bf..44726014c0 100644 --- a/crates/ibc/src/actions.rs +++ b/crates/ibc/src/actions.rs @@ -200,18 +200,9 @@ where D: DB + for<'iter> DBIter<'iter> + 'static, H: StorageHasher + 'static, { - let denom = token::read_denom(state, token)?.ok_or_else(|| { - StorageError::new_alloc(format!("No denomination for {token}")) - })?; - let amount = DenominatedAmount::new(target.amount, denom).canonical(); - if amount.denom().0 != 0 { - return Err(StorageError::new_alloc(format!( - "The amount for the IBC transfer should be an integer: {amount}" - ))); - } let token = PrefixedCoin { denom: token.to_string().parse().expect("invalid token"), - amount: amount.amount().into(), + amount: target.amount.into(), }; let packet_data = PacketData { token, diff --git a/crates/ibc/src/context/token_transfer.rs b/crates/ibc/src/context/token_transfer.rs index 94410c5673..d511ee308a 100644 --- a/crates/ibc/src/context/token_transfer.rs +++ b/crates/ibc/src/context/token_transfer.rs @@ -61,11 +61,8 @@ where }; // Convert IBC amount to Namada amount for the token - let denom = read_denom(&*self.inner.borrow(), &token) - .map_err(ContextError::from)? - .unwrap_or(Denomination(0)); let uint_amount = Uint(primitive_types::U256::from(coin.amount).0); - let amount = Amount::from_uint(uint_amount, denom).map_err(|e| { + let amount = Amount::from_uint(uint_amount, 0).map_err(|e| { TokenTransferError::ContextError( ChannelError::Other { description: format!( diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index a1dd050f94..0e7891adf6 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -26,7 +26,7 @@ use namada_governance::storage::is_proposal_accepted; use namada_ibc::event as ibc_events; use namada_ibc::event::IbcEvent; use namada_proof_of_stake::Epoch; -use namada_sdk::masp::{verify_shielded_tx, TransferTarget}; +use namada_sdk::masp::{verify_shielded_tx, MaybeIbcAddress}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; use namada_token::read_denom; use namada_tx::BatchedTxRef; @@ -41,7 +41,7 @@ use token::storage_key::{ }; use token::Amount; -use crate::address::InternalAddress; +use crate::address::{IBC, InternalAddress}; use crate::ledger::ibc::storage::{ ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, }; @@ -52,6 +52,16 @@ use crate::token; use crate::token::MaspDigitPos; use crate::uint::{Uint, I320}; use crate::vm::WasmCacheAccess; +use crate::ledger::ibc::storage::ibc_token; +use crate::sdk::ibc::is_ibc_denom; +use crate::sdk::ibc::IbcTokenHash; +use crate::ledger::events::extend::PacketAck; +use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; + +/// Packet event types +const SEND_PACKET_EVENT: &str = "send_packet"; +const RECEIVE_PACKET_EVENT: &str = "recv_packet"; +const WRITE_ACK_EVENT: &str = "write_acknowledgement"; #[allow(missing_docs)] #[derive(Error, Debug)] @@ -78,10 +88,10 @@ where // the other balances maps the token address to the addresses of the // senders/receivers, their balance diff and whether this is positive or // negative diff -#[derive(Default)] +#[derive(Default, Debug, Clone)] struct ChangedBalances { tokens: BTreeMap, - decoder: BTreeMap, + decoder: BTreeMap, ibc_denoms: BTreeMap, pre: BTreeMap>, post: BTreeMap>, @@ -336,74 +346,67 @@ where let mut counterparts_balances = keys_changed.iter().filter_map(is_any_token_balance_key); - let mut changed_balances = counterparts_balances - .try_fold( - ChangedBalances::default(), - |mut result, [token, counterpart]| { - let denom = read_denom(&self.ctx.pre(), token)? - .ok_or_err_msg( - "No denomination found in storage for the given \ - token", - )?; - unepoched_tokens(token, denom, &mut result.tokens)?; - let counterpart_balance_key = - balance_key(token, counterpart); - let pre_balance: Amount = self - .ctx - .read_pre(&counterpart_balance_key)? - .unwrap_or_default(); - let post_balance: Amount = self - .ctx - .read_post(&counterpart_balance_key)? - .unwrap_or_default(); - // Make it possible to decode IBC tokens - result.ibc_denoms.insert( - self.query_ibc_denom( - token.to_string(), - Some(counterpart), - ) + let mut changed_balances = counterparts_balances.try_fold( + ChangedBalances::default(), + |mut result, [token, counterpart]| { + let denom = read_denom(&self.ctx.pre(), token)?.ok_or_err_msg( + "No denomination found in storage for the given token", + )?; + unepoched_tokens(token, denom, &mut result.tokens)?; + let counterpart_balance_key = balance_key(token, counterpart); + let pre_balance: Amount = self + .ctx + .read_pre(&counterpart_balance_key)? + .unwrap_or_default(); + let post_balance: Amount = self + .ctx + .read_post(&counterpart_balance_key)? + .unwrap_or_default(); + // Make it possible to decode IBC tokens + result.ibc_denoms.insert( + self.query_ibc_denom(token.to_string(), Some(counterpart)) .map_err(native_vp::Error::new)?, - token.clone(), - ); - // Public keys must be the hash of the sources/targets - let address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &TransferTarget::Address(counterpart.clone()).serialize_to_vec(), - )), - )); - // Enable the decoding of these counterpart addresses - result.decoder.insert( - address_hash, - TransferTarget::Address(counterpart.clone()), - ); - let pre_entry = result - .pre - .entry(address_hash) - .or_insert(ValueSum::zero()); - let post_entry = result - .post - .entry(address_hash) - .or_insert(ValueSum::zero()); - *pre_entry = checked!( - pre_entry - + &ValueSum::from_pair( - (*token).clone(), - pre_balance - ) - ) - .map_err(native_vp::Error::new)?; - *post_entry = checked!( - post_entry - + &ValueSum::from_pair( - (*token).clone(), - post_balance - ) - ) - .map_err(native_vp::Error::new)?; - Result::<_>::Ok(result) - }, - ) - .unwrap(); + token.clone(), + ); + // Public keys must be the hash of the sources/targets + let address_hash = TransparentAddress(<[u8; 20]>::from( + ripemd::Ripemd160::digest(sha2::Sha256::digest( + &MaybeIbcAddress::Address(counterpart.clone()) + .serialize_to_vec(), + )), + )); + // Enable the decoding of these counterpart addresses + result.decoder.insert( + address_hash, + MaybeIbcAddress::Address(counterpart.clone()), + ); + let pre_entry = + result.pre.entry(address_hash).or_insert(ValueSum::zero()); + let post_entry = + result.post.entry(address_hash).or_insert(ValueSum::zero()); + *pre_entry = checked!( + pre_entry + + &ValueSum::from_pair((*token).clone(), pre_balance) + ) + .map_err(native_vp::Error::new)?; + *post_entry = checked!( + post_entry + + &ValueSum::from_pair((*token).clone(), post_balance) + ) + .map_err(native_vp::Error::new)?; + Result::<_>::Ok(result) + }, + )?; + + let ibc_address = MaybeIbcAddress::Address(IBC); + // Public keys must be the hash of the sources/targets + let ibc_address_hash = TransparentAddress(<[u8; 20]>::from( + ripemd::Ripemd160::digest(sha2::Sha256::digest( + &ibc_address.serialize_to_vec(), + )), + )); + // Enable decoding the IBC address hash + changed_balances.decoder.insert(ibc_address_hash, ibc_address); // Extract the IBC events let ibc_events: BTreeSet<_> = self @@ -426,7 +429,7 @@ where serde_json::from_slice::(&msg.data) { let address = - TransferTarget::Ibc(packet_data.receiver.to_string()); + MaybeIbcAddress::Ibc(packet_data.receiver.to_string()); // Public keys must be the hash of the sources/targets let address_hash = TransparentAddress(<[u8; 20]>::from( ripemd::Ripemd160::digest(sha2::Sha256::digest( @@ -434,33 +437,115 @@ where )), )); changed_balances.decoder.insert(address_hash, address); - let pre_entry = changed_balances + changed_balances .pre .entry(address_hash) .or_insert(ValueSum::zero()); + changed_balances + .post + .entry(ibc_address_hash) + .or_insert(ValueSum::zero()); + // Also enable the tracking of received IBC + let pre_entry = changed_balances + .pre + .entry(ibc_address_hash) + .or_insert(ValueSum::zero()); let post_entry = changed_balances .post .entry(address_hash) .or_insert(ValueSum::zero()); - let token = changed_balances - .ibc_denoms - .get(&packet_data.token.denom.to_string()) - .ok_or_err_msg("Unable to decode IBC token")?; - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0) - .unwrap(), - ); - if is_sender_chain_source( - msg.port_id_on_a.clone(), - msg.chan_id_on_a.clone(), - &packet_data.token.denom, - ) { - *post_entry = checked!(post_entry + &delta) - .map_err(native_vp::Error::new)?; - } else { - *pre_entry = checked!(pre_entry + &delta) - .map_err(native_vp::Error::new)?; + + match ibc_event.kind().sub_domain() { + // This event is emitted on the sender + SEND_PACKET_EVENT => { + // Since IBC denominations are derived from Addresses + // when sending, we have to do a reverse look-up of the + // relevant token Address + let token = changed_balances + .ibc_denoms + .get(&packet_data.token.denom.to_string()) + .cloned() + // If the reverse lookup failed, then guess the Address + // that might have yielded the IBC denom. However, + // guessing an IBC token address cannot possibly be + // correct due to the structure of query_ibc_denom + .or_else(|| Address::decode(&packet_data.token.denom.to_string()) + .ok() + .filter(|x| !matches!(x, Address::Internal(InternalAddress::IbcToken(_))))) + .ok_or_err_msg("Unable to decode IBC token")?; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0) + .unwrap(), + ); + // Enable funds to be received by the receiver in the + // IBC packet + *post_entry = checked!(post_entry + &delta) + .map_err(native_vp::Error::new)? + }, + // This event is emitted on the receiver + RECEIVE_PACKET_EVENT => { + // Mirror how the IBC token is derived in + // gen_ibc_shielded_transfer in the non-refund case + let ibc_denom = self.query_ibc_denom( + &packet_data.token.denom.to_string(), + Some(&Address::Internal(InternalAddress::Ibc)), + )?; + let token = namada_ibc::received_ibc_token( + ibc_denom, + &msg.port_id_on_a, + &msg.chan_id_on_a, + &msg.port_id_on_b, + &msg.chan_id_on_b, + ).into_storage_result() + .map_err(Error::NativeVpError)?; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0) + .unwrap(), + ); + // Enable funds to be taken from the IBC internal + // address and be deposited elsewhere + *pre_entry = checked!(pre_entry + &delta) + .map_err(native_vp::Error::new)? + }, + // This event is emitted on the sender + WRITE_ACK_EVENT => { + let acknowledgement = ibc_event + .raw_read_attribute::() + .ok_or_err_msg("packet_ack attribute missing from write_acknowledgement")?; + let acknowledgement: AcknowledgementStatus = + serde_json::from_slice(acknowledgement.as_ref()) + .wrap_err("Decoding acknowledment failed")?; + // If the transfer was a failure, then enable funds to + // be withdrawn from the IBC internal address + if !acknowledgement.is_successful() { + // Mirror how the IBC token is derived in + // gen_ibc_shielded_transfer in the refund case + let ibc_denom = self.query_ibc_denom( + &packet_data.token.denom.to_string(), + Some(&Address::Internal(InternalAddress::Ibc)), + )?; + let token = if ibc_denom.contains('/') { + ibc_token(ibc_denom) + } else { + // the token is a base token + Address::decode(&ibc_denom) + .wrap_err("Invalid token")? + }; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0) + .unwrap(), + ); + // Enable funds to be withdrawn from the IBC + // internal address + *pre_entry = checked!(pre_entry + &delta) + .map_err(native_vp::Error::new)? + } + }, + // Ignore all other IBC events + _ => {}, } } } @@ -490,14 +575,14 @@ where // The Sapling value balance adds to the transparent tx pool let mut transparent_tx_pool = shielded_tx.sapling_value_balance(); - // Check the validity of the keys and get the transfer data let mut changed_balances = self.validate_state_and_get_transfer_data(keys_changed)?; let masp_address_hash = TransparentAddress(<[u8; 20]>::from( ripemd::Ripemd160::digest(sha2::Sha256::digest( - &TransferTarget::Address(Address::Internal(Masp)).serialize_to_vec(), + &MaybeIbcAddress::Address(Address::Internal(Masp)) + .serialize_to_vec(), )), )); verify_sapling_balancing_value( @@ -551,7 +636,7 @@ where // Ensure that this transaction is authorized by all involved parties for signer in signers { - if let Some(TransferTarget::Ibc(_)) = + if let Some(MaybeIbcAddress::Address(Address::Internal(InternalAddress::Ibc))) = changed_balances.decoder.get(&signer) { // If the IBC address is a signatory, then it means that either @@ -568,20 +653,23 @@ where // Transaction(s). if let Some(transp_bundle) = shielded_tx.transparent_bundle() { for vout in transp_bundle.vout.iter() { - if let Some(TransferTarget::Ibc(_)) = + if let Some(MaybeIbcAddress::Ibc(_)) = changed_balances.decoder.get(&vout.address) { let error = native_vp::Error::new_const( "Simultaneous credit and debit of IBC account \ in a MASP transaction not allowed", ) - .into(); + .into(); tracing::debug!("{error}"); return Err(error); } } } - } else if let Some(TransferTarget::Address(signer)) = + } else if let Some(MaybeIbcAddress::Ibc(_)) = + changed_balances.decoder.get(&signer) + { + } else if let Some(MaybeIbcAddress::Address(signer)) = changed_balances.decoder.get(&signer) { // Otherwise the signer must be decodable so that we can diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index d11278fedd..e9b543e763 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -810,6 +810,7 @@ pub mod testing { use namada_core::eth_bridge_pool::PendingTransfer; use namada_core::hash::testing::arb_hash; use namada_core::key::testing::arb_common_keypair; + use namada_core::masp::MaybeIbcAddress; use namada_core::token::testing::{arb_denominated_amount, arb_transfer}; use namada_core::token::Transfer; use namada_governance::storage::proposal::testing::{ @@ -1042,7 +1043,9 @@ pub mod testing { // Encode the given Address into TransparentAddress fn encode_address(source: &Address) -> TransparentAddress { let hash = ripemd::Ripemd160::digest(sha2::Sha256::digest( - TransferTarget::Address(source.clone()).serialize_to_vec().as_ref(), + MaybeIbcAddress::Address(source.clone()) + .serialize_to_vec() + .as_ref(), )); TransparentAddress(hash.into()) } diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index 2bb7b64287..ec06d10dd5 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -55,7 +55,7 @@ use namada_core::collections::{HashMap, HashSet}; use namada_core::dec::Dec; pub use namada_core::masp::{ encode_asset_type, AssetData, BalanceOwner, ExtendedViewingKey, - PaymentAddress, TransferSource, TransferTarget, + MaybeIbcAddress, PaymentAddress, TransferSource, TransferTarget, }; use namada_core::storage::{BlockHeight, Epoch, TxIndex}; use namada_core::time::{DateTimeUtc, DurationSecs}; @@ -1719,13 +1719,13 @@ impl ShieldedContext { // We add a dummy UTXO to our transaction, but only the source of // the parent Transfer object is used to validate fund // availability - let source_enc = TransferTarget::Address(source - .address() + let source_enc = source + .maybe_ibc_address() .ok_or_else(|| { Error::Other( "source address should be transparent".to_string(), ) - })?) + })? .serialize_to_vec(); let hash = ripemd::Ripemd160::digest(sha2::Sha256::digest( @@ -1761,14 +1761,15 @@ impl ShieldedContext { // If we are sending to a transparent output, then we will need to embed // the transparent target address into the shielded transaction so that // it can be signed - let transparent_target_hash = if payment_address.is_none() { - let target_enc = target.serialize_to_vec(); - Some(ripemd::Ripemd160::digest(sha2::Sha256::digest( - target_enc.as_ref(), - ))) - } else { - None - }; + let transparent_target_hash = + if let Some(target) = target.maybe_ibc_address() { + let target_enc = target.serialize_to_vec(); + Some(ripemd::Ripemd160::digest(sha2::Sha256::digest( + target_enc.as_ref(), + ))) + } else { + None + }; // This indicates how many more assets need to be sent to the receiver // in order to satisfy the requested transfer amount. let mut rem_amount = amount.amount().raw_amount().0; diff --git a/crates/sdk/src/rpc.rs b/crates/sdk/src/rpc.rs index a03ec02ba9..b6610fa8c1 100644 --- a/crates/sdk/src/rpc.rs +++ b/crates/sdk/src/rpc.rs @@ -59,6 +59,7 @@ use crate::tendermint::block::Height; use crate::tendermint::merkle::proof::ProofOps; use crate::tendermint_rpc::query::Query; use crate::{display_line, edisplay_line, error, Namada, Tx}; +use crate::ibc::is_ibc_denom; /// Identical to [`query_tx_status`], but does not need a [`Namada`] /// context. @@ -1158,8 +1159,17 @@ pub async fn validate_amount( InputAmount::Unvalidated(amt) => amt.canonical(), InputAmount::Validated(amt) => return Ok(amt), }; + let token = if let Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) = token { + extract_base_token(context, ibc_token_hash.clone(), None).await.ok_or( + Error::from(QueryError::General(format!( + "cannot extract base token for {token}" + ))) + )? + } else { + token.clone() + }; let denom = match convert_response::>( - RPC.vp().token().denomination(context.client(), token).await, + RPC.vp().token().denomination(context.client(), &token).await, )? { Some(denom) => Ok(denom), None => { @@ -1346,6 +1356,32 @@ pub async fn query_ibc_tokens( Ok(tokens) } +/// Obtain the base token of the given IBC token hash +pub async fn extract_base_token( + context: &N, + ibc_token_hash: IbcTokenHash, + owner: Option<&Address>, +) -> Option
{ + // First obtain the IBC denomination + let ibc_denom = query_ibc_denom( + context, + Address::Internal(InternalAddress::IbcToken(ibc_token_hash)).to_string(), + owner, + ).await; + // Then try to extract the base token + if let Some((_trace_path, base_token)) = is_ibc_denom(ibc_denom) { + match Address::decode(&base_token) { + // If the base token successfully decoded into an Address + Ok(base_token) => Some(base_token), + // Otherwise find the Address associated with the base token's alias + Err(_) => context.wallet().await.find_address(&base_token).map(|x| x.into_owned()), + } + } else { + // Otherwise the base token Address is unknown to this client + None + } +} + /// Look up the IBC denomination from a IbcToken. pub async fn query_ibc_denom( context: &N, diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index a0e01dc021..3c81abe447 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -2473,12 +2473,6 @@ pub async fn build_ibc_transfer( validate_amount(context, args.amount, &args.token, args.tx.force) .await .expect("expected to validate amount"); - if validated_amount.canonical().denom().0 != 0 { - return Err(Error::Other(format!( - "The amount for the IBC transfer should be an integer: {}", - validated_amount - ))); - } // If source is transparent check the balance (MASP balance is checked when // constructing the shielded part) diff --git a/crates/tests/src/vm_host_env/ibc.rs b/crates/tests/src/vm_host_env/ibc.rs index 4bee157c12..184093f7c2 100644 --- a/crates/tests/src/vm_host_env/ibc.rs +++ b/crates/tests/src/vm_host_env/ibc.rs @@ -636,7 +636,6 @@ pub fn msg_transfer( denom: String, sender: &Address, ) -> MsgTransfer { - let amount = DenominatedAmount::native(Amount::native_whole(100)); let timestamp = (Timestamp::now() + Duration::from_secs(100)).unwrap(); let message = IbcMsgTransfer { port_id_on_a: port_id, @@ -644,7 +643,7 @@ pub fn msg_transfer( packet_data: PacketData { token: PrefixedCoin { denom: denom.parse().expect("invalid denom"), - amount: amount.into(), + amount: Amount::native_whole(100).into(), }, sender: sender.to_string().into(), receiver: address::testing::gen_established_address() @@ -693,12 +692,11 @@ pub fn received_packet( token: String, receiver: &Address, ) -> Packet { - let amount = DenominatedAmount::native(Amount::native_whole(100)); let counterparty = dummy_channel_counterparty(); let timestamp = (Timestamp::now() + Duration::from_secs(100)).unwrap(); let coin = PrefixedCoin { denom: token.parse().expect("invalid denom"), - amount: amount.into(), + amount: Amount::native_whole(100).into(), }; let sender = address::testing::gen_established_address(); let data = PacketData { diff --git a/wasm/checksums.json b/wasm/checksums.json index 09538165cb..c4c13d0d75 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,26 +1,26 @@ { - "tx_become_validator.wasm": "tx_become_validator.44147f819ea5512dcd6898f9984115fbc50444d9227025bf9d92a54ef678e719.wasm", - "tx_bond.wasm": "tx_bond.3b40c03fd37cba96eca01ebe931f9f1368c086158709b1f5560163982ee1fc4c.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.4a0186bff0398d110006f51408d0bfcfe70d9bc569742f1c18cba38cae32ee5e.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.2c3a97ce98ec1490f381b34209aef8a115b4259f2a8600366f0139f96d749171.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.839878500e456d26734f35684df9d2dac5cd11db89a2661f03d5f1d3480c0e83.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.5a29fc479f43a4d5d11b4094945807fd3be9c125d62ed502d3fc15675c1bdaf1.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.3dff8f09496561a9aaba655aadc4a17fd3e748f70cb933de38bfc359c5440418.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.aeb6a329a4848b8d91c3bba2f98fc253a758bd460407638cb2800618d6e765e5.wasm", - "tx_ibc.wasm": "tx_ibc.0b9ab2479de22e0022708f3616a0adc561051943bdec419b10e6be6cffde8161.wasm", - "tx_init_account.wasm": "tx_init_account.929e8be15b0c966ef6b896592d5a8452e8db4a11e40aec52ac1ca3606188291d.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.b7b703c504cfe63db412938f68c5cc12c51f06c865d5be180feea381a04cd7fd.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.8aed0bd2f609d658c595a7c0f0c1774d08964a237ac3883b60b84a46eb9a80ba.wasm", - "tx_redelegate.wasm": "tx_redelegate.b3880cfa4982cd9babc6777c2d0481c13b0074c613716536ddf57aaea3ef85d0.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.d5c717719ee89d9def8b4a6b352ee6afaa7e7e89d073101e110c152f0a654833.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.3c7dff6efd018a0d28db4ec6744bcec122ced0b47fe2907885e7f8e34bcbb4a4.wasm", - "tx_transfer.wasm": "tx_transfer.8719e986786ac8b0cd8e5692bf35234ae98b0674398257eb71eae839329114f6.wasm", - "tx_unbond.wasm": "tx_unbond.c8de749021c6a41bdb93444f9877b4f7ea62272634d2bbc9225005d346f62f7d.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.91c3638110406510ef15867245f7ef016553b9c0815920c1eb611e3703e061f5.wasm", - "tx_update_account.wasm": "tx_update_account.e18b65753acd3ba4f2393d875c037cf056cf05c7dee29cdb15c9f93c9987c846.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.72bd3ceda6f2ca319c228ce4fbf583849706b14a3a3f017952b933898c2d74ee.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.ba502cb86890c869ea233d1fe3a20a14969d2b35107e68e5bd378f9a9ad664b9.wasm", - "tx_withdraw.wasm": "tx_withdraw.3aaa47f8fa71755aa645d84e49b69ec4bd54f95bbd14ba140049c98ce4a0e3b6.wasm", - "vp_implicit.wasm": "vp_implicit.04d0f961a87a373ddde65cdab69150c828c9f118cdf75a01b1b7b65aac866b00.wasm", - "vp_user.wasm": "vp_user.0a8c711b809e6217e963db5a13e80b08762479fb9b30c8b4ef10f636a074a19d.wasm" + "tx_become_validator.wasm": "tx_become_validator.e469768e9320dbefb6030fd74505ff7907010d45c6088db17c31c0fcd6284d64.wasm", + "tx_bond.wasm": "tx_bond.202c875f22180d112277488b9659430a288dcc4f4e4c057460ea6bb506755dac.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.ac228e264479ea683c641a1eb9216c354cb46cb9d14be6fdbdbe190e7686a58c.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.06e1998944d6b17b57e174f67065317b6551a81999025e5346de80f4d4e450fc.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.283e9b69ee32eb565483a63810bca0fcf59ddfcc2861fc3658dbb2d1eba64a43.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.47fe67380d405e03d8679e377597a896af1cd7c9ef300ae040dabbd81676aa8c.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.35d701950d32f690360340e93bb2572770786f79d981d07c4f96d16bbbc94cfa.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.d0efd18607dc18870590a504cc63d8c24c606894b932efda5ee0913f3666cec8.wasm", + "tx_ibc.wasm": "tx_ibc.2186350118f45fb09ce3c98cff777fc6864d8c32eb0ca86c25103597ba5d0b81.wasm", + "tx_init_account.wasm": "tx_init_account.36b2792c03d9a4ca35de5e61ca59a3cb9695e1dbffd5860ac90feddb07671e9a.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.2de4c2cf0b3362e4171ffbf10617991b5a414eb901fe0adab9bec49b229d5b5c.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.2d612d040562276a3117a7a697223be7ddea4523df5c7facbc04b9abb2100f20.wasm", + "tx_redelegate.wasm": "tx_redelegate.846d500717cb4a08165d23641b75ce30a4be10ac918c4d3db81371c69e3b2063.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.1a8ec5b775088f32a7b68e8976b98dc88bd183170608b1bfe169f005d873dd9f.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.d935ed0cd9e11a3d1e54b0a4ed7f6560588ee494a34e021637483bced6107e0e.wasm", + "tx_transfer.wasm": "tx_transfer.7e957ccff54cbeef7993e578151b52fa06ddd0b69cab3cb6e64923ba9c6e2b58.wasm", + "tx_unbond.wasm": "tx_unbond.2ead8660f57ba7010f5599a30eee2c7879df6fb491fe75ee22e4a7cb7dab8d3a.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.a54af40b27b2fa8f5422411959b1664828b3efe8e72b05cb5c3eac055530c53c.wasm", + "tx_update_account.wasm": "tx_update_account.410b49c7c28dd003086b96e61469b5dd3485aa838334ed7f1b067f1aa0f6959e.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.e5d73f1bdbead96fd7f1c8dc388bf6458931bf05317b1a556a2f6ffac7b2868f.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.0f4caa64515acaaa218f909bc2f79c93369ee7fb51c3b8bd12680359dc4294e2.wasm", + "tx_withdraw.wasm": "tx_withdraw.c26f34fee02e29aef365fc1612e0d077072dc53f2faec409950f1c992d7c1dc6.wasm", + "vp_implicit.wasm": "vp_implicit.7ed6fb6bc160bdfdd4d837df505890adbb0134c34fd16b184215deb2fc57002c.wasm", + "vp_user.wasm": "vp_user.8aad829f98629a7185360bd86adca3b2f8f750675238e2d00da8e09457c2df11.wasm" } \ No newline at end of file diff --git a/wasm_for_tests/tx_fail.wasm b/wasm_for_tests/tx_fail.wasm index 55907e3b45690aced195e97119b43faba7f25f30..3bcad70e672db3c5ee795d1e9163706f9831d0a4 100755 GIT binary patch delta 36869 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 TB@jCSu_q7*0&xToCjv15z^#(i delta 37366 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 diff --git a/wasm_for_tests/tx_infinite_guest_gas.wasm b/wasm_for_tests/tx_infinite_guest_gas.wasm index b154f50d4a6db1729d4cd2ff8b800cfc2b998055..51cefa028706cce9172700912183da7d3b51f472 100755 GIT binary patch delta 41039 zcmeFad0-XA(l>m%C&|f5CS+eo&Iwys0%6}F!z!DA;)ckgxJ3|IRMe{p5Cs)4kpUWH z3lb%0kZ8c5qJ}*vOOVBgEI|>1fJOz4g7E&Td*@ILqZ<9pwK9yBwjtE;Q4tE;QK zt7~R{KOXYOk&wbvrp@ws(M)44dOH0A0{nvgoB@7*EX2?0Q-^cz=jZ3-p}u}T_~GZ{ z^l<>mF90aI(-+ykVRe0Yc!Zx1emk9h=2F%!78!o{4FV_xxb@G$&7axumH;}O+|SLO zeh!dy6InkLa8MOgoi9ozqZ;2tC#o?g^QPt!o*D;&^sf%xB{NQW183%Uyuom=hM%D1 z01YSS4hO2GzaYYoi*xvJU+(MEh*|%9eAyFh^k`p=Il}y6wM=GYWtBLBG9AW@)tlu# zXSF$6>yTN%n8RQ}qpG#Pw5DJ1xA{r_3!lq!*eurMb+(ed$=0*<4eUcUgMG$MX(ieg z&3Q&^(6CYCSNTru*%MlYc2fIZyP%!c&TBtv z=d`n0rS_}#r}n${hZeY}DELKlh|fMQW|}VFL7C-mZ_aYG=l(8-OEdg4j4N*-ZA{O~ z%5vzJXX0ugBZd37=MpoR1p&`0ManKdpMZ;M0gY-$hQ8E19$-f1XQ4&}YJaHGtbVH^U~d@i&h%B&2%g_oW*&mr-d8K!p&&yy^pypymO z`DN&<%(41JR%q_myR&ts9(KFC{59hDGliMLT`u%R1D79~SSfSXnb~1oSe{uD*3CJ8 zCgH9(ed_kt^v`FQx7D4(cfV%ttb03KWyXi6uo4k=k%gOgg*RvO&Ft`zygJMLF1$O- zH{B8Mv(4s#h^Dw+jcCPk&9q1(a*M?vSTiE2q0S6Fzv!jN&J4}j92L*Dn#ZCB;dj&M z&WYOyIhY3-In%+0(E<47(34V`$}?v~r?c(m*68NED$D#Ox=CCm^+X509@^w~lKM#z zxB~SZX4{w*Y^QlJrXede|B4xg3I@f_X|i5&6Jv==rNV2aln{5BEG`OVV&d9^%8)pN zeQCZP*EwzeOC+94s_UWQ!7g8tW{IZnu4yOep_N7jb=&2*Brp&kU!UzUd&D;Y$#LX6ck<*weq`QDXUqhiQ#F}=WaxgX}$FPl}#vF4lZ#*wRQ zYLZ-){;lHK59S@JMNGM%k9Th$L|`9*!| z!+vI){TfUTQFM$FZn#ilM}t{_-`cP#uFo`VhwHkA`@`}qE_A9XhV=UNMkDz2)#imp zV@M^3H15MziNTk6oVl)X0sG1vnc`*#%okG9*+KL36d|uKn1`C2WQWY+rt8^Zb9}RT z>}&H{vjkRdCNv+2>m$wY<7Z}>JDaDnZ_G>0Gg0@Gsjsj@AGCmezG-%8Ih>W5IW3KV z0^)|J^K>(}Uw!lMmTjnYE!)JJ1Ji7QX+{=wH4^5l)RzP{EA0cTBaow!$wNMxF{ssx z?1=eQD}fP`(b}-YeSPVY);-y`rq-sZs>s%o8njAIm1MVB0iGMQy&nT(R@;s=FgCYs z!Yi}P^KF~49cE0sh3u%gu3ZW{R#e`uC5t|8H^dbYLS`L2xx)10W@3kyeKtsuD_E!z zq02PvajN4(&0_zALP>SxUI&qcd{=|gybg^TR1g|ja%%D}O1OQIDwSf$f!d^CY#i;- z9=wHj?1{m3XUEPhYY(ovE+1DIO$t@M*5Fc%Nh-4Z=N*&SG4n*n`s_PX>y!*RH0qQJ zp$+e}i+yhk?zSx_^lh z=etvh0X^c`Yvw~e2zPsr?!fg)Z;Wg6^n04BIV{!{qsw2!N|>&=i*VJoeucWi!QQ&` z*Fd0~k&f#NMiQ>ejm1%F^gx`Ll5j17t!V~v4(|CYd$TCLS2V*ozq@y1U}yEF>88B* zV@ipdo0IxPSms6wQ)+8|09oWW`Y;ZAlhZQJtZErzrgnFlU-V0BHd9Sdno;QwTY=h0 z$4eZ#8l9RkJCImFCKS8jEhMJ#w=~Cf@hvmcYxuJqQ%B-#~i zRC+ecDM8lXFYNRk(37?u_6kvAcsG;YG3G5@Ya6|-}wtd7a zKp%QCP7DqRGOB;0&Q3G(FUrogq<7(0g1U^23Tl3SZ`8dX z5ee#5!_KXwvijFnnNq?vQjDrvl(t^@A1 zMd$A8!T8=RG3<8gRtaJAJ;wNpc*pRBhiS7a5*qw%z5Mb z#$~?;&f0Sw70P;O^TUnc41IRdujB4>vgJiX$5%6F)(&dGC3DE*nf2y>K)=hWF_=85 zfdQ@{BTqq#&OIK)X#G#!ocibiZx#2#s&b5l?L7k>=JXN1(qFpBhIit(i~L zdPbXe8!IvIoOWl_tJt|Yg2EuWRu1e-VFw6eKJrXbXn|EHMC$U<*P5C0rf-A!Gl|)Esh|`bU4mT}48jN_TQO1e$iHSq$5v)jk+oJk{anmYkOI?xevr}`6?oh+w)_J-sL}@6aSy43xzi5R)sz$J)ehUIvgV`@p z{TpsBu0=9)ojG-(%b72KD{*aD*q#-e=NGns0f`rPclk&bN53@D#<qX6+8Nie4u ztjvP>OPJYWYjmcKPK)sCNfh3ML`5wUs`?6456)wfiGYt+eOS!iK(wS5(Fm&nwWyl= z-)l%MzP2@}r?2R6s7{%|7< z#{0#uhkQ;Q7b-20USbZ}_(Y?Pg($DDw>#8eMkzrI@~ljU9vUp;F@28t!^YYFEvorZ zKdXZ{Ic!MC`gKC)My@S=^uCw$F}^IVz;eaX3b;%FBRp>yX%E5Bdmg+(z|fOm+6zei zjDoca+j`?&n7W+^;tvEx)?G|?=jM-PKOFy|cM=%LrJA%a~+BC3*zDYGjS3muPvn@p*m)ybFHdEj7FXHikN1_}%|9_6e zi8~WDw#EGS7m1^HNOKKy?oW#Eugml#eWwk^Vjbh*25^kDMYX^|F|=NAyqFCAa5`+L4vIBQSV^xv1ZQL4A%OR2z{z8pl#5V$+O zgI&A~o6Q>wz(CNF;U-Eva`#kE)mc36*X_&-N?|6> z@IYuxVd*HbwwWjQhc~lJ=E@wEPbF-4iCse9Y$kmb-Q9*~!CY|ALJ1Ep87ppplBd30 z=`ABB$&%^Y%&A{ZNV7?h#ZfI#nN}Of=zvF=iP}*p>_Bv^r;y@P;>fy9!z&jMs!Han z3MYBzN^WS50*<7-@<4Q^O*zZM{Z?;j8i4B_h~f(Ju_34h)Jke_h;~iNlC_PE_8=ef zSLF?Vx1U*lq%Qo%0}c*=Ls&l)hua=USG+?4e9BJ3Eh2oG>Y24feX*m zR&(?>D(_xjYN}0(NNbcVJEF2j`Vh08h>DB`Y5n z3FErt?2|^wc2Wr=bBe)Wqs+r6pEakR8V3LKj#KS%{rl8Iv_E<92UlQk#xm7@&K&XG zNX{MRhVMq>h#~U(k>-m(Jb-=U*&p1_{CTvRIBbTUe$ctm`u+UrE@TBhKHVoY=M`F7 zBp3yBhufphnNQ)e-F?R3*kXlNc7Xr1Uu92rM6fzqxVa2~Bj%yXLGS=3pKT1!;()UQ z_)%dlJlnL}F=D(=2$uaWU;Vh12=)y^8rzoM$-ept1;la|7#6xp95??yI{-v)`7zB^ zL0BcU6`a2Wdq6rh$}pbED9}$*hW?$o=tozF|3J#BB-jTvr|>~=igKeP?5e@^Z_S^7 zOkovf%(`JKr>oqE5oPRV-99)?K^<5D z_+gjetAB4!J>L{%R-BJ&?!it_*fDOf<npo%=JHYV;9X| ze|in;hOD36q1)apfiO}X4mTvMSD1xA|HMw2E2^5{x~pm`uYA?)@yiAHS5tqzkNs}G z`fC+DtpEBg8P^rRwNAeH7K+OqzS={3cFeSShV$U)+eN?q7Ra6XCh(vyKEL0aoaEr? zBtx7uJLGQJSTrBGsD330A!t4mMkf{}KG?|XCR2;#-ut{1kQ9-;_~;i163j$ygci+z z$`T(%XvvvMWDSr71#|=*WvER3huuyV>kpp`K)J-;pOcVmcs!)j}VQ}Ek0hf&f6uF!7rt7KJ z=0g#w`;_6FWK=0SK5kF}`{YRhW9@O^`fM$?jn*J*6t$bDyBxF$#Kk|^=P?%_f>zUB z62-9J)DO)B5;?B?=@P8Zkq#}wCN;txn|bos!UdKM%s5pn1KljHbz`Y6Ri2boDy&tW zR8`5{9QAuYR%O2ZySwLU*$>y)B!iRaeK2IO$l+^~ozLr4ln1^5ZlZN0-%`5%3&GGO zK1K>ThaLK_X22gqqY6X`)W`BbA~Oa@u6mU@@sBa=7qje-IB4U!KhoH*W3JDd>qg%FU}bJEXSxn`ZiIsy_=g9ZS!39OpuxQ=TI_YoBzDOf&qh@Zn)}H-rp1+pPE-y%BY3%m}qu6Wg^n&vYL_{cKvFvBjgt1iT zWsl@*-GcS^q8W2O7JF&zvqod{{c&hxkB~s>{SI z+|gT~`LM)>>kGhPd*0E-sg=Fa2i5>gclnY5f)UXF6wH_1%Cf~!Up5A}_kCF*Zuk4K zzRs$5sD+orIzQH~dDgo~7$GPXlVMa*-x@gt(oIVqF!M%*RYG^Ndd@2{yFj#cvQep< zh!-Q!*dgx}*a9){riA_y2~CX$%tjH$(E{uZJHi$#k${>+~* zUn_oI!Xm}H{_Fv^K!gUc{!9q0W?gKd_$5?}6mtVuOXr-|rT-8i{)Y zSvLQoP@D{8Zo2yfvC(vYFo-pwdrlBbiIP14Q>z&PShQpqja@!)_lUhg>>Ku)_%WE( z6WfDX1NHkJ+Sa0@*m=ve#dMA!O!sd(cc=l@O0;k{#L0vpGcir*7hBFit1tjC^aEJwVS$Zo@}B9X;|>p7xD5*vinb4jch-?3Jd zB(cb}9W*1+Vy&|yguKUw{*)0q$?yUPOK^k*7FY&1==s-nl@Dc^kd}Xtn;G0Z)3*B zO$6AY=_^P;eL|G#8-IOH;1uJF61uP8#@Q|OV;xs`Au<*Xj6{JEM;8VwNoMzYzT+eq z3pHB+&6HqbCHw}##7MA5FrAbCN5RD3OfV4{upc#oDb7u1aV&NYwb*k)5sZQgQXmf0 zXZJg=d_>v5iLMRU`@FPR{M>-Ws{yG(pJ+)6e)|54DTwMgFX&C{plzlpe!9>Sm4zi&a<%zbS#ZG54=@}<4Sr2Q} zGe9nlXp<>MG-K{MtL50>23#miUoBp4#yZCCBqm*KlAD1P%Ya3p^KGW@EI!hVy~wft z5@TDiq=w3Wr6D{?I+tUTaWdfIodjf_YbwSph_<*ZW)pO{b%W0I#xz zR=wVJQ~^fyde>2fItb=n2RXl~UhgW%Nlw*fdRLOB>J9d)m)tkx`}VE_jtvR(t^?j0 zS+92;C04!ORgkNT>b2{rO9Ctb)70QlS#j~SG*+NlPIJT|pf*rNi_n9Ll<3ix)g1Ly z00G_MDQbd zNF|~wyy!_bywXOFRm__{=_8d>q>7Dp>>bY56rbZi7?KJ9q|cCWNA zY|kUGYIpgy=M;#E4JDQ2Mns0bR*iG)39+-L^JKTpAs9tDdt<2~oCR~U{2Lgb>|-Fl z#aBxw3rJH>Uj!G>i4;KrgK<#7FGLYJwE5AneDUmru>*x^QQOYYAbp`Sf5XXv5FuRM znQseJ1v(HdIv+BjU2C!y;vh;=f-rCtqhN6>(z~;k5%$teuJ}s!l)!o~6EnNBCUp)j zg$*R%5iD2X60tHwi!R=e5L$-l+Go?*7%YLmO=mChvOTnhj1G)~U8A+-*H${xN*~`N zS}nzL?_+}n^2$A8hk=FX#XaH--K+Nq|DG&~y)06CLYS}ZRk)*j0#{gxEK020D|Ao^ zV!@)p z{t;l7E28>n7Ym9&-$?zHYNx+J{VKBhpbc21z1fF7#oiLJeOcp( zHAm1p25l;^+$%3rT~*eXxx|RYEKt1AmqjVmqyz>J2ErVST16^rigX8Sq5W7l@ISa8 z>(V@HKambFUY2*-2C8C0GZn7gsMRIpL`>UJh zdv@&75oqn$^ZqAf8B1*;AN&Vo)ZDB;tCw<=@(mgL;k8Ezf*D7Uh0Nnp_U3)#+{v>K zSZw~&ir|3A?ava}PVs4fERx|x`QH=C{|hIQ^)!ED_Ca)wzP0$uFxWb_OLV`TMaA!u z%Pb!`A5)BrJm$)sgD8k3QzO8_Ee`%H_52}NS5|*6lrDF4aY>m@WR5583Yuj{-g^tc< z&@Nn{Psu*I4Mz&@A`NLXY)kjzkkJg0jbDme#z4ux6t9e7Gua+dXDpkH+w`&6S#K7n z$FlSeTP0l?YlS}&7E?-Gq3U_)cK%OUHaLJks!E&;Te zn)?9j&~(4Wbw23A8;0P65*ql)J{>e7L||QlH;SqUF!2=%=Qs@Gd@*+%`;yHR_ddwB zvM)r^L#!>^ErvhDWh1!8Jj3 zTe(J#=>G_7j>n3!vak%6!bNW?St<*`q@9rFtd=6lT%%GNN~KT&3e`t+dX#<8LN%D9 zDrqEfs%t?|2Vho;YLtSA&0y0o&CSbT^&zqkGuRMIEZm@-9j6V8$1c*|Ou~(PWu-0N z5x-`X5=7;Cn8iL&VGb(CDYb;w-_Qc=&e8cI`!UuLmhjWZSafrH{2vFCc@-6sUS5;_9O7dh2vRNW2r?d6EMkU2Mq@rWwTMp?a$M(K=(HaMYr)R z6&mx{cs3Tsch7j%pv5N^FSIKKX>|qHHoOcS7?Y74NR?I35=j$SWaFw?9$qLLECy3{ zWepgqido{`39L)VW~#uzRt1aronqAlR==rDTS)}F5W8Y9VF_7|8;q)|3G6X&Jo0gv zj8DY!$Jx{_suv^z4v&=rBlJv$R)C@>^g~fs@G7(mxMJ``7@J+9WFl*lD7_f=iMo`6 z(+dAdb^_J;1REP(o6|DVB=Ou6Y*n~jt*Qik!#cE@#3Gi3@74tF>x|` zG(}cr5%;dq0=amqqtF+Lg;Q80oaj+gSg#n_;mHA3mm}6b&9V%Wrm(13Wj7*ZE@@B> z9cNSDi`*%24DAx1PhoDhtN7#;hEt4e5%eVM0Gr$EN!B?0tH05GK(D}2+CloQZxYWx z$?j@r>m4l=ltq_F9?gb9BQt1e42sjVF9M!oud)MT!Bebd6UDTqn1*vfswio$GI89P ztzaeM!c)-qe9`D>a641 zP)y;_X>6Dk1{ff13gOIHnR|NEyxHsD&QwSx(^S0QQR`kkjXmQjM8dgQp`2$_p#tk( z`V3n-%;prc#!bqgxvl_meo@{{8gY{b6mNKzeZ?&aa4Jhdh;LWVJ@fMMqVoM%|65Kq zWr30R)`2C{3$Crba8~7s&CfH61rtY~hum?$`n(EujDLZ}dji?WtwV%oU)WW-aqfc4 z%3&ggzrb8w?bx*(NcbNsCv#1i*VkV7f|Am1P@>v@LalTU%Ji%{WRi&v^)5w=S-aiHHJW>HOKNcA4P;%1 zjBK3kgTYBNS#)G=LY0b;Sca_B+F3a;j5YGw=v%{&6oEK7lZB_+qWA9D8`-6v^#cR$ zY%c~XB*ocyf|`Uk7+HgD20YaC<5t%K4dPI6>RMYv0M}0t4(yek55n{$rFcJ^#lQf5 zk_+k~J~Dh`7)`%Q(&cEkE}52$lKYlG7>C~r1Sm}msi~fNVb*;1EC}!gESr5_JZk})#3Ql}m!QdT zosnm%iiW%~M+7fo_xD{Yb1a`#E+zD3RIAtFaiK&(NY+0c9)Eb)>+pE%Ve;EWi2{EX z>PHXz=szr6%-Y27CMt08f&ukYJ~Ke`uS1OK$CBD9huEeZI5iEtOF`b@38j_gQOUu1 zc_l9^Xk4TOd|huYW?6jc*W`PQ4zN9(d7}3l=+k$;7JHZAQ2Y5eSZL;l@(4W8D3SMI z5XMN{EfYsomLgn934N)Qfg?DaT+CSVS?;=OiHQIyV&RI!RMK(;*R>pzbIMWPKy*fJ zX^EgEENryp%r%xuB#Hn4om@&-5de;0`A~69jfE03_&=3E$PX%uFgBIT=60=9o99wV zA<+2ByUy}jb=n@=N=X6E-*O57NaEMZNv=t3mPlL5T)p$?!2iakIfC(kkmTU?Z>a4z zXo`cvd?bSShMc{TL5^VCt^1Z(zmzr3+#pMa7+d5WesGA~*ew&aLLQW??B1cU9f_)R z=R1iXXq=aKOQ)r>d88|&g$RqZKoyH#eY`R*31#SXAFR-hSR3 zN?2nC5rDNh%9WUSU5K~rt^O9rma*>e2PZ6N4QjiN6~Zzxd^u}d+y6gDsa)~W<%n2u zSAC1B>9_#vjt)2rB`-sQY?*v7O7*v5%L*pcBc<*@I+Zniroyaa6#7inXNXC;tV!h0 z(#H6?f@PkQa`h^)E|+xZdu9h zU^B$>l`Q6wUnEhg2q$3ruarWts0nw=T{kJ825y*@7Z+?@FWtT+# zRqSPKQr515du4{$MYnA6^E%9oKZ~oYSW^I-%Em;3m%*kV& z>e})PaQQ;On0|j1Ckt7usLErpp-U@BUQLZsy6azyn77!wF3B=N`Rcg*sIQU(WZN^6 zL(xaFAz1jwgo#HU9#uvOL^NZjw+d+pK|!#vWM5MC2XD{^55QX`Dr%`jl~k10M&5C6l~_+H zBgHtXpiy%2s0p?^ufXD|)fiX5iw&#U1EJSF(kvS1GrZwJ49I6$xP6(=`t`pgd2?cC z(EtP~bnU-;cv{t-f=QjH8x=nKU*h~bEYUv-rsvY5VxO@TgKTEiCOh-2QEGmHtVt|?m${w06-4~@E^Ash zOUBCjqHol&y*6F6EMNmYaEbz=Sr+g)1(3-M@nr#P%zhQW6|m;u$+ec@H7VlGwMb1D zGuJYAQ>7B}IMp9sh8eO3bfje*YT|6G#NM^6vGb_K&y}^zWoa#rOv%{$B>U-?MT_?s z9*h^ay@%t-S)%AYoVm>sC*EV}`W4xk|7OM`ngZbgWUe5LnuUe`IGS4DFp!ephnpi?jDKGa-P!Mh*%@N}`v@ky zAkMwd*0P_(;tyB`dr9~dvFF)EF{6k*jMR@s2wb@!IJ`eV<2R*9#%vO$;Wi4SNWU&#w1H(ZwpYXyvpdBL zogqg<3|)+s)v@(FFzHp=)2BELQm2R>p`al7SX*4lY+CTU}#nEo+~cD+YjlXhje zx#4hY(n}hM!M#ml6^M-=vjM>~vw@XNi(ss9>wLlnGSo0)6OOg#e@CqiQ?qM6C2*|0 zY!jR3JbIQAzlrvrvb&wTRib#or_9L^VY=)yhL>}QQ|i|2b9M_h98*6B@T&OabFiE( zE_^Q4Ij)4cb*0X<#)d8OhXxHSVX^g;jq`N{cEL;2VEJgf>O;N}Ir65Luopq}EvuMI^F1V! zyOrTpE_P*qZe_P4HFz6Ky>SUcyvHU zlu0iyc6zzcYSHUU*3#pK1g^&o`Qn$XAzLoq{gS=M7KstN*$4z(ZrF{3A|X2MVK3me zaStLfF(>cE%4xBfyqB#Sxk#!29XW8L0bUhHNn`cTB{W!!jdZtzuPJ;a!cD%?QtSx* zNOx(p(QDuuP)iBwi|6+-1N&#-t}hak_92e*W%1cQ@bZd?EkkVUZ1GqbdlI*kWh@-L zTq=WZy)4@AXQ_29dQK3#Y7LGj_d~N^5%2700|O*)F4}}$-H%PeQjz!-E5$o=MCDg_ zv*9Xn&jEHOVfSm;Gtgq28;BI5%^OaJaK+064it|(h)_SzYsScfCbRWbBJ&U?=(iRg zW^J%SZhM%u#anVj#$ndArTtp5N^I5XO>o$<>-kbG5smkV{iG6N4#p!>6>1``9%gkT zt}lsQb$)S!ubGR%<=dy6wI<%n4)J(rE-|gI6HCya>|Npa4F>lC(fS*`igdbrY@i3Vfe1vtT*WHOZN8qW>7IU0DNgO%?{~wkEzW~WuE<3Pn;c*rdi1S11 z;Wlyb7;9KR_ZRBiGD-6}reRf~rco^KDOk#3fV)?JV(mTLmHxz1M8O3%H0A~&qv<4I z5%Cl2F5-`~6jmT6#q$I)<~Ymr2)sOm1YU`E46Q2u^*Gd&y(3muu%pgJGR!DnWS@k^ zen*s@gdZ?p8Zf98Vz%ME#xn063$h4)B^zD}xQ$sN;aSoHPWU#w(hH8V9(WGD>Bc~= zhq9^*aQ&U8R%II{5;8nU6?QQcMy{SOa=!E8w@|*)5O0L?6eyPvRSdbF`m^M?My}zj zud%AjmoQI`2e(YZk!u8ca2Ev;|5i>6MyWq-Oa+J9=x>n;5lmRg;Jk7Pga>i&8JB z-LAgCx5A549i;*C$yOT4%0An2_i(RB61%<@C2UMVTD>*B^Gf%1nlS2a4W>YRa&CEE@Yy^j;oQxFnlKL6;Sd3g7(rhJ(;f|4m zwMd?*IKwW%dLFK1ja%A8QXN?Vi1;}}4M9+*rvE^{WYbA)*<=VBK+*gxYkH3qi(XC` z^l+}K!Iw6kmS5P)Bli*YG&(^Yt|&|_S3%O9;Q?a&S|={+&N5e+@L0TAK?OD8c0GW!ZI7bsk?DVyfiSGS#PwC;R-yg8_?sdu-TYiMs<(zMx8&=b8O_K3OGR&nMXc>liu-!si033nh!b z!201f`U2||s&tLm&8mZ4lt}xQMc0|V94uKuw$;mIknJEBX5*f(pLp}&mcm?dcL%(6 z!_jlyE2r1I^Uj&qn&7;cB1Yk-kb%6$HJa8bI68oU@|RA(tjFKQPscg=Wg4I0NwM~6 zHU@$^%&sIIb_DfQ8^0yrvd|Fqc1;EfE`5V|b~L|@eJJ*f29aXnH-_JZ+o&{;}BgGnNn?t5`R2=4aMVJXyt(1C+Y~?rL#j z42u&FcVl`cZSQD3Vq^}GOA+!q8cgo`=mwF2Wd@V5kBlBLWoR=V0!K?J;u;c?&k9>R zMU?`O9{t29#FhdQ0u|c_6VzS0Ra}Vk_Qzw_qM!=T>)^5KkE^g@__sJ-g?CpMiY33m zsj*HR`GpOyUoMwyp0^X{!&av70)&!d`D?wOSPc6Wn}a;@+ON#>hGMb*S0-OkERud> z^p0XN|2J$@R*A~ruxOHRDei$MpN3t;Vf@A{vHBuv%onFG!a^MsM=xPHT`A7}!IF_0 z^gHWQE7d}L|2ykazv^WufPR<+gBH#vGn>M5C4YJFn_&t)D2zYYnwqjmH5TovS+DCr zTdUb{XVxo{oJjl=&Wc0gkv~~|`wa+U-k)qDoh@sBv2^=Y2x7ortWjjnbf~d>6LKLO z++|sm$`ddC#Ri3!&jUf)AS8$2Ig=iMy1-XDQ|Amx_P7jQzEW`Kr~wUuE;dzp-R_9!JVDVnRPtyzCkUhg2`v$&>BJ zmp4@5#pN+SSjcEMkm(efp4!o`h>tWrzG303pldWV%IR+JtUQnJ=1S<-#RGhJ55~R` zulVx%?2LHNmp|g6D?8MX)M=A-MYQna3E1!s^y7Jm_Nns2wnyy^+B+j?*2MncVJF8s zoN0fs*>=z1g^1#He_nr(kb^X60^=|6be>Mm#HzQ^T^LI}c~4jnOogkFj(0N|$3%H< zj`4}P2=-Rysh?GEFAU(3y!ves9l&>p!=rdxswF&-|BDqD=LEu5II~|uaq8kAC?fIF zst#%e)|5KD+l?~T`_F?hVfgkf2lY|2suXru${FB?S?Sk8H2VejMog>wsm=XxzUJg$SoEKqOJRAX@4v2jbd>?KrB4H5ci`|jDH?R6#)QtiI`Ncz`xW*7? ze|t3V6mGv@yrY`q@DxeDSP{*;(=2!*ns@AY9RfwwdA6M$-NDoWHG>QxGsf&cNVW3B zkQhEAB2Vp5F}so$(w=qI453%>*y5`(e5m(pF-7-LJYKAg<4zw^1(6oY>xlsm@*q(W z$Ach=Q4jJcG4m=97m@K$qc=t8c;23s)BaBFKJgN_R;^FWLLYT-!0f`PLQxz?Y5=g+ z0DM&gKt%HQBrr2 zo6KXxnI!%+N{)8%k)X55#it_G%FR>LJkCzrtlQ4a6uvFdjTHu5TO?Nx>3_Sq0pnTb z<~@Vt>yf4VuTs=Y=COcxNapv0@i&seM(EYyd@)bP`3chTwiJ5sMQ08*AErT( zW{C4?P=I&E*j5lmwpiW@pQHFdKqe7la%*WmrFg$-&FcaFM{7Rc(`zf+)QHzb5^*bq z`=$+l9~32x6>VWNUl#>!WnJI3m37_KPS!QQ9qOu$_hfsC_ilTM=juRs#rJjKzpw_` z+0bCx$CM=6I%vO&8b-m@$Q7Y4E1ukmzeur*)tx!HgrmFg4(fPSZh)XzF-8e_6UTPp zkq=rFlfZR`J1NMO2I5uNm}Nors4};Ys~$E%sg}m)qM*$~DM;Zd3lF5ZtEFta%5RMl zz`#4bP}R3x_&Z?brLMeN_#%?OtChY(-eX-ZeM#}*t{g7+Y;n9B7V_D6+lu5ou{%#t zZf0;Hsaed`a1lh0%_Z4Yd062zJZmu*3mh7d}Z&_4IIzq+YsF=H^9f`=aq$|QzaAG`{Ie-JkeS5y&}7yH^%lnQQ8}0 zaGt2{jb+I^k?41eER?vPwJey6ZU_2FsApW6rKdY(AYhj+p)q%Tj4vavs_XG?N3 zS?1gO@_tdJCsEpHW=Za%Ocj1F!tUTPUU{TWDzEB$adN~zBKa%CznvZg*SnnJ&W z$KEunLT2gLml8pD@WdOT$A zSy-tg`ot}~o-^x|Okmm3Na#ISU_)1!e2K3dVmT_)n)azTaur0Jy@faQbW@h}c~`;N zP$b;_Van!-9{qWOC%;;*7Z$lF|MC8?`}0KNV4mRB0eH&W>VT3{VpD&NmU-eBNOU|% zdq?yhJq9k75?2s1T>3o4RjQ)`VQ>9HXdEL0Lo*jH9>jhRz$7_O3>?4{;%y?}@OmO* z#sHqy($*lXhZKTdWNDxpozf_#@F!?tH&ve}P7dHv&YT~V7_ScC%{+V(3pSsm0bYDA zauJ_&cz_J>i6(*1u>&Qa&kf{h9(mzZKw&{%pAF>k_j=k|CEH3gNC+j00}=#Jcg3lG zBO6;*lc5M16}2GLlT{Y`Z3lVvB$j+Apn7urAlXy12l0eVTR>Rz+4+`$s%78HW~cDG zNkAiOx~3Z87X3o#RWlyZ>ozI1h?G^`jMPvfHQXX4>JR48UIVB`U2?^c!8|tJ4uMzP zs7?cE62F)^7!&P0kw2I>#BDEbi5_`YNO|fOgEZ%4U?UrLtL&3zx5|P;ZG*>hPv-6({n`DFy0gVZXL#(dJPoncFT&L60hA>%Tm?km7Nl;YUhzK zRJjV3=Ve_~p7?thPrPYOSwBd7=_UUf+g2hfM)0Uu=w*#bq9&-ia(^Ie8u?Gzg_3Y& zcy5GOY0}M$C&k(kuyqx;bEj9eHQk;ia&NC?QfsnuWR_P$YO)GX|Fc+1{zG1w%JbsH zOPv2)UDbaenRQ08a#NBya#HYWL5;X8Dn*Ywu)fR@Bkth$h)gJlICh7eKSS>1_u+F} zV*H)Fo*J)kW8jRB8$U#nvQ{T#7&I?t!&=a)$CcFCkxTx>l~^rs1CysQ!&>IJQOXtC z*|CZorFpV6v0#_BR(nR4nnx`26JTH%XH7$3nu|N>ggOXgBlIpgHk#qq#WtzZR!AF& z5uQTBym^hqP)3ph9IcfoD%Rf@)9>O@p|dHBLb=$m*UJ)b-^Cj?+DKEnzRofso{_Jc zYI-nSFtuRh7sW`(-QY*2B1E^lu{4|~`rOTvW34ICD&yf0HD}$;qpejDF@-o7X?sEP zUC?Uju_VxUuXx|jRhG&je}b>38Q=A4!58m}sAlxnHydM}T?>6)TIMy{A7U92f;hWLr(3?utH z;&+pngTnVNlWR-gp03%e@l_$;)o#4jqM<8UmvGuaz+Y8O@7DAH@#YS1WVu`?A{KH5 z2eJe%9Lb}jZlIHdZw4(BsUvx8U3r8ri^+v}B%W!!dnA7*Sgv=2@a$w={S9$!Bm}=m zRFC96tj%;CS0J2qJ@4Ziz1>%ETqOGmVkAgR2*8H^g;D%&aV$W&oq|X6_P+9iPC_5e z8;Hk7^E#~JKRU2q9m7iyc`|4$A89+P#JaIO*Sk{letr>thS?9mFR=-$^#}M9>{M~1 zal8Y=77o6WCh-5veh~Z7JQ4p8Z^KrIArJ8={@G0N@I!nppc5VjtEmse2Oxi6jg6%x z0r}hDJ0Tyn-&9?-syO2jemi4d6o2+8=bZf@Hb2HsU`(tWFL%Vd#$z)uL;NuwJK`eo z*aW#FUOR!)j`*huyajIc9_P8ZefGFaU3i=iK&s0GCsaaTE*_c)2WDxtO3a(~B;|yeEi#AX2ma(^aJFbW8Jp(CA_E`LROgJwE#OnWU?~jT`hd@OC~q+t4?4(6j>5HX za%jA4!;h2Y$w>Vv*a^-M6Q*#_mxW3iyWk4#z<1+rzt69fepB-oiT9>(&!>g{BkKR> zPYa2-sl2`a3aR6Wbh>*gce78$vs3wLGKk5z+!n4aY`8iKv^)y|)^Az+cTYRN%f6?s^k^D689HpYjAn^wH5D{)J zcPyg2#N?-WdRVo!-Y>16fzcnOe=4><&6~!`BJ%S-*L|F)*l!v}Af6e9HpdmWe1>Om zoPQKAd5({vp>yS5=)-qKkLR)9m8s_9hv)e+_*Q4Wz}t3~Pp&2h;HuggMs44mfq!u{l z6EiYpy{;_YzNIw)xGS!+qXJW)Q7XMI=y<)znu98nXcj4qBZzo0i@$AqS{ee3Oyz6q zKArbd-?fsHGK8ko=P3F2mQIJIcvqB7=lIZ)xOWDB98aZxF@q=43DJ);cr)jZzo2DC zq$r!gBSov3d>;_vFJYseEe5{C7b5lDOIRIe7yHlR zKKMSV2${`yIIqv; zTQK7f&w>9dyLeX)JkBh8;XJI=vqj=OUe1eNF0P)(r)hBPPg)4~VUAd~5MGBFV(&se z5y0+3n!_x?$sBGL{NETVLl^O_-3}ft&G9;D+|Py#ZnpB8$1)6j_GgkL5SJg`v%rJ z+2Y4HFa*99sY}qF!{VMLydNtQE0^$C`zvBn%fJxn>@ul+b+C3@Cd!vUTG?XBQr;oc zR#?(Jppsg2^gM-(f`E|&nw=@CZp6^gC0(zQ{QbeBH%BGxy#;^+$LsJ^m-w`EIL}IWmh3ZYnBKuWgY*{d;N+t-}pdU zWtOt>SZ0c@@AEmKe=ed!xTZ$lV)8^@E&lp_KArKhLt;b`PsVA>^F^3I-Vzb(c@thf zSM*rVJMr^#@#F!2o_r;LuIKeb)si*H^EgVg4ZLfu&yo4c541&zIUD%x{NiPCas%%h zYBj@&0P@}B32y(P)S{^$VhyrNEd7wjTk99KqM*g1(ZV<-7mZ(w{U7qn5!N>y{pt0E z^s-KR<+-RR=KqSYSVAmJBG%UOkwy8zxkQfB#+;43$fpEGR2+%W(i%d9=vG8n`54*q zW6~Zxi6M}#6Kr#+NahlKIWf!OLyfbm@Aix(oc9V+Te$5;(yTH{V9+1 z%hII4@jKQ7tMap9k$z>WLnLmgkA%PWDbFMFZ9e072*1zyG%@=#{sJET7<(TdAXabY z!@MgWRl?uBE z=3Nz>7{U+;3c7x~(y^uqxvB}d+hDQmW-oHe{2|*^vp?Pje?@_1M^OV};pn@4QR3P* zev4DRSarF$bvtj=*t1N>BE264;bE$k`w)-P_{(+slI^^8^!3PiN=as(+Rj`4ClyNF z!TXBnFL2WMrg-BEz8YHB^GiO8ttwvmCFWn2SA2Fic7*`HvzMnPuAo_$r<0IU9WM3I z1B|5ur}zf8c$fCdW7DL4h;AsHDfChvyFhk5%Xi;8@A2}?#$4m~>o zqk_0bNhbX}K7m$#>%POfAg}n#@3=o_tHr@nSny|yzfWO|8II?Y?sJ5Gh~w+sV%Q%vHNkvX{mEcH3TMn0-As=s<6#*uS68 zbmdVaT+qD^TzN-~YPm9)kG_!8#ni9(E_-`Gk98CAQ?xN1dH_*8*M1gggDY%(UOmq1sjt@3S2NHdG|kAURG3xS`fbN~6X#AE{6RTl>`DH7AVh$-oER=V z=Jnr>jJw3ZuX#xA;ZejylW%yCuiOlY7Nxup!{$UO)*k*Fua#gW8$LI@Pe zi;mx-=MIQFzU2o%u*p$=Ol+#;>7f-@P_YqfY`aPfd@X{`^7+uQ+_UI+=-8ICyiubzX( zvKhs(Kk?I?>54rj2ebsL2}6<7QTe;WH%xPr6?aeLzm zo^z?b%%iQSlEyad?kkvh5J8d@tXZ%Ql*|g&+z2Qs{{0H96#9rFnu-z8bT8wFW{Qey z{8nehtF-d@Y(YD13Ol@DjW#gxYpc&;c(8@QcT4Dk(~r3lQPgExcWlyzG41KtZF2~= z)|%Atc6viW3dBjKMO~Mz;mLP9Tj$yj;6g0FTw^*n}GxTjy~Gc82yDl+MP%_eYIsY%fIcbb&j+mjKC@N0u4Yn zo|nAjt4(Ea2W2?5XPsC6t=f6csr9TCHHU}s)TeXcQL71cz13eEMyslo{#ujtLXr`E z14F(ipf}{<`38mtFO;!S%1~Gh^EF&XnH0aZEcih@_aSR8wsm3;5XVhAvpYmUfYuFL z<9-2JvU9e@+7kg>swpN%#f zWY1vi=1{_ZM*~21n6V2iqWYeTPp>|_q~guxFQ{1VIUjs9`|nK$wsgeAtzx;Gs95f$ zM2BLz@qZ`DHNMmgzEd3zJo=uD3BryR_k}VnS}w!I#g`%4gZ$!Le7*vF{Z6tr=*S&$ zxL2g$f#>h^U zID*QT7cWlI{8-Q<6DK^_a>A37AD!~3Sm)A)XZkSRF~;F={EWXu{MqS0@H_OnbR(qi zPSYKuaes$79AVd``*@`bkRRif-ivg!SNbs0@eWAXCinvYQC6X{AJh<@_ z6DLm{d;juamn zP|>o17E`P1LYrx~h!qXA&_u@^AKmc)NPdaGruehdhw;0!`21FU!l$Bv7MQTzUw7OO zSY7=2;;$A9Hof40agb_PU#k1DhFY7tcLeH=M}fV-&*31+;0;diH`KZnUudYU;5TK- znL6cxv5$j_!>$n~lg5B2T_3-x7i7MOZlc|rX`{Xca6>x_cWOkOSNaG14);o*yDok4 zx-yC$t=Qh)h`P|6O7in5> zBZUG~>QT~ASp;_?3yrf#Tu#$IVG#%G>W(D9YH_l!wRXFo;|j7yi^grV`fR)y*hXuK zUB`26v^Mw-(z-TUGhP)gj<(SfV-q5Dskc)nk9~CfqmMuAdi3!po}B7%bQR%kwZ;*{ zk?p#^23x0`btX(CtwR34fHzjGYpX@;&96t#Y^M#lbL`{?rYKZLr0%#6IGD~HE%9fk zyIScX{d>D6j2-{b#K{vLBnx2YPr%Pu!tpj6pgq(#7ZgW|uiI%!k-<^Alv;jc-2sho zw7_4Q2x<>8q>7g9wPMynoN2Fh2#APQ4QneJchI_ojX+WdZU*i&&Zmnh9klv=Y;c~H zy&m@f%C_$R8cc;8jx+sq2fA3c$JV|yq+8*ywfMFJHivW zxue#rN!wUmj^DnxCj&fr?BfqV=z8$+ap;e64^DGU1DvYrD<1BoH49jTBw3sH#F9>0 z8@@YMly%bjhB@MNX)GggZ-(rA(YUkLCg5%)sjkW50VMtBBT4o|tn92kFXFps@5b$k z*Bx~L`WAN@IVW(Z>VA$F6Ql( z5{ZEX68sY-d?ctCLzF~xe`tg#i9|(=iNW7_ueW(EG4VeeetGwI&b_zy-t%$KTSD6C zb9VTOTAQ4;?ltaOTeqg&fld--awxbsN>huwZKcmCU9{;7%z4uL_yXYtOSWrTCG@gu zW%Y!!%{3xLj!#eu*b;5wPXW6;+~A_8^UKf<4GqPHHV%ZMXxjiaZW$kR!CNozSr-*# z-dVu6Tr?{~=Laq-&R(=o*9y?NXK2UZaLi`Rv0x!DcT*mYdkeIA(56I4%uVfC+99X{ z=dZbmGD_s+BhhVvfk>}yI1tv(HRxI=WFG@!ot5!ui49M+q6&UkNA{9Rhz4Wv$Z#YU zwW_NiZwN)h!+oh6DdPTma%3#$Q}vWPLyp58OYLFjZ|bqt75uQCD)8SID;g*~xf&hC zrWt^PPc=|&b`6?sfq{`wV=NkKMV$kFw~WVmD4J2jaSwSPKU1V@&q92FuX(7ns2b;*AzY;S@bcq2Z zH_jXVz|ItoS4tCN`3I0xUBvZp_m5R8y z3)$`fhr6g2k5gciRfhO>Jn{#RdZ-YZ+-@p#DoqH>l1!!y)rslEu-45j1efp@2UrEj zM|R`k{oTm3NBDF%lvB*op}`4(OWKHtKdz@_L_{a*#IvG8-?@;yrb33!`^ z(rX`kH=vAD@*oLKG&aPb&*8;+|s%bK2TJzGa?(bzDmFWcrw zXrNc_ZXG@0#$4d1x#C~R57+r=R*GN3Wy|>kKjma=J20o*uDuESpIN1At^Bp0y7PXA zN_G=^%-nT~*BjAsbR$j4(tHTcAfMhy{UK%kD;QP)I05DB|7w2pd6@WYsxfx~k?~0% zFUu+9(M@E>FA16-(}SjX$jOreG%@pL4d(>NKcj4=Zq#ezv3j}lz5ws${Q;^>KZ**T z7^Ix6M2~_X#qt6;1v&ZMiD&xOv-z_im1JwiX`x>cAaQG+-n1UFS6O4z3zd~Ofs4#n zYsP9b+AV+)tNd~g?ayfCX}vTy{kzq=@uHu;fYv$Y+lteCw>}2zEyn~}f}a3y=Ft#& zr|yMFa=}>~lqB@MJQkv!%zI8=y_vc)e0+Q}6;_{FW7hri(Zh$fWDNNug_y(2bHMLm z##TIk2BcKRR1?A!oSL&%*L>iM;Pnz^dwFM=N=ILTc#hD-Lbg0%rV7P(fiHzV9tlSS z!y`j@uaMevxeYQ^!g}L9vEGoG`!TywddOGx-s6pshOA*~&4_+GWq zxdWsgot-i@+H#3Z0Aw<8|JsrGFe*1gD?0ThUEJSCvoi+I@9(4AnWM*Cy7n$`4!8u| z0KNzA16gidDnKq!2$TagfCp#?dVxV;5AYiBHgF!e2z(BF1&jed0r!DPbuc|J4=4w! z>+}+>0gVnI47>om1RMh108RoQ0x7;?g!+a7a_4I~D5L|}+j=;M*yquHe-BV(v2l<# z%Na`h9|5>gww5 z>gwJrhr)jOHmo>}w26MNnd#KjFUaW(Fb7jof+N7`=L`x6!k_N+7ee^gtmP*nA_M${ zSwyW8{Y3zh1~>!!0{r}(LVY5Y_0M6RrvauR;-Zl%z?tmu4{#twfS)tKKhfz7GDnF< z<{Z%^9x(i?!EyZ04+w!TAizJsJTB_pwZj~`o$&m?i2fg z$ff_hLMOE;WYSbxLmO#5ouVJ;EPY5n(g(DbKB8~5bF_i}5HrMd@tyVwy(f-o>qNU{ zV!2o&{t`Lb&)T2jGwqpgwWC^vc3k^W`(8Vz{h*!I&SX~2;!Qb@)*{g5aA`(hmXR|DVIwyuC&!`ZZ zg&>`s$LW~VpN;zcyC%6%aTol}vnQ<(5BNdoMAx$&I#1M}CKJ^T%a{(i36wbmF>{HD3S)*ZCatPznyo6L-e zPE=?<8*#rV%QX)~bfl$bWaKLP)Z7-?2+s?V&9!TGEfS%Kf^9Igp^-FU#exZ!ycFd!f>GV%jBcWfY+z#5m2&H!`e5M$tG9 zT{EAK$)s)O+L$I{d#-sRCRLQ?n&GiA^qJW(b{=gvKZ~tTpPN6%_6NF7aT7CFD2ifj zmRX^QY9Wi6J2;&?1ThwaL6}j&%@Gpc8fZJm8??*Ji*J{H=~ZUg1xqF%$)Q$-N;Q3V zRpl)-7J~EfNua1kLS6d8Y>`k8bPY^sNLyEDC$uCn^{V+n?aUkV%?z&dER~q!>g3WM z(=TySc$rTDr0+H7C+5~!V8PNHGXlDXkxQhCIRWkv@Xw{`WoBm5Wm;>tcBP`!L9Rrv z5EUwsQ$l1;c6C9TuUu(W5{U>G=_O`_`*BhJn)#wTGwR){vQ^6hgTB<<>wclGSB|+Y z!Avd7*g!Teql}C|{Y!IrvKtf>Cil0{#hKTV8~zRD7Dl+h}U=@vSd9m}19!bPgNyg_qOu*9rrFo>nObHlE*Q1-nn z;?4ODm(f16Z;IROks4;cl+uz8n75_AY^JBi(Sg;sr9MRTmASOh8v5FNsPUAb8fSS{w0jooYy|e{I*$F=1Ki@4~sP;2cj2c6$BQ)kp8~i zY>3ggXvFIa%}&iJn7_1W#D&E5ZDRJhDbkjfrKUpO$_fL*w6%}TX{;l~Xr1CrSmo~}ZP+Z$Iu(Vs-&*_9&vt4^Ud$((i zXI{J8BCQc9!d=r9=GLK1T%r0&^LV=!^gWtB${g9$-)z>tp-*TOLZ{4`?aS!2nRW96 zK)?OwTk#CnmC5E6odUk1u)ML8vh_|!LQyx)!wCmqRZAlRK z@i)4XfM%Q2?Lo>n&v%RQ3V41n7jim~1w6JpGvcA{P4Jx9eLS9ekI2SedO!)1UIjg^ zJcozzRg9V@MrTt&#Jx(Wne@CK`}^PYBuV%4XH2mN)R)CHf!{5iNGzr+u-?P z?=E<5>U|HM34Lbb`9YtDEk0G@V#>JR7X>q};e8*(jA%EWV$E-6TK`63!LQ~${acGQ zznYW#&yU;xYpKsT6yu69wpb9e*X^ysxBQM+qlr<;Z@t_sy!|GTbIsg(J5!K!#}i`9 zZ)U+ADT(`k}$u97h<`|;T9NRG;K#k*pS6Xu>fdNRcW2E{188*8$&+!X2v32`O4 zbPN#%=9B^Lk>ZO1?eGk`vq$y>i{FU`QYK>BhoqVT)tQG`pRwyIN^320@ZH&wAto|R z%^aax)i*eBNl_#{##B{#&-86UwNRcFnsQfd`q->l%Qfn(l zxuXG%a3xv^!ugdP3vTthr!J6;y{CCgTaI}^!BBz(RYJ@IjIIB@aP?sxyeARauijIi zCYXu$M&rBHy~CnEvJ`2G2z5uONw+&OME}@ackgRRaLawovp?}9*yV4f*zS+E2?{ax zUjn;~bR+LFv#s2o=WhR*p)O;pFBGFIWw}AFMX;_4Wl1nR$+s{vFOmhE*+?;VT`o=c z0T=zk;D*L_etQ!a^32+ZGnT0tcKPbM_hZZ~Fduv%8{O{P2Re~>FINuUgt2C6t~vOj z0T`m!J~Rr?ltF_q#1;(tkZu}9lx;ZD90f}-KZ_Tc20FVwjjNRG*A)Po>On)Vl5@j0Ci;T;(D3X!W$*L%LAwia zrGi``Mui1k{rm6`;<-`a$TYlGXN*i0{C;@!y_zVRY;Jsd1eo6RnMb(=%xAN){D^q& zc1$uJd+x5t30UDdLTZ9j%^g_9LIX_5HNSm6I&zt}Fu`g;DFL~+CbbFzV?!Y`*VdRh zzjroIn0oCT>K&%|OfEltg`E)qgjP;@zMlDw>5L4w8$+MOB|1VD68Xtd9VpVgb|f)8oyc7g7R0uuA(%ZfZht!C0e{ z8Vm}|`(LPy#Smj%VP?Njk5-!tUMR!h^z?t4IM0n^_$qVBf70F8)VEc#lgq=y4?R87 zm}nKd`q%$Vh>5$J$5~cdrD5$wh6Pz+&NP#p*X)8mF%#)k^INlS_;p+`^{G=@tC0&m zj?x?tyTc8KTgMC~j71qR9>OdxJ`1p<*()P|IVOd75Sd&Ki%al zRo~2@ezeYfX?jzvY?n>HyZw5V6^)Rp4RX=)7c=m}6qtLFQDNm#DWDEgH3)1VQ^1x0 zeVy4!#yZPXnib}Q@=Oim-W%-p+hcg~HNRIUvQ)y*4J=6g0AV^lYP9AC%78<(QE^DD&@cIV{&GUq0RMb^BRIN$0?AAclh z^Xi_ZcM@$i-`?~hXaB#B1t$Ez>sar9mZ;HYGigWSL!T*S3uPRr^p&o{qx9__Fy`W^ zn*KL%EQ4dKfkR?>KHzvI8Dipcyp-2D`%ZnkIcLW`PFoPnH&;X_dW513b|T33by8ub z?^IIMduJ~egV{S1GQ1hEO8k2UCI1S3y_EjAb8L_&Z;n~GB9am2>{7BiXO}AF!(B7I zNz%>9Dga0nx4mKTD#0S|U6m7T{ER_Q!=ic~r)HRt!hOYQs`P@2ViV;XuQa-bXp z>jT)kJTTTw&`*GTYM$R4jXvi8<*;l|EUOcXepX@LOsr5qp^8LlUU-oYyut^LZ!T8F z=J>!%Er@#h;?G7Rrs{7I6$)ab^Cd`G04;PyJ_X<#cxgEWBjQ);u+ zsvkJ(Ndy`hot22wFp*UuyUjeQOYL?*esl1lcv!3t@4Jn*m~ZdrZ)5*MKHvBG=P({` z+|z)rIPb;i&GOViE`Wmyzf~R`;%a!Xfff~aL{-<=e_dhs2Xkz-N-6qP zX&$!N=shT}M`0CS6|2ho$6&R({tdIrJFmj#o1cp-eO)l_m=U&3QJg)-AZR}G@nbIp zck!KYn4F_moTYzyumw5Lxa3SSN(q zj>t;J?g-!pxt%=I7@HjE3UJ}CXF_tI5$M97`a;o3&$xrI49#@;A-TitR2y3^tRZV- z{)sa170Je8XKNA5^Wi75u=WbXS7esHkLgEN-WLNAc!jz_mW-BFSSWz?6Zv-!#LORS&6h%%jKd5c_lFFYTzMrsJbod%C-6Q!Y;c zTh+=~AyMmMH#X(ad3arlF#$xFQ70b7qWXmsZfE%v)}mjV^G^(Mp0>YhoNUjkx97>O z;cH$)v{BnA<2TGp^G<#YJNN_N8v?7=qVF?kj#>VFXV|9`PThv*W2bt-WV-rPLl|if zpSn%t%rG0CZdCVMu3pzLERV1Ubkq)n`iC%yDWXfVzg}VHo{qHR%{Ncq1}q0pr@M}E z+EQLg&)_97Z|P+j&u1;uk8_0notb*ZMJjKyFK+)(Kj2Ogz1$E0qYXwX7);#YHKQ|w&%t~`O+^Da9%rwrQr;}#- zPpNp``_ou4b)s4J(~mG6Z>)TPE}FG3RKjo^b}<>x^ouQ$=PW{YmIz_l51{8QYXKV$ zutA%@cy->zVBst`kq!+z?b3awaphJNo`1y+980exG&skVfk;6XQ?)iOzZ8+F|H!Z~ ztj&!SwzoR;^XAzr{i4exqp?kEh>XRirhd-se|1o8D~H0<`O4xqR<1W!=|<_wQ#qP` z%G`Z5oz9zoUY*(6Cirfi7G#J=fx{+v5I)P%p81Qp2#+nV!Ya_*{p)y8+yA$IEQ;^^ z_Hf9Q6-Z_@cCi@hzemM-`N+!)qfj#{Rn7}?RX7o;Ju_0jWPy3gkOeeDRkuyX$iw{>{jieb^%LfjYdxGt<};}m%&XU)0@6qS zXw+br1>rR4zrvWT85^pBAmT=;x#o}D$O^9KbuDKae?_NU=G-v1IvD}_C)<6dF8MEs z1AG#f{v-)Re8n# zz$3aW2Y06^^RK^}(5Y!n2)$uiUusa*8_4Pnu=IF(12!aCwx&sHO=qWlL78+#h7+aJ zMVU$T2Az^$5aW>-h~nt13=x#(yuwYPefh7b)v)YhQ=Qj_t>aT6=Q?-L+YsCX5swwFT_P>zFEig^UiQ2h*-{zz8;JW4U}gkdnmP%VpvWik9Vpq&Hcj@`V{w4{`ngE(ElQ3Gre@B{$rz;2*o%W{ zxLB|n8mNKn5JGw4)m3tH2)X(FeF#0o?{1-#%J0#kloG8t4t1;^8%xhst7$i-mzQ1MWWsGBTXL6@Ebu453evJEF-=WhLjLDN@iDi5@u#ugP)LmUHfkqsA<^zsAvv+P>ma z?EPyI^7VKM2mfcs(@?wU1F}W}b)m219SK&E6BFnODwCHJ==Jc)T(ZlFSz3@QSf4B> z)&5&6hS#A-NXjvF=us+{<#i~LDoU=@p=XJ9$q`9(d!1d|P(_}Hxc!W;{oPK8t}tA; zstT3KZ&)U0 z(v69n#Rkc}i4-Y!x@qw(i$hQ^WWhS3Is-#gW@$6Xw&vAL-#o?YjS!4+%HoLu7S6l#HuO z@f5e6tLHT}ha#f|Ss_2DM-MyKspy|%VtraA^47_{^(n#Xoz@Zn`WoFd06Q25OGE>D zU5JSv%1J3S1M-oQO8H{hI{AJoJ=8O&S~-5+859t3^%#Mr|9bG!2C4yqWRC}L+C4<+ zvz!&Su#ad&!Stqlp%L|^StUCfk?!3KlE)fT{nl&Npk~Tb&l;^99zCwR94r)N*SO~P zXa#x2DhSIf`B4*c*O;%m1_T*P4}HG;p$WB#+s^d4Xq1~cX_niewu4FEUeZ2|UJ-S3 z^Eh5J*u@CeCzrCd3O2GkJ4d{1Srxx)hMK`R8IW$hQ}MQqw3<-{i%X5pn1iac7BYDE zTyJ{E>RMS&gME@!00vXME6fK5!+}Mfg%{@TSRsR5^}k|_I*^G%MJ3$TWpu> zTSlc_u5THYD1&M7ErU(PT&`~sY*OZ8vwaImx5^FmDYw)v*SCxu8|GUE3>KMS$oPwebw{@OADp3^>?j)g;=$7sW0U)&zN;LwcBrKh|lCHQO>(o-#NHCIJOo zHV3u%*F42Kl+A?R#&HI8EX)ZuoCyI`jk>6ezTDFQfo`Ep zMg~`rsv5@O7C@&=HJ}j95{MTn>M6s1qBA~$?piW=JU-K)D1&}Yg89VoR%`CLrAcp8I3*36NU&QeUt#SXND=&GFEi3VYD zaIF))D)PTj)98@UXk}1|G$vU9`B5eXiRoX+ZJC%Q7kwdfx`UkGGr_B6U&wx4F=b9N zC{PrCAyW;c*kl2Nuz{_HwXHIXIkQK;&aZ=V8NZIn-TXQs(>qga5FCnB(hD-YGh{4h z56{Gt>b|ju>r{i|VzEH435Mr5xS6mstvY!I6Sn@LD4?x&TcTG=w9|t3hMz z1uysXbgQSMkwcy`H#{0E%eqhi&t=QI&@=Rn?Aw(ZMjkuFmEy$~Z>#RL8tS#KShK1G zNwo?64~`E;wSt<=8BI*vDjj7{ndIWl&suOk-RD(y4} z^cnJpTj|yttW1q=)IM^?mq^2+Dy*pmFA=L*E_|&3rT;B4rjNp7<~Z`-573JcCocxWLl5@Ay1j_zQsbhtYF(+%f2U4o?lwz~V3juzZ>aa(#-Oi=b z0Ndwwm?^MQc=B**3cK(oDyjl)N%uh{Y|@cM-(tgyFkJ&eg%S|9|^5tQUcXEpzgx`>_uETn0Zt?|S4=u77}9(q{S70~Awpv!~I}ESQVv zo8_O6Q=XjtAYH~HZ}LNs*j;kpLpa9ug&a7DM&q?(5bOn?%4UNpv#-^*%G2GJ1l_`D z&8x94w?##RKw?N&B2+DjCFI00D175!iW%UGfnCCEvGHbO$yBIp*|pGGCD_uYKvt1l zuKu}9eV7s&Te59MT3D=SDR09nPVl^gN!cMsJWT!K)aD#iD3Caq5?uj!C0YJ3Wf)(o zJesit#&nnf;mL57`+BlphQ^2(tSfM(0{d5iu|!4c)3V0D8z{+oP3B;;3HMIyA>=MAb02`<_1R=oe5YJ<|Lh|7!={Z=K4nIkCQT4x` zq`ujf8WaXESOu@cyef^CoCs@m#tdq9 zDU~bOo)DXb$p9Kv?#`k%ULttmhNPaA$ycAEGziCO%3bZX82JNvyo*G7D-98Dh0qSW)@C=kP^FNg@4u=_Z zhnzkfN@j-)8bPUvYPMq7TjQ#7PTM;u*@N4RQ(K@V5hQOxMxa zRz092Ahr*Urdyh+c25qnn-~Ww(tR{RL>0J=0$-JTM^g+m!I{yR+3t{mW5`WAN*ax! zRCp}Q0b?lxig@B!Y8bKjPc$8hgX%Jt@VEZ4+%}d5LZv4@O)+&mLI`!mn$H#rq(=Y# zT;BdPy-xe(w@*{EREtE-q6L-{uUuLROc?nV?5b@247CAqBc1_q`SQ(YD9PArcdts- zU5e3}N>x|itKiHO#OP%ls^XO02d&nah8&K2_vjbzE}Hw} zMp%bn#*xNz^gQF)@SG1GHj4Zc9%kna@YH;s<}jX>&s%ive4gUsZMtrdzU0s6=}Y1D zM1%2$y&M-^oph?;+tuZJEiXrT{za;CVT4_Y)8zm7`RR3&ru}XiiDdnk$aS+-4%7iR z_22P;^_HBd$c6i6=Pvte`HyGpLULcSD4q*UT!T+uQa+XP2;N=-(XKZtJ?drO((N?Y z)xs{_j=a9~Q7@~~OWt@H8vyjRd?$y}(+(-w(TpPyZJ672?=h#Apn{=z@=kV|BV9i{ zJ(r^HKVs)t#>E)r>e(_&_ki;h0Fg$863%bzFSfP0(|0o>6% z^dYIYj#dW58qpwN@VLJbFaz_0CWv|iQQ6fAC`DAc!%M+w=wnY2h`O!_#4;Yc-i7MG zs8u*hxGpVXnICrAb>6fIu!M8fsxc4IMhpn-IG$o6sz-6t1;~DR6m^SYiJh-PA?-zIq*yU{ddu*NhJI9*qJ(UZ5Foo=!3d$kHN#4VjNYS@Jh5r#*w2w%ooWJUamwNW z=Oq1bwYnl+KX!d3^`i{Q20j#xr$w=1PKsFPueK;Gb&YX}KYYg?Zvn_o5Wp9yojwaA04E5oIz@TP9 z@noZ=ep1z$)eeR`MA=zu3OCLL9yEe}iR!}DMHY=!?W>&$@J>wDQ_2HjLAkL`?@Jpj4& zsm=s&b2(tYRhG)-Gbp@S5$}&1{zj$R_VsfqL(EiVq+Fn$urM)_WgLJ_>g){4!N@#x zCb?kRdIK+U{ATzpU|Nr) z9+O(JO3ALJD0z)aX>q_2TFd6Z7TIwYHLPu$Q;q#92fHC4N4d%|PUg;{=(N)+CiI3W z?9$=)p}2af+^R_VEUJ~3bC78cHeOS28*?ECYzGHNXqcU^=%AIa@ocuW9+Yin!@OE@ zP!5|3ljg|T6iA=Q=VwFI^QUZ*nIJ0IV;KGXpnMaFf;@)NJ@N?BiEj?dPP33VY7T{G z|ELHEGk#NV*rvfIBTrc;t2s|twf1n7J%)TZI!mPwHWv6=HI-m^Yr_UZxY9SdqU~&=N={cdx=)~A8qnNdk3wCJzqAG@q#y*_>Gl$?X zX`K5895WJ({BN0aB`S1X+6}C18Qk^c{+&O4;olY6Op(7gyqSLC$@LQgqdb@vsgAgWyp8XL;Zq zYFo?0)gYHY8UnMWpQUR7wFuu|!3=C<R~iW9m^=>u6h= zJQA|N0?SVpp{reye=ed&!mm4DEJrRTT*DyE#TW$O>a>Kq_4q~6=JeUp``;XGPQk99 z$TTYa^xx%zCD`J@uIi2@GzMbP@m-pk@Ec=KhSM8-lHHmJp}T&Um(n|yK^;YJiWk3-|+u4UxbEzwZq z2ExC3y!>Ms>;@NP%yMezoN5=|bve0g5yeS69)kRm15mGLmlIB^%h}7Z=a(<9Eytjq zFH=@froM)o$as^CEiAz3%+IaB%%osC_m1m3Nq_Dg-cGW3WmP8$=HBHBL1#F+@*g`% zoV=x&;{MiCo+_pup1u(XS>(P7&Z)i{WcAg(#UOZs{G%AAwDYp%Dq2oI$>Xai3&7s* z!x!$d-1$B|j?hi3;W%?%j$cikf`8(MhX1+9lyg^8?KW`DH~d{ePwAKK2(%^Ep@I4( zC2#B|i~|FB>1x{-u@DW!O4k~cR3KkpLv8DvRs+sYwxE}?1Q>4Pgp!2vl4ENqo8U7z zcrD!}FANqv<>MtFXrCNaDvVmnF8~r}`}jM2_jltaDv{x{<~~jYNUY1;2XXiyV60xq zDMCV`9Z;cs2!MOJOXzt_ONb0yNB7h*6%wviJwO50?NpGpsq*D@^Z*shBkSP4wp!Ns zkjCOQ{zGcf@yK}8Ltn*NpdjEbZk++!~NvR5|S<-DubES2@YU`y8I)W;+*pX2Y!;HHqhP9 ziB_PbYy&xoX3O%A2^VbwJ*hcD3FgI}MFZs(x)S*D8e4;wYou81qk<~$%U_PUv zk5{blw?|p{axrJ|fI^i;pD5kG;S+i#IZvhYOLLTy8`{zM6%%iGtYh${(J)OmL}!1b zlp3J0*Gg$Uy(+tIq9)E)Iag?a?70b1ugZCwsB!&QZh%Q4KnpqI+3(wrmvo!3cj@;j zMIc-3rx+ayWX7k|mHw13eF`h{uX6UM6yHGM3JnM`7O3I6m2pJ%aL;gEe%RvM;ZG?u z?jOsQEjQC0z@NXF(qgUQ6rvMk2)+r&;r2&6>VL`In+dnW$R9Uj!{n+A+yW2aSLMJh z)T7=URUz&dVPxc=RYkHWz_*2X@N)Yj`<5;6{w$DwTPYdY8*YWY>`yspt15WSR(P|{ zkq5V;Vt>giTcL!0l?mHuY`8)l9%9U}u*$c#;i|jI^6t+lt@<@>N`VHzk8{>%)Rz8` z`#+;soc7gia?o~aPk)rm*-iljh4#+p)U$DkC9Fm`kF8jxk>S!mWSIVu9ix_R;aU2A z8MlMlHrdC$zca)dyum^b<3JfhjK64<@&tiAF(S)!_wo*E<~2mJka!G{r8}rT70K^+ z&H;_Y!UXQdG7=7TQVA)oD(G&mcvR%b~v| z+wO&wye041OWSdsj;#A7?nhiGr+!JNIQY^&j757(AU@5k`I zShhbvH{mtn0JX$*Ia2?MQsoy1D59C?KC;tTXY);SSa0h~E$UOXC*0~Jm0)**p&Y4l zwvW6%6Bf`*OCI`)Tts_i&ezm}Nz)IB1ZUoxSd!}R$*;bKCjU^Pl^Y|;uyXn$qLih= zb9SA-L-xr&2dNE?KFKVnXdT28YB*iJpDVW>gi*Rc{&W!T%9vC%Iz(-pg%`Pz_DG|a z785pc9*VL3ZLZ1O8d_|0Bzl^Wq7G#lN4P=Z;u9j|pmUTGwo+A)kiey{lxrUnw?jJz z4H9i=m303I!}cmUYmjIH;G!StLIUe@UzG;S(dSn|OUh%nmr(QoO9vrM@Yy(7CF zMb}!${Q~JKm7!!ioY*0am|ebO!z~D6(cm8+#jcnqq7+su3=GO(&e8A49}%7Hi7tdu z2&KbxFs7`Zi5Aqr@EhX(u;-TK+67$60#)M@sP|H5wQKEJ0VpR(ek3I(78fI4! zR>0MA(s$G_OPNRARW;}Oc#2?pEsl_v*d?mdaXo#S7eFjKx&AQG`@pZN#Mm-qpmd#} zgf!pt0+0<1ex*n@S-+q)WD_4v#_6}r(*4W4x4BYgwABR z^+ocXlkmeRkTbuhhRr-k(i}NK@a;Lx&443}n*Ke1DPFLs(`axWK>5@6)W~x9(ho}4 zDT>NgOw$i?ay~Pv+8WJZ?Yekn2sqqXULZPgb&Idn+pWH>8Z*sN7y_4A%l-|GgPvQ> zM0{GQ0f5`tt%BXt${_3ldvaJjwUXg!8}6aalqNtd4EN_xdG{_%?xt987u_> z4Nz^j$0wz4BO|-j_$bmBZs{7UY#`LF-2$BDbv3cHi`p`a8ak#M^$tc7v}`~ z@E!N-VMS#u;M=#5q*96HVY&JY4Ubo{^7kzTP%qp6Kyl*4MS0f`lo{cfNidm_R+;h* z^h^2K4^#_sc<2Y}hF9`gYHLrVnX;T3o@Leo5<*s7!mv8vFtv;==IMrY!c+PFve_Bq z!(Lf*m^!v~V^r?EW9_1&Z=bB3zXi?+Fu-<}l}2`q-2X`H$^^&C7QvcO+&?VuxP%2mp)@bi08yAL z&s;*8OJ&Msboc`@@fXZx&&af^l#I}uzhGhH8)_=+U!nGOr@mH-N!QmrtKr6Ct(78* z6om_LDj0*-0om^=HIz%Q(6}lD0A*DRHI)9p(g5cI3!NPFD?A~-l1qQ3x}FpBa{sS1 zf;Wk~{zjReqw{j&Z`2^F>O$jUSh1JnvH)L`pZ!L?BJxepmxWbyau^P;bee#D_mT#` zlSa;~Q<(A#CF$3&jCEe+bo$rwr9Yst@~2vX6@O52y%|=3YiN*LnFI!~rb`k1+_0*{ zu&nDKtEB^g2XBj`@NkUHAkV?=*3ONxUlA`{9O}6 z>mPX?H8JWNc@w!tzj0be)tTU39IKa?O!O0-2&XM~`HQ-AT2}gtC%kx7lPX&_@ZwHA zIWj=h#@g|X0I>k>9xX60x98{Wtc$MYVyEDPlbD+)$+J!|-{*=!xi?VM?PXg}hLLz# zWQt5aPIq-N+6;!2&Z4t}!}&`PPHd-|h&icH%SY`%^D3P;74h$08 zWUYrpOWb5A?+6wz(yEfOU@?%KCtgK=2}blN8)#2B$}oVh6^MqZ8(E746B zMvBL=Z5I|L_TcqR6c#FlGB{dv5xcI)e$k*|X~`SWLL*?G93$FBcy1Gi;|~u7xI$y8 z{3b?pd1%$5lxHah(ATD{AP$qki!#15G|0;C5YBIub>u6pCt%( zXyXOoxdhR?#V7e_qzng)Z!oh#R2=K80GPc1@O~8lp{4n2}vQC><$nXBc{y6ENwa#>yR07Aj_#7yoD=?z7s{IH&AU>QY2c*iTtrQ`M^ z(0`$xXaT!Mz50+Lg=`wFkXPz^@N|~XHvoMr#7`dv2a9b_bSw`I?>HvPzO=7CI*}l1{iaRdmj@uHusFq?CFan1Q#hh-bib-sx ziZNTMV#->f7;lnQtyPj!tyPlyGdM}f%nWgX>UpMtMroo)v_1Di^Db`#SEN3(WJO!? z3c2j0evq9kcRbI_&=D-gSmJa?dy&z_i;(#hivs}OnWpW=3b>I2>9gjaN$m9OP6~0Q z0~465qU0CtMf6S8F!}jlYT|097-3;(VUtjVTWV#@&0;B7`svN0L&Pj@3|Dh~t9r+| zT>6}nS{(#T-UTwgBY0OJ+jkUf7rwWnsBJa0n>VVwEp18nn;k`TeJ?RwXJ2CCkbxC~ z>QJ9|6xl(uRe3G+ttI_C37kj9c2K4&Z9}Fi?Qo{3-N}oO1xgjEB;Tr%FA3#=9#+*x zI_6LjJ1)02L~c6|4_(P>Mc~QIBtlfYoUesFH+LBUFBqb6&XqnRboP%uFI%uW zey#xTm(%)+47sY7u*j;T4|WlW&YTkpv)tPSJ%6h7>xy1FRkrMkDa%xOH$oBb+fyMf z@6vHA^{lQU9q~K6id*mszg4uwtH-S(J=&9cV;v8BH?hW^bgSqVoyWP2#x^@kRjBei znR|zbirXGyR7JC>TG7QPn1lxH2nX3xyIBJGy=kQQzBc zIm$L(iIx8v`9Ke7yQ%U&Jw$D9{8iEo$pk%>liG=8zX|7ZK9` zHW7goakq)u;y|t(ew&Czupfdrj56#t5!Ys_MNpcf0-j^t!q^H0ZsTnt-AfhbMu=iTT_dTdNJ#Xet@NVhDwmzK*we13Xv_q?)l(6a(^C;N zx2K2$c_lr4Fv9{5%n&gPbEK@%OE~Yl4n2Etfodb?dxf5>Br;v`>ZGnx28C4-7B-`( z8iZ*pwjgq3FHt|+(=jluLk86x-1zv$qRlFe=dOeJ@u==4=PG<4x`p99hs`pk+k*;I zz<)z^H>0}WMkOPAix@9=ttq4>6CHbd+dS&}Hb>=+3i*0(5ts0JHEJyt1O%$(KIsh= zG*zDHE$ZVH+(*6A`=AL9$liTa6FlBWC7Ec&z2C>DL3qDMR5f*EV0R|G7bK!)Uojf{ zN_l-T48rxLAB1xVEM*d5_QY+4v9bQ_>yDeiS)vFxTC9CzdT!W#ygX zZhs|Aa^9UHNe;bBw8Kwm$t8D*Iti)|!g7I)HDR2@4^W^V*UmE3U{`UMns5Atm&dQo znrW2Uy1e;72;mypbD&6Q>+R_?T-?*ylBO)z$658+eU9~~JvT`aDcn1npm)q0DC#uu z=mJ>duDO{ARNIl_*nS2ahIY|yN}HD}~Sl zuR7H!P+4$bohhgd3Ucoj$=UV*We-DMQY|gTb6HFO3u8f)#h*OzT1{i&o1)^p^|WRu zb}6_B5Ie#?ny|KKI6?a%Ba(3$;Yx?9Eh?qcOPb$}%!DoF}vISS|!DS=00?P3FMNIY_ z&SS?_2*jyb`wb8!;g@+-0ltX5!0Sp?Lz}hdZ^;3-L6lKBf$an?eF_Vr$V4W&@P6?` zLp3W7!Fk16x|+&!p6b;Ib%pD*WXlIcrx0toUc(iPMfuAQh;_Vpvwv}eZ6FCj?DU&5 z6h1}rtp~+eStr=CVRe59hL2-1+j{-mmh@+XL@69a@&}9iJ;pA1cCaY&Eoslg;u3Cu z*zyP_A2VK&7akEK>14^nkBSV!E(_DG;D5%4?1XQL#W{!bdLVW$`P64r&38W|ViT+uMyJ%&2Cd*5;SyZ&=&i3# ze-?5Ek2LGmk6%~ibI*!)(SKT#di-o7en$vO+vSd9I<`M6GHd>7Px!aj&4N;i);G$y z=R~78l|}s=&vn10Q*!@vq6S301frfNu(?ul;Xh&!_oncdMHBh*OR#5tD5t%IWwQc( z4nyt1mqp8V>KtlvFdunL#aB<4V%PR zisRv8I9?vk5sNGb_;~1E6=~TNrsj%n)(=+k4{kE2EGas|w!(|K;wDtJ!8n1RN0O_? ziQzaz>KZQ+dE+T_Jgjl2<OIx8qinhf41+0CH2YPS|M*rj=na=WQSYpb%yP7&q8e66I9DW22lJ^9&m zaA&goc{+?06J$LpMgTZf3IoM_B?W87m>J?t^o~U{#Aev|vu47y2t_gz6QH?r(M-|C zSFA$+E>@wIh1^%HLOu5d$kAsKDFC)$yb+YeUAR$iDTwv2KckI~9qh3V|*laGl>_2yxR7E2NUw{qD#=*C}i z@m!JK-AhDy0vCv6IGE?@S&`N(!Ig{{#QVeuzM8y{dmalk!4WO#E%B7+=V{pnSqWoN zu@{r-Ie?-Ush{JL~6G3_6x1S;>;SEO%p}uN_nDOif^UO8RpUE{LOSO z;WVBr2aUIWM94@t%J}Ws{DZmHLJlWb4=0#^U)t(~xh32_`oOw~!P6vMiZU;j&l8>7 zcv+=#DZVCRqBCDLFNWSMw-ftY7~BF-meqbp3E!#Pi$qI$t7JlvXhf_!SHCS{1uDPm z9q|MdT&o45S7(p=sHGoxu-bB-D^%*RyhwqPTOi~*pHd{`iq>(#;D*np=650< ztC5R2$jT~Fu3s!(tMe7}5c}X$TAAG0RmoPF_bwAZ(-hffIfSP`j$h8Bf_!&5j4cHv zpDh>J0&}x&#rWNCpD8wWoD+h1ioKoG9DB+tF){r3Odd5F857ypMgOfN?R}9;BL6E{ zyjmnHC4G8}2;=VEqDs%>6*zT4fX|F19vLT&o0X$6C>_^*ojuuns3u_+nW;3gqJR z1IA8|FOD@0;kl^M)F@SR(sJ3bMEo9UPxatd&$=NJdKx~nt=EYcBW*I_>YC`_Qz(%} z(PX)8ok$E`$>kZ2km*A12@N2 z13xF1D=&U1K4C_CcGEAf7aM&Uf8`^LzHiCI4dNEIMLe=WT;cbHEg~u)M^kN~zRLrv zzAFQ&zRRrk;xysg{TL2%Lqaa`@709|X^mv`M$FAYK*2_Fr@ZSE@v{7Oqj*m4{{&|} z{@5h?`x3LJRJ?ax_+FV*T9wGDHgH`+=4=)VIA#0IqOW}WQ~b!gCs6R9(EZzZ2#n*( zgl@%Nqo-08!V?$eDpJHNg5y{dux|r)sR?qZj*q}QU$|~0Ekn18?oR9G*tznft)f9g z?wp$8hhr^;X6m!mDfu9qXyAO-TN%5*;YWD5NDh?IY%hl9AtNomdVru(7#LMxC8KaD3B`;h_-PTxl^uVgMW zntT=nI4Z=~Y8vEbhG0fWD|DA!us`D;TK-xF% z!78~xp4x-n`L3*ACMxg>*o%e3ewndXcy82j^1>0a?^Nqc>+UbLtGH>4kq1fd;k{vdwGZEVmmd_a9&!EeqEA&|3%i@msFL{hg1|PYJ9ctpZg>8sf3~ab8 z>IX`t9*YED(NNob@R_#)AP=N(lJEW^TK?N$d*v6g5UxgZuL#q-ZiZU~S{Qp$=q$Hf z75&+}Yuc|~_6P%8MQlCU!p>VI$A5)cPX>l+bJ_D{aj5o??GO_wYlmq)Iq+nd=4N-8 ziD6pXlIDLvz@U*~8XQI9-CTM6FVV-jWg^$6bXtZsh7L@7PwScZmECorbTI3~iA{b) z8p{e*LK#U~N9?WLLE5w3m%PESl}i1?SILD7;uJ*r!SbAuZ-0g(6K)yc-?pxvT*L7} zJGrbSwAZlioGY~EovWwf<8alHk}HS}%+|=nV;^73%Kh#+brmrC^6Hwl2!@LiO&bSy zopyfOvyj~P{j|Ff3i1cTFaucPueFP^oxDIfbDkBS8wV_}_-kVc_Sd0K?FDDWB&*&( zIfAVgmW1G!i}%nZofdSzrbYboj@(M!&K%O|1b#dQOXcqzyf=H$3`x=>djF+ zl{WwU4VSS-HHYG#tPIjRVKI^(tR=TT_okwPr4c=e&5_Aii18rJ>#;IL<1!l$+bLb_ zf`QYC!P?W#BP#C)(l10?8GA?xY&3+K=Z@+a6TAC=D0hZv9pG^l6siruD?Ln0l5d7; zF}7?q^uW%CYO%g@7GXtXTqkawxQp%%)0#haj2-q29#`PQe~ts5Dm84Z_}SzwWrHMGY?dExYMt$Fq#6~Pt`_!(EI=9tWi(aobxN;^jc zGJEb?5k>^et3GLN?R@Rvm$BOApCv=DUEgkHKEn+~10wC1x zEl&_WoBYdY&@}vWXez|NY@Mg>dvP)#%b3UkUD2mcmp_DSEybM4(xqz|PKzuFZ&hs& z>^S&Al@$C!wLGJvjvo5eT`@lNdyzYgCBB%g`l|({I^vcLMn|Fo>l7^kUVc>JGd8Ly zHd=tpEee@+vk89cA~b~8K#;UZqhgON)ipRL*3{>=K}5Ns`R^HnWvWY+1$$c`h?d>^XbdU@~sa= zvtSCf3?hmPf{^Ejg>*K2j^Qs5OsbI*dc|@#SOC2Fc=9MHSY5}C*IcCV{G0h$x zJ!JUUF=IyzA0jIoXszXkeY6-^>C&9pV22;+jv;vegug_e@D+TAUl(qGaACUccogrY zb6`AHYcfqJ6@B&{&ZOH~W`LRA5q94{1V$?syXK z>G+HK=R5~pS|ZmuAIZ7SKjM$;>l1Vdg=7uCoX54FFu{f2iZ5Q`cRN|uON(ke?8)J-n>)CM4Sw!Ipze4a5w-B= zkG~t^uBmW83gk#K$e$_PQdhgle^{{Y7+!L%u69P;Q2y?!@4=sjjOe%yPq;3=xj9r= z4sEF2m+gsK2ryUG6K1;OeZnX49pMu`dtLa_bzyXsYDGsP%ta6CGx*78hIAP`cF2Gy zhYfMb2UE0|ztWM7T0ak0=kW1auM?Ch}m?2}EJ@({tLzq|Rz#VRgZTRbf zzrW`K@;>t8R4uIjqqw#r3uy+RCm48p!Ve(a7va6S?s%%CGFAJ=?}jw?Y5wH!u|q}= zA3SsnN>-_n>tXz{5PQNy@Xa!5VY|DT_7TNhtED@V0Q)<2P$1pqh~`>|e?2J8M`ccP ztu9=_7c|$J(K@-mxposangUyBjoa3a)E#c%7&&^#u)$-W9zDc0WcZ`55s$f^96s{t zu?|Of#Ix*=9Xz_#I+jiIpOY)W=*<(odJ{pkam9ub{ z@xxy#{%%-<4EgX)TJ8SnQM%#=hImIa{CUDR+u^=Fx}ZA@eQd<&VMAEudE$rRJC4)b zNHb+f(Nc?J67~cAVCib9B}H|Q)-A=+P=IWca7w8EwvJAEYn+Q8A1JG ztXhwhBU@?hYfeW{N7_Yrvm*IeZfK>|?dkzn*wK}E2XVChcJ$#)4oC0qx&yM}Xo9~` z{4rCw({b_5WWCmCtb63$t+m57Pl7-eg8PAn`_)O=B}2Os-4rwxK}NkoE<=#Y zN-EkwX5xct|9{0@ZA@F&8NTL~vowL~l7czVCU@xdsVUxgE`WQ1beUQSu!7OGK56+RFUkoFw{C za?*PUC0q9wD6#Wc?=ctMy-Vs{K|3!B?XSD24F6wa!$ozw)Y4Smzrdp&U6*V`QQXhYETLx=lh>jd@5%927v3uxi+e>)rxCvRBSsWuD2n|zFGCszEZ79HM5*Aa$29A3Tv^c$%wf% z5fJU7)k_C=hoQpfN@!tuJ|5MKg@x#X_?4GRiq1n)0?C$9e^h+sC5Qb@=uBKKY$vi6 z9ER>xdZM^Ksg!i7$|+If!=mmLejmAujzD8R8k>qwMI##O^0|(R^FG=Gqp$g>v6gqI z9*QsOv!k;{Wb+gIqBplWMP&z`xL)`>sLtjRXF6yy&y7LYW4!r}iElcn<<9$1?bT-& zjc#0wPDJN84^|%$4|Gz*wj{1~QqOJ41FFJmNm1yh!?nqJRbk(aV^6W~B)^P>^Vuc& zOOlHfKY4e^<{KpP`>C)v6kUwO@k`R0Oow%Qdcf5#YC-;N?V`GT*{uX&z(JQ3XS?XP zkXCn-+aaZTy6Y{xf~#IB^72RMQrdt)_`^161eySuDvLx-50zImqiHa>mPccISFYI3nVK<jCP_ ztmSu*@xdU+`h6C^n8hClcUtsUv-lI>d`QXheuFyaKFQCc4znaO4bPy#+Tj9tEnq%O zyP=11y|+Hh>yTNE^#|}BfSlm1EdDk)9}ZIf4(fH7KQ%#cL65}db?XFwf&wol)I_oC!{hpLJDvv>j{hk|u= zKJX5p6R_q!zqm3$<*u*Ys!|G3NT1h3Q}JbumpL&TeGqLW$5Qt-UnFcSY0;6At^mWFV*l|h4 z&=rzQ_Y0_VWXU6aOjHk3@on;|xhMj|R4x+3bl2u^HDmhYVJa+muK||;j1o?}Jhw$v z`o;DU8gjHZrtD(;B=uaIw+5oV&wdeVlj8aa%^1@8oVE4=Kgjve`+xeghP+_?WcO$9 zc8W`<$enj{{HP=376(UZcTP>S@Ql)_g0s!45`elLi_b$@dB3WRiM3I3-ohHSV^m~M zX$8h8>Ua$u*u2-%<(5x>r}%1&Y70!GLH7Vq4y26e)X80M-S=jYK`iq?59-`@1vYO* z$?JUp;JQ~_(&^W>?RZ=`{(BZ@lG?y_=uVZ>=I@hH63OFBNl~tL`aO%?Q z(lU4No>(XvHc}@gMmJL-FJWdX66PtTfls17XT)Oqq`^Cl(`JLI+y~MLWe?w`QRmZR zJHUhW11*dAc5cqRYnw7T$$&UJL3?fMS1(P_-*Xa*53fEzAy5T40WUBBOarHZ1n>xO z4tN%L0eA&?7gz^A1O5xxJ798PA8-h80WCl`FaXR0E5I*-bHFnl>QUu+R9*$%2mT8D z1Na)Sb*f4(kPmE*8FTk9Pm|BF;!mA^!-x;|(JgcfW@yU8M&-jE z1a;0R81kkp&!_R2xHLoW{MdGD`9XH$n*@Vnp35^homYX2z?xGWnWHl8xmH!V47?1y O0lWwN5%>uB8}L1DkIJzC diff --git a/wasm_for_tests/tx_infinite_host_gas.wasm b/wasm_for_tests/tx_infinite_host_gas.wasm index 68592266d1e374434dfe61641728b171f1e45609..4bdd870571bd06217a1b2548b9ce74083b8a0615 100755 GIT binary patch delta 43048 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 diff --git a/wasm_for_tests/tx_invalid_data.wasm b/wasm_for_tests/tx_invalid_data.wasm index 5dd857ae73cfc898c9d908a501e347a086833cf0..df2353e0ce58d5b2205817006c7f5c3b80bcf48c 100755 GIT binary patch delta 46371 zcmeFad3;XC7eD^Y+$VXma)jl)ca9v#!fnG26htVRx6YZ`oW{!gjOI?C;p8+rQ>& z;P^@&;J4YHn%1dvhmO10;L*)nju@HpXr^GZ*#h>ty@0J|YuGmSJ^POR#U}8Hd^^kH zU$L**4z|WViSJ}Z{G(3%2UgC?`5wNT|G?MTS17aXGua3BLi<|#hxY&2H`%|mm)f`5 zzp!tym)XC!@38N*`&AY;IG|s(zj}L7(N?!DmHRktPDS&{&^9i|yEeh?cH7k5S@_kE zki>mbxy%{B{E^QrWOph~uJM<&q5}OBuQ;|_-{-X})=j1S{iAKXm($iK(B@>C-D%T~ z+n!d}=%wDjBp;ZB3;}k3MEYc?#+zciC2<>K12Pb**Cy(_9Iil}a#L!H40Vfs&5;;6 zgJKX7O4$%b%Iq^H>0N!|JAYv&wlEXh$iz}Jwv!p#O~!6DW4GBd)DnH3PrIn)W{jJg z8MEYr`i}mSPejx^W@?_5y3k4u@{MR}p*5G8W%J~NYQ(MGWhVlJh&E)@-snPySdn$7=eFmq%k5F!w*8vn8J z+`!7oova5x3wTaj4_=K>EA!33Z#BzM=TKoMPv$#(U5xjt|3|GX^Nm+D-WM(4TAp_X zc*-b`2knr}z|e(OIawNC=#5ZG_`b{MdXmbe`m>bul*f2Wrf??q%-=v9BTz&;CvR!Xb7=P435}Mv`3{$2wl~ia&(i;9lhW;X2P#gM?vuUB z1!47&iDftyRTyw2eSDGMcL>2rR?2-{2(`3))aaw-S&V`DKmcl`tWV29vO~=yAQWv8 zVXppRgM>_!tt|=iIW(3L??~mKsh5_SAv*^6B=NnzE(sNtdIxYBg?^J!Wo8shcLIHf zldW<|N}ytcoK*gwDV+&YJJzN2* zVU{2%8QOVEia=tgEzNcYSR_GS`vg)};_fhQqq`I`9;_}P#0~b4Gz1`{G3X{#qm=n- z6?ru9G&hSD$bvQQ(oBp)3#l~vfori~6m18y6pW;0sDYqLwZCQbx0{g|NgRAK;z4r= zn!3oqA>D_nLlkf@@~DfA6w0qIp=S<}F#j@pd9oIO@f0;a>gaDDQx|ZS|ET}IervHrv#VajHzKlAdLbL+@w989@zUUKZ=_*HUN&P~QAu!O{ zH@7+8A%(&T(J64GLu)#Dx^J424|xKyNZ?6kh|TI1g(d}0K?T~aMiJ`y=yMH?qcp8R z@)^kiH82KDYKtaNU?-OXmFS)BV<@Kry&$+F%h!(tH*bb?%r+S0{(VU+C_JjhCtm3j z2>qfsfsBCOo76OfjY& z#tc#7M4Yso06=G=Racq8mlv7Q${HrMG|7nDM_oY~DI3W=P^9suPoUl3V0qv$7hOHn z5bQLbgBR*V$-_C`CiiG|RgR~?h~m6JJo6oD);r$Y8Z3ZLN5C`sBUdjDZ3P9}Kv5Vc z`AXu2AXySGa;OstDN~IS9g{#=b+U}4fiOuDS4PU5{^>Rs#bW?BClyZC&|fQTg9RvEyQWYaXI+jBLSIP7pys zJVMWH>8&eKcR6yY-Rfuh@Tku0D}7GXdiINcTXYJ3pNnp*Y?``N?-1WJ?1YIi(I(8m zT>Yx}N^}?2$e2NK2s$BGVGPV#1%%T}J*nRnJAhT{3u3#(RTBtwQyoeplU60^z9~z; z7~7Mb(mOP2!K9tRy6lu^{ zHQqw%y%_`GIm+jv4mZdxD~0sy@5H47Y-yav&gth)HRvjgL~f9mbyd;K%v^z8Uo+0Ho$6WDM1 z#DrN5f3E|dsTXx;lL?K!Fyb)T@s^?{Cr-{8#cQQd4@J?=^2BFwVh1esn2fqB;Phue|H=nztRUKzL8)~ zkGbqm&=Z5{CTmR7%9-Y)UeeDdx`0K4q#*{#UjGGdn*{esQg?P)znGMa-^R%cQRMUF z7Xpn6v{J4)0jf*NRK$Ool7ioJDIM{f(0o^r)i{+jNF;E_I8Vi@s$X^TFrRK(n`MC;C$E7=wOo0cwiRX^3T7yo0T{za#7eRHe+dQPh- z^R;+$s}_v?sh@7Wf&Vp8&u=q3?ix`gz?U>UWPBs$7MdIMQ?!jdL%lvxAKdm%j$mQi zhj?+0{%6~k{KiB*x!q`Bozrd_`?ENreHX^Q(C_XrlwX{vyW5BAU)=7cZ|#uCcIu}( zi~zaj+!>{h?r3!YAVVO+jC#-ki#vW~b}Ul-WX+gamFkbCPUe44)K90*Im9skkYIDB$#31xORRHES}NvY{l!s)ihU5p|G9q2WwRf)sw&Efu)&?&%QY zKHa;tt}n(7u^wzdi@*YJQ;ZG7BotYGUH3SK^?UaOHdX(vdpzh6)}tlp*1N~IEL#uk z*&Dw@dbY!FR?jBv9es7rL44XIbZ1LFu~&%k7^UCaE0Is9*eG4}Dq=bM9ooYHwNmSg z-*Z|FE6{z@N8ou(dMgeCKwi45fn20h^Qtfg&(yz3Z{wJ5&{dz%D_jrl-IvYMAMBk4 zXjQ!lT94ae*ed;j+X&95xAh=6f85rL0#~07ELR`ar)hw(h7WS8Sk3EG`#grMXOUQ` zyZXlASL+*!-(h`cgqxzRXqYSlhpU)THwQWY=$noV-EMCaINRtX6T8=MpU1u^R_|~! zD3!MT5|Qctelcv0{&K&rcwXPHOPI8OV7>!r5Ex8H6pdKC7dxSAcZRU9itoL1H0L{O zMZwWAP(L~#t@(j0^fRse^08`W2uTh~ZK@&oidHR|ABkXoZ6HxJdteLvemrnerl%Q2 zm`S1}&(Jzr3Qx8Qkw~f=S&CuTXs{=zeU-~;7>uZD8&&Q>iU9uuQiQ9bc_9^8ZMuuF zQU*08-IFqCD8}8)LG2Lr(V*l`9u$otRD)BUYf`rqU>enVH&hI@^<6z=@L2Y)o;kR8 z$UMre{msTnX{$z^^YkAFC-RGD^c#a~zr(M!O3}1c+BQ1R3);MV+sIF*GXRJ=r>Mr$5=ojt_0g=Ig=twhmiB(eX~K7fE+$ zcFoPy1^TdiTeF4wlzYGRzE9EC-GJ`clhdINvYck(7 z{ki*68(c>bt%X)_gNmNgi|^~;Egu)@=kAMQi*?8FxI_bkFicvVp&EP172^zZ#^O{ax_e;(>md6$ZD5l1U&GOy^%$V6vz^a+2N><|&j_tukk$wZitlls$Vrg&JWN)^y9A<0@pLn8zazr=vw(A?;rhtkm8=?}%?x8R|H_`Uqlz4#sQZ~|MZ zKmYKGD3c5godH^z?dc3>LuVj8s18qtx3?=C^8>B?GDxbm(cD*vw5N=I(YDb_O>=6wbz?DsVHqw$ z*V0z1tTzB=Xite!g6DygPvx~Ft$kTtK-$8q6rHGTqtKH%=MRdF(h4Y4PZjrj#Lj^J zU86JcyK6KFdE-a7@+!Cf)1$rkiivu{V~LoL^?xi4bDv3%jl=Jy$3|i9GVJkB8JnT2 zPeyxV>8q&k>#d%Qh%kBu#>192W6}i?4#1@Ap(mSSe4O~?<9x#<{nV2)8=I-jX;)Vh zJ>p>nz|<9^H)1OFcgOUOt)}UA8jQp|9XYUHk;Y*k(QL^ICjJ-4^kN(Jj!&fm;isQ^ zjD4!_erh^?AI^yGTR{b3>-Tk%we~G(AODP)RQ;TOqluQ1zy!-v3zqi;*{D;in5J*e zNML7+f6C}b1Zw{D;NVSEn$|G##}3AZUAiWe~uf%KF|leK);LeTd3E(@B~|{yWULFGhYm* zr-_a94_{1W>-4zSng=BDeCA{@d@{9u#9WFP{91E8^QC_5Ls@?CD*^iTm%><)eCzsh z9G?DmH`A+L3Bl95FV983fp0a_2fyOFWu7PX2Vd>L*6X>i-o-xBkG|TI6$6hp_#OP( zOJ+UiUQ1*r^>J@Tu?>1#cZz=h>p^%L_*RmOsAyMDl6C`a@@Z|9#1~q0a;h8j4X-aU zp}g@%T#S`7n=D8(&%H|(3m z@4VHBv5)mtZ?~3(V)a4eef4W^cVV9(Yb4$@Jk1_IfUVY#j4zC~RGB7g*RUmH^e6Uv zh-%w2`qlO72ENh(NaxKv(9M9$CFPiMtPUM0hbHR2d;k_@Tuo*E7oET59e zzSEawb-YD+4x>qf$>B*W4dKRg1ItdL4dysz9QJgKjv_vnU<(PX<2ynqz)N49)%st6 z-!VJ@rjA_Oa||Zh=qZn~7B} z*#P}biUiBycb*HmVe&I^H@29t7%k9Oyff1K&r*}9W1?nmSuUC83^w-wF$_}PNLoego)(*FZdNAo78Kn^HMc2~cqe-ArqhSPSzC@te6Ebi^TcR!6VgC5i9bFx9+vwgK3p|- zB$N1H?B4yyfStrg8Oe{S=C))Ke+bE6S;uu z?{Hfy8}H@hn4;E>a>M|}I7XI3=#o@S{!k_rrpPFSgqba#e(1@r7V2knVjRUZ@cAzg zM+116C>^eN>&Y|JOxmqN1x(Al6LWb~0$3W1tTZ4PwpM9uW`?nuP$5&Zowiu8w`pvD zqhdS83c2xx>SZKJ9qnz>4hU&G&yHz-#*95nOh(4W>j!59hY+X8LNtb;pD~2Ynb~(l zS%Hkl_JlR21mH0MOk&IrI|C9Sgz11Ws7tIQCCEnNRQknO(=T8EYYga1>vy|fFI}xqdU;ix90@v`7>i#Ve#gfao%iQ@!`4Aj1?7MefKJJY$yd0 zAVyb2W@1?(J)fplpd2WTIfuViQ8)Hm#uO2hf|jk%dya;&`EQ%{C`~erzGi+x{fGne zx3ePg_Z+2n@yYjsSZ$&=CQ|l=DXh4-^}?nKw#4;eOYX(cQMe=uqyN`Sj$<7BAb&Js z8Z4!0b@Qdo{R|#EP2`=O%tG`Rm!@If^uf{|;WEV~cmCuGAr>UN_@Vyy()Q5d?caBW zFQQKM4+2}YwZSO_-9<6Fx-72Y7PG}@0mjcS^d8Ha#N-=1UYSSv;$nv)tLNnGMVXE}{Kl1c3aB0fV{?)f)q#9=H6S zCi2n6DSt~_Im7<=1lCV3ecepU&7w-S=<}9eVh8k`6)j--_;f|8E8nP`aCbUL7V%?u zhG215WS~;4uACYXHFq)<|H5pdHzd)B*`gP1j&tOj!1rx#j5X<{%?bZNj2JzA%d4pR zvn@_@atP(@Ql(~)YP$IR7GH4E6sqVONsMjsd8-~<>g0Q;=xlkM{%~m}zc@wjytSj_ zxJ=!mzr6J^fUVrxoMq|WUv^}3^=@BAIhGq`iy!*(_R$M+NJ{0GmIDPBc z5R}}tKeD@(?l#lwmMN-R#)MsE#`zE&(e_nV3nKR)K$QLih?=?}^vrY3fXb4JSp06P zh{5mCbM$=e+!*|hI6%*D9-#QeztZ#Pziz-#!)|09KfJYFZ>*0_9pg2kb<1`a$7wtbIaZYCg=)+ zAbVZcj-xBYxk*G$;g`jTl1q;hZMPhM+}FZBUw54dMV$5vr9b=&Xe|E9f}`0FV)0~I z^z+Fq#?Q)LWz%P$ByM}|#4!(yHu|{Z6!+{&^pj{Xm8vSi4#DTVc+}~=3@QJQ!~bUv zFKP59Ypm!UE>?hUftRSiQZChYKq=FIsvu%NdTAhj*UJpMF2z{vNF116_UEM?ADupR z`FES-CFSzV$ol%_*rrxDVx=H6PA;0d(>>wx!uEA|vr1ooo;c$B%kSYg<4R1dRm%Af zh4iIY(A&kEugv9aWAWX8t_)&TB6bWL1XF}tJU@nY(*UJKAnOxkuC~C`hSQf*Jl23cft^&bqXBzRbPZyUvXf#- z5VpfF=8%|Ii*JJ1EtqX)r^Un&rtyu- z#aAILjeR7php^`nxM zVQc_9FCGYEiL6FU3`1n0*crx}cfUZO$hU%FqxCoQg|r)t{HHOiVSkDZaV#Fe z{y5gowJjfDh;yVFhU`|Rk(MUUn9vrMq&P9pcU(2urCU6Eut}VaV?u*TNds<^6H2Xm zCcprXVrsYlT$;wU?ZYFY;lL~BJDipWn1rKsaw6`YAl5&igu!~Gck%CU0vWx#?So*c1uU)SIHbPN#b&$(yrNano1BGd-miF)nWjkp6)J;d z4SgcrEG!6_CedGRuEeYeg79f?v@b2ris;ycxzhiXwMv6G%|z{5rwj~{h@N2WFj>$$HNR1?i!YSfL6G*{S z0h@F*TJ%O!)`n$^51O+1ZOo<&C&ik^A43t7)kfj50+L$4Eji+)X6zZFN;88hiL6;I zyE20u%z~k!XNVkPKq5;E`@p~|#HPJROF^xZ@hYL(oW5xsh_?mTC;UjBZ%2uxu^S&kT;!kY23d16`$YaW?nP>U?=mLVM026cwm znZn{6?@%hF`}Y*q&yhvas!kKVo3pW0zNk4%PQ19#Qx{fcT$`mi*o&698*i11c?;2kH6kr83rUArvryKuTYwgWTe5)Ag||pf z3Eg&!l*XxWj@c{C`bk>Ra%!Zxmr#r8UgFz-Xip;%*NPQFSM6xUj)=_x+&7$7Kun!O z%%FBj?U*hn@{yx$IdKTjy_SrLK_?O9((=?ZH4G{HKsj)TkTMGHikNSMHgC|Z?F zH$5$}S8LOXj1tsTn}0{cN`Zx=EuL#hB&;0!Bs*3T)GcC42R5RGdldol)27J~3W|gv zmtNF7f&wK5{(!0u)$)bfkvZ9F(Y7N?Y*i!+1Zvmz5CHhM(ORLjUO^aPWWn-PrJ{V6 z5-Q&7$o%;7-C|`&7RP^FCBC8X*eX%ok-f%NiAPddKmOesQJ9M8?Q6u&RMtDB>^(AG zSXzQPZR%GdA&rgZ3)e!fnu)b(I9+jLjcDJAxhNdgiH)SNq!UY~@K`676fX4yl#-%h zj~Nz`M5i6=5#j924zMMn8+^A!L>Jb?c)lOOye=5_mWZsb>Wkakvsk)7h8vOJYK?d|ou#tnVn;gWjRn-x z;0`b9!)5b9aE+@4qDya(v}{eu!@XGu$8v96A2tgC>&rU(E+?=wUW?v+SrcOLr~0zD zsP|6xWeL=K0k^ZUK1S_3*NDv9S#Q2;jo5a(toE5p16ZeYq*N4cRH|%>`?1G(`5MvhPAH>_Z%fA9$zEZ6TdAn(&xSPKMkXtowYlut zelM4U_X1x!$;{%Vm6eJ?12CAB3ikjufR}9*y9TgyHcbQ#WZ{w1NX^r1sEaKS78$0g zuV@X&Y12ecq$1O>fvl;vj=*=dfsc^EZe*w}2L~GsJ{Q;#ETVigjgTWOyqPh>GoWo6 z$Ogn+`~t}y_c||Ns%23LGfHUvS*YlG7hBc4d;_9sBmZLxw=wPPC-m^8qOK>J!5xmK zAxvBM8AT^)H)ObkYl}8h#D`p6FPaWw&c1b;hn--Qz*L8tSBrgA-B#B|N6P3>lNi$n z{eMy+=AWn#ngO-qp+d=pL6{^*l~Ut8=BEIZGh()grbF0hSO&9)uo8Z4z0mGvF@^}^ zq=qy*GsvUXucZUuIa5&_>*tEfCl zvdteGpP3qX9qeL`4$Do6koqfIY#+wr0QK}RHi#9Kbh(eI9`mReGMqI{EL?}GXf(ol z&@v=Lj8eJkqytl0_TPlcD&gwJy7`}0}C{% zi4Cc$k_!*BwbV;X9$}HDK>(nTg(&Tn9x^^&l3VP4goSuI%xY=fR-pk@q;Bm*bY!`i zzC7B!eh z+Wa?g%rRZ3S!7QVLYyfWX!u5%LJ94mj3vPx8}B90xH-Kt;_=!qkT#8=4B*2Qk5fWU zhd%hdh)k${6tvUc6;2k(br`mcVzB_DeW_F)N-Hy1JjiPrd#F^9(=K4C9E)hD2}?!V zC~?uMix5PBa@L_aCBubvwkH4gkBPU-Q%y=QXjZBC+mV+C(&?-d;^67Rq%#IVL<)2c zG>{#!Lw4;KSUXdbuac1BDw)Gim6)(9W;axidO<{RM0Gd(WRDpK;ByZ`u7v- zcd|&aHiP+wF5eBkW6jQLz9A*_q1c|mk{jf%gnp7o8Ex9xkHnV9`D3k^h*Ld>Y;W#W++ScGq|`CcIIdKTpS)QrZ4 zfGoM006Ez=65fCYX6)`V!qG=gq(Gh^G}&#ViD#gh;egBljg6UBy$k_nhC^i{>^aOC zPnC&O3a^%l`w+6p;??JXhW@Px>c}EQ(R0j)Efk+3jx7_F6nrH9q8wkCIXXPgn(#y4 ziV@>jB37MK#lZbCU<=q$=7a?ELU<3eH(+WwEV~txi7Qu2ElmM3ds2f zbJRk;Y(^7T;Z75=TMWK=;>64BUYJ_{pOO6k%19okI0|+VhwLlqJ)X5vG7lKaQFD?n zjFS%5Sur#KF&YSKV=!c3YX)u)m1ZfK2Rr5m&G#x#4hxDKP&h&7o=o|*QTs&A1Qrps z&n!;!7E~aCAeXvNI481Y?2yy>Hr7@cphI#@Lz8WC6=ncb~W-N zk4+`^nEYA=OpY`P8+C$vf@ZO>+YR27DU!9UQmD*>BPuXq84xMWXd*562*pF2U?f;lW3L~WvDd301v)v=mAEH>&aCA`9_3POPmZF2g68-cj0vj@X}`scK# z=EBBbDW=Y49eY_KN#sXwSRzL4`)|@)LWfi>`+L$4KbC+WQduhl3y!*_Xu{3Oj6qi* z&U_;)l*De-Ja(g>CHpkZ=Nc9dTA879B-V(5!&f!M7^!AA8)tK6PKw9Tor7YPU@wJR ztcsmlT5`fcSCX}D9t-OssZKPP8@cF`c!$v`fNn%1vxJ$Zz><448}Tk5-V4(@AFV=U z<*};n`4nknF2`bD&4~9W7ES#WJFJVu?cURoKl#Oig=M;>MXd-pb zHn;dJl;_Nck zAKQhUmNRUpignB7?)Z1hSxh5i?dwb9i4%*T^wmdqtzNn4+!n0X;8vlmV0W7v=)Pbr z;abH)JVj_dLq*(|%iqbZ+EpyqI%3ue+Cvu~tYB|=N>ed`Nu_=o(1SFs4}){j}m_HY#FwuZ%YsHOvJd>(@xq>@tEg0EtM)2Qn@B0~XuGs(>W%mNh`w{-KIY z1I$u@0njZ*aPR}FqU6d4U^w(pgLSM;&^g(!3hqw;SKt8I0WoMDi;4KvjIJQ)S_k7t zJufD#W8wFoHxsjDVj)SpUvZo&_#S_@C!(mHvO0_v(oEVQMCQgxkVWW5O#QVEn8Qp6&{>QgKiN(U4Z zZ~u4FMkGZb3EddtMS^@@Y%O9To;tJTflyDMcsdsaRVTXNptAa# z+0_ORBc8h2VhhBpzl%ZZS(xRs4K>!qwioMvjc_*DZ~S@|-PB?~;EP1GRlQh`w-B%X zCN{5UU6ZY>K-$=vq-yHt?jTQA3fD)>#VSjBf5h5yc1gU9(*{wd-voAayVzPli_r$8 zfycTHEK>bL)=KIPS{$b{#l8(J%@b><5g)N7jXq{u{jgVi^b7W>deu|LNEHR8>;}71 zvT7?!V$RDlmCP0DC3=MRlv;vfAOcs!`7c=p`=jK6|FE}NSbjMMDh&%{T3hDIm%?&! zb{l)7=_dJRE;~!Yw81S1dWu zK$-ARZ%il&`x@RT7!UfFvDSfSsSNBgsQ+xam|Di#x4tU(7GR5)AuKC|`ZWnVM_MXi z2ci6P=>-eZQ)SG}H|-WG3Rmm^_;KAx= z<;yiA$pD}Ig9I#Co;FQ@RsE=CEy=(m>6JJQd0fU53*%q-*y(Tmu@+}4R9J6L$;L}}Xa({k#X zI3!1y`--$LCabYJFIVOa&=$(jArUY;Z<&mu3qC;H`khAy73$zxXja!lW-X#OledkV ze zJDC^mKiDTu@4{|X-ag^`Jrk@#Ed3sPN)=+`_bfSV>O?oB#2aV->@SfWlDvVl#pUl= zmk`7E*9Ry6{I!jsdAwR7dY7|Kp{DBb(?-ypKuMHRDQ1NI-8ZEo7${lHX<(P}8PHrcg`D-_#a%c*yw?w`-uS=;p2C@+VT#N)eJ zT&8tYuii;L>M7`>_@_+=XaBY~-V6AVAGG#wCG6Ib)c>`F7g`UJ`24^gVKYR=59}TD zTp3Ql2WpiVcgU!g`C>+VLqexQsCzKKsT3{tut-=v`|M#U=%42)$QBFsuq4$yqv`MT z1Hu8=li#z4bq=g)7EM_|C3CK~T$?HX>XBm$;r)f9pzBlofo0N(#c));V8eq^02 ze5gm_pQhykdKe6Dc4p>}tX&t2HE_5OxrjXi)NI+0zTgRm#GEFJ(O@6=a2X7QU$p1U zkF0y9fgO}J(!dQU0mn8Bh-O<9Y`5CUh7GhOR3F?`1n%%e)MXHNg=~qjU#8{Ko7PU- zRxft1j7`$68L{DJW{X2|4j9DPypQ#OP5IhB_Gm-vXsCJ6Q#`w$;obo;dp~m{2(Dna z_nRScb9n6AxS{6%;+ScY^nuW-?CKoxeg$h1W}e4{8Z-7M{3l}traw{|B7Uua*VGKr z?Esq}Gn*=n_acjb5e<~sBB1*gKq_6-9Kg2m9MQfK{)iRAUCH`~85ET}8q}M}NfKFA z$(lJ1?W0z25rGHsa@Kt5a*(A2<;jM5q3aB(7vklEY=9@4_QUCbi4Z>=WIa(+@F5tb zr-?3ySPM2=Jb8%WRuHj>-sX$#hnPz>_(dY?10TTm#9xP46c{+{FiY%w&8XVw6EKvw zR1h1WAnZ=>v0wwz6%JER(Dhdsk?ir_Xz$C184ekX`G?skxJ3MUm^DYx>wvc*M zo5{37gU=;!G42O8P?Q~!=-oI1xw=`r1|6*{UMr5)ikBbBC63BZ6Niu9QoN!B_A#UW zOU9n6V*M76Vl{0z!Z5nF#|t%7o>yU43lp>>{*I(^=8tbM18#>Y{U)_q{wuJinOR?KthfMvOWG2bed9D^10wGps$lENadGwRIxk zEWAETMaEfnpocpPjZwd(E(XWIyAS)^IN(dp{g{xJ%6PCVj&y6rc`Q8`ljMXj$Qa?T9;7lKiYLy)-(-Whd>$Srm7;r% z46baX!Si)%8c<9`-DU&{6Lk8Ef=KL zue`t}1LUaRm=mxj{KlFgDEN(i7O+V6IUJzunwQXiXD+r#;b_WS?Dx#cq*Ey$Fq8Dek?<`oI@#!9~`nTW&2(+zyIDv_@|Lh3=zD zaJcVL%aOx!M{QfZVY&22aS?$2rPjMIv3pS6%1f-JdCD3CtgpuD%0^suiG5IYo;Y&} zQ#}kumtpjsC7NA^Pvd^^@@3Yq$;YxeIPo7Eh|@GbQ!kjjj1dImlgkUmk6ngLREqd3 z(A2X;pDU~rS~mWQtoVm3aH9HHT)6_tm?y%nLUH7Z&R5w>eiAfPclL2na+Pi2A50Ye z!<81{8z;hA<*9`fp|^^(8R1H@`UyOL(Ir|F5@ee?S9~3=^b~FXWPSO@Kg7TYr5Aje zXGSQI;)g%syL>=w{R@Vp6C&*z>)hg(32t0F2UY|HusDO}mX;^;<`7ylAR0?EX?R+A zjkWd|&XAW3X9uo9OMNQr*IABZ$4R2aRw1rKE0&%VTd%WW*vyN(!5(0rh!=0b^1WPK zxxvOGc;#<6%vTDWuDO?Oc()B-*1cHvIIg!qjZJWCExl@`rvXw6()LnldD@Z$hhoPV zSJZ(uyyYmOGTs<p5)_8Ql2$O!~lP-*ZfhBpiH zU*x=HusL6J04_4gne0Y2I#BpjH<05l9nqpU zj}sF!SaA5je?Cv~E%Nb;r^PoaZxoJ;t?Hk-pl$orqEO{gft$`!-~L3^_?L)*O?YGR zOcOo|^72I@kEC7U>L&a#e#0&9YRY3X&rn8rg$V9fAkP9^zdTkoV`<#M>Zhf8mU77# ztQ5W_O2#wI_Z2fASwwEmCVkc7#?{Y(>l92#*j0C7SH~$%HRbL57}c3zx>$Jt6Zmv{ zzCMh4$uyPh_VidMY$#{MBh7dpe(iTLFp;+x2b=LW)X2a@-ouQPjV?~)P3ZkVB7dyU z4Wsd9Gn?0`SZj03m%0eR1?7yGn8Y7zoOQ7jqSXPEfCX2}`IX)l(j6r70z;8(=dKnD zDVF^GaNmv7CLJ-D|C>yqW4&_b1B#HFiA@9F_ekcc9_D&8nJ0xdMXx(;Mow6OFs7(G z#H@J!yrWAcLHT+O=w#_K5}8xZ7E>%vA#}5tBF@_io@1mQTBuEeNp^tBgd* zPSt67GG(jqX~N@0oRbeGSs#b%E5%8bC$XJ$U&aEDoL2;roZ})YwX|eQ5TDL@**7Kq zL-_&@**O``cR(*~h~P~TR7UUxzEb&UWC0r=$)n)>@n9T}6&oV??X66`1g!x}XcB?V zh8Y%F2}!#2_9|?v*h(-WMRFAMP^EY)it7l}Xda0mIhv1+G;gSqce2VRmBX&&f+i@8 z=ILR7(@+37xVjU+MpC6vVxS)?MZXxH*xIVFrOk~isMTv!fCN$flb&2eBscE;WG_HB zBT_7h;ceJiQ69r%GS5;Lx*1&(1@mshE^bvv5|MUV>n=i*py zS<5jv$^u3)pktbDxmG0$Ahn*69-SofBWK;NLZs1!z^`t+0oAEUZ^XL}*|7|KEN_D`DMAL=g?>bT!a*h* zq#?>I^s7V5e7_8cn0ApMAWIGS0fZKhHs;T=YvPB-yj@t?nNo6csduaFJP{SgTY4^Y zB$Vi!6KVra;O169ep(#A9l;NAymNrTO@xrUf!OTiqnlory{~A^P$AukZ@#y*^&!ox zO~vfw?+M~I7aztEE_Ct66mD|yyAll!gxSV((GaHG@`&1oRcHozaK+6g(DaJbAt`&N#hjF@wCy75&cz02d!fzL;&G~yi=28B~ zM9^r=7;BnyFEKEKH50gIbrj4I<6Gbo?ipF~N?5uZ=neKC(X}PV^|RuQmV9W!@;TH1 z&;7Fn&A?Hp z)Td8Jp5Qt4*{&n#|ATnHBlDU9IM|7&I10>{fX+O==|;tLS-Qu3k{EoP?+N`y-z*!sI%A$2quZhn(^JtFD`#SS%N48nX<6Tf= zh50hC3!fWu&Lrkp%OgSktE78Zo{U?-#FO24ymc_EB)1!1&m;dZvy=SPG8L&)ZWt6I(DmmSg_hjsxNYQu#`%B!V@i88_vQMRT z25@bFyG!G-SXQ0U_-)|ZHtBpMyl`{VaWc@H*rwH)*oKmdTVbLo*F11?U54vOz%H1z zK>Z+qH#&03neSF!Yb9uV8&4RphD6ri{~5-|^Ip6c>7g>Zd<569r1Nwr11x^&J;nvs zSNK}cvrAs;h5qVdq+tNVV_A{Nzm13S@*+`k8w7iTIDQ+~V4oV0$6Jeg`#>&!665>u zgy5en{3Mce|ClK5!{1^DO4{^=VsLDv%ga>o&h7kbR(o5S#{eRp=*PSN%VoKDIkrt9 z2wOzloxBLwE@E#{EP107sd;+U_$^I7I4=6GM1^>q0{Ku%~f5^kbm( zT&C$ejiFi-^zuD-^HI1iSA2Xouf3HSmpjRE_BbuYgx@{9Y1sSJ3v!o+mSQ=OIa-U| zb`S5-^#m~m-mOxl7{IXaf$QL2PLE(5AsCVRW3e=^*Ls@5Al}(aPdRDWvIu{ zmnYTVLdf+*ar7Zh8y9~)1XVv{lIZa;*P0m@SNS@9j60bOe8u*Gv+NM_}Zu6o*Ifhv~K3NS=qD5s!@Kq2lyN-YnQ`7Ph7`oGR|m zK$GG}@pkN(xOWuqb~D(bQE1y0k@N`EoP?S#);t2luZXW7;qy(%T`Zu%&Y%ouh+&yo zI~qWbi>lEOx7DK2qqscjck%I~wQ$lN1DxN*J&$?dgbMz6Ert;UEF9lY0ft>32e1?3 znaBAgIDlVx9Q?LSw0x4g#M@8sC|)y7`5!GE4^ksi4R!4GhNJl z5}$TDKS>0S;mtx08X8L;o{+r^$?iXfH^S`YsWJRT%6DW8Z_;SLrP=m!SCBv5=xK39 zC*T+N6z|1;7NeemikT&Te~P#AyEYv>j9VQ3o+O%Q@J#ClUCid?{GQI_1Y*sxNeW*$ zj$*sQouS$txKEYD6YEKtQ{60%W$;0M*~IT!1A^9dEHCrAMCgbc&++JxLuLyg(q@@u zqT|yTjw;0cPlE|BiCuV$-e)x+$LWgn$9=D$ZYbQcfW7}S{0qz}wvK};J@yQT!vyh9 zy6F2XZ^W-n5|2O2bq^CYc&@gKoCL&W$VK1h_N4k+CO?W$BcARoHu;y9pLA;Mpf(5Alt*!#qXFUW;u*$ey_u5kF^Mc&2h zqNLOM7qLDLc!{qyZe^kcYEfgW|Evp?Y1Q2f7w4WVIs6iz%$(*N*$x@WaLG?>KnEBU zHpFJ)D?H7*yV>a0NJ&p~bwlOM>~2Vz5gP|$Ww_$}oo$eW44RdM@w^cht}PKwswN-( zV!7Rc*7_8wUuO)F|Sv<@2nbSwrY21=|GEwQbKU6k1ZsadYR z&NF?FOFY`Cxh3v5FgZni+uxM6pLtW(?)Mgt?dfT4E!9Z!>(am=ScQ)ji!(uzghVUx z_*;BJ7c+aDGad#cE1Q8LxYR?yU~C8CYEuhSf+(DC^X9%MB&JQ(Tru=*{(72WUd1$P zBbJ0oe3QRwTp@_(Z8E0J-@HT+G37F5uRm-T_VIi+S~+h#Z;4>rcz#=wryrIDp1J=0cq6V6_WC?e4&y0QlxOl}NA6(>ZJrw{a-C@J z=B*Jt>V`zD6I0#1t0Vi6%pksX!}hUG9GV5S88ZQklXarU1WZ8IiPt7bi^`S>{PytL zF9Q*KR?v=)<~}UgBpz8Ojkv%_D?KdSb9q?QM%*fwM@p)>$s|T{(Z3YU|ChAVpKe`c z(Z8hS|4Uk~k=E{?@O1w~M6yogm(D^-#F@!_L~Yh8PgZJ7)e(aNPfp>@YpgB6kikNAS>TRR2wx^?3C z6h7iXPqhXtGBKc9E%&H|MWo=poFQ~Oq$$s}2`0p%dNG7ZsSzUbhnB z{~>P8QSoWE6rQu$5WaOH=p7hA*NHSEc=#P2>uGDX9MO!nR=JF}&V5Ig`qapN^d0^% z3U{9d)6_CiI1T3X!il2QliVpnrt`QcNsWMTXbV#GCM|9-wNUh*&eKtH=5&r@0UjnG zQkhbCMC_VgPYP?(@{b7j%z9~rohgF@3wRjrZLM)lcBONT!5t?FOW+*P+GO0JPs zw*iu1!kvRz&=)hgqYf%{Xjye@R7(G)y7GTXtE##+or{hMzgaxmuaLw9m#$*EUo{Jp znZdIp!-8d!Md2)|@}bus!c4n!E*3zQVqC5qTXPXuUT21MmP`j{(U^owa8&H=V#E%8Z)E@kHt2FoI_3`YI(^IAO_)M zFfRDJHg(3UCn;WTTteMbW-l2l^55kV;lI>LEaym+Q#P>^Y3ct}FwPliK)b0H>}6m{ zFJ~^Y9yyx~(+*7+&F1mf0^|(G->Eu-)#GB#JRXg8-&gZ^PxG5A4V->hdJ0wW5={8( zI-U5C`)CqADl1y$VRbZ(Y(Mv5sVvPtRkFF51c5{72rZVk2l6lgOcv^V8QeY}8$h=( z5)Xfmm%@)BY5{-9vJZ*37V!K!2#i|DFS6gny^FAp-#bN2T*RM`mS3L1?hVEcxbPXD zwuB+i3+`e8i!uM2Ar>!&?PI%WzJzar>7jZFZy)uUHSi86*9xr0>3CO|wr{fNkk8k8 z$sKV~vjl79Kl6Fdy6<-{u6{iK}kyVhVpG9B+tUShNK!Sh`sRi5^=*EXg#O(#hu~58H0GZq%*3sJr zakv1(;|7tmnkO0G0;v|mR`Ueot0dJTb2V>kJ%6&A_f0fstMG5rIvGxfE;^@=Gx2t( z!@w5_l_FscZ&Uw!CXvoa>w6|*>>8eM(+5q&!Zo~u^9G4cwZ$`rofj*8M*sWA!0WPR z4UdCgkNN?RHuq$l!Ok#sp-BAzehEuN#s}Q`sEK&*177c|CfKOO&J1m?G$LnFfAgy* z)#9fQFuYcZCWX*@8^i;J7-eNUY0YhyXZ(ZEIDFbcyhmvpsAI|LBt9I!ed8O($R<}7 zVxOZ@gsjC%rb0ZtmN#np7n+mGOB0>2s;2QB2(7Eh%IF!Li_e{iC2M)ap#LH3+3Q4| zRitiVZ~pg>n+UIUysOVCq9pkT-LVdf;wq7`j-LRELq3Fdo+aM+kS__FLXDAaq%FCk z;0!Gd?QB)VJ6Xpv=rTALj^zi}Np}}vLbzYNR|LaWrTEeaPE#;T1h3~^!rwK-3E%UB z@dA?XbVU&!qu29ZLDE|az{(Obpvc12Dp9Cd9=@%kHMezo{k9=3Ae+4z;cB`GyU2IiJ zL>y^_Ao2gvAf;9vM+%`RnqtJupYfH3GkG+I52*GyW9=$;zGNc5FbfhJe0GS; zc{!g$NVbd8&pAH(BKmLQ&+_WC;`2=~=3qCgauaXvm_plv8m@HTgnQjxoB0A{+`Ji; zSw2Bv5kfBkz5?QvEpRCK6YF_VxrJxP%{RIx2^^1`JJCgDi7xu)BwFEQ@H(CF1#GC* zBBGQh)GooT#5+s*R3!dT3gw1VuB8wrU9{cGzhh@gu5X1gC+5%$T11*3u{A!SOcE5P z{W_y0=Rdp|t8F)^WFV=*q*^Jy-Nru#(9ExR7=m}d;^WzSBJ^v%0&kyv&A+cLSSnXY z?(htwVE#A!Ao9Fb#(%BNQzQ3WkkiOB;amPCwis^P4jd~>KHZLC4Ml3c!&q1;8tmW| z{O=i}dIuD}5UD${_!cD(?Bs(u)YzKuA&B$Dp6~e#T*&!IId2|pSsmezD#a1ne{nf< zUWM3Fj=j1+M62DrX|2t1M`L5hOnz&Vq?eTM^Se0>3F~+BnUKd`KY*gTc;W}XsQU@Y ziP%Fg57C%h=iwux!7hihyE93)hI-J23+d#SO&bG+Tzs7j+v@NK{Y3QI!#mZLn}Gk8 zn*hTsUsrAdY7a^m?~!tIVGqy5kT`BHc0)fETlUIvta2|;4>@Dtrapu*UW%Nu~=TaWefHL6(Nq!q`1BKSMCaj(YaCxI- zEs2lU?I>3r-DI3hmkPSi!HFO&tNYEN%T4@-%F`>u+BYM-I3*|vt)BpfO z_xlI1b5bJqAHdRKfnb#oq6MO9B|k)JOF0N7wNNZMh&i1uS{&l%L6+FVd<-=7d9AwO~i5_3#UJ;LK?Q?1|#Hr2M7T3Biv z6S1$v^&?>DO40Qwwi7DF*(x3_+Ej77n0%B^fD6B)3Q9m1O{@5OP;I4E9N!?!avOe7 zmfriTiqAJj2+SZMnN>*|Gd?nJDL1kHCmvs`es0ojr+?xjY7-5XB+-zHZ{#ulwDkc( zgQSdbht_o4%?}V-B2I!+DlQ)b3ss6vKZC@V#6v&BFV4W&*fcayfpdSGBs!hO1f_Oy zguV6{Us?>5F!aw{K^K)}?asC32jFMlb^!E>!8~5g2U08>}fynnfZ&&XV4_@+n z7vW;mc|O$pZ<6yx;? zM9~9EGx6;25YHWAA%fnkj24qyBxdXC4pZ)oEgsC%YU-HpX+dj!Fv!S2F$E&vA|Fw= zr16QcH!gBl)F0#}0C(P5#CFCy7$xD>BsN@x;d`~%f02)4--&*g;BHXon@?|nBl5F_ zxCDdj)ok(UCEoP@?v(k}BSVC!FenRjTEE!{t*!zqqoKzD-!ai$AFD9-1fzszHsuP2@bf}k1rag0;Z z^6Ge#BBzg0AOHnYuSn2~u5gi1Mz%zCE0F>&Pq@3xORfayyKdUmcPVX}xbG?^ZDr!z zRZOAEM8KbLr2g^`9uf8rgai?P{R0B_EoG}_Tg0V5VR-sp%;q@VGUhM1Cv6vnfAMp4 z24=xEo(~1x?Yi6$*>#;e+Z*IGE+}(C>^bN z^#;VeNEF@xzZHp}Z(wGzO0@Z#r-c;|ZAg2`q72^h>Z&ZU_AeNSK8#gdtU&CJRpODm z;%|%;yVA&Oi-h^Ms>F#0?Mkrd&W!gN5t!1N*A`vh~ML-1X<5^Z)F%Tc+guJ zgg_SC?ybDU%0*9y(%Q(i0J87zqa?%2zN3$_9@25rM;U@Foqd%zgN{qSp-aFE;OlFL z+2|`@CB;=64R&{`#w#wcft1;Bg9%tr^;4Qgo|MC|=SBut&*>1B`neeBr*yh?>LNd- zBl}$J@l(23jxlu4Hdbo@U0XFgtf+3$+8>uM{~#XqSGvRZZK*#xTn3?HzrPaA_Q-~- zAf-eQLQswkk5j@G0G2Qk#iIer?QCz!2LVb$eDO|v9;hUH?Iz9?=$Xc1l$T-`{tc8V zpw65IN(%#iOrRf@KNxJ)A7$3({gspuKe+3VCCm@#N{bj)e@z-H8*l1Z>^5^!NEaF^ zT|zA~VLf2b5K{=zQyx#n1HBW24;nr>3pB#rG#nSeKNYI1#K=hJ+(zPv%D6D40tfT%3|Cr) z{nKfo9FY^QbY=(XbkJna!Jvb5FsKE_k#R{%xR+a@K~+9h_{i}!LP^9jDJoKFk!rda z^(8G#hn!#tQ+hcWeQO^6@^VPAY31W(FTn9wKH!M$n zEX`x(Dx24JTQzk>ce~g{v%F+^NljDB)Xd6U+uYXL{hoQ==j8?b?eF*BkB`ThGv~}a zGiPSboSAnnuB$Hh%Kp4oP3_?`BBhMKF5r(s@pyq{27eh!9Y$$#p5rm0;fFk&MNo9x3;Wcrx6)o$a3VKf=ncU=ynfBX+E=4NY%ccY>AHi`J_ z>b;GgdT*1`dp;Y54b7iNhEh9j(}tF!-EVC}Yb+;f(%WL=msH!w5hU-aa-fag1TL$; zUK>Sa5A0OR$Nq_7R2}UD}aC z&4#nuTL}F+Qkc0DEuAC3w}#!$IZ z)A6)lc9(Jw>e^PVU0ah;e9Rwg#?e5`W}tA@0`?a@pux{^vz~ZX?&n4POJ@r4dPP+` zXQj~+q_Q-L5-fjZ{~;7^#ftakBpS<44546|Uac8IctxaU?-25_T7KZShZ3G^nKw>(%ZeFhy54GG&A9GLt+inmYJ}m&sTIRW-8gk*7|D%O zH-@3Je9FF=)H%kq|Ic8WYRnVVK67Q5OIVQo$iMgVgiMO7o%_75et|u2uFL!(lV&5Q zAz73K$B{)*cyZ?GEF6joN~CBjq9-L%B644mNIm+il@U{hc)9kjsBKx~RX;x8Qc2@N z6k{>Yb<_}{Y6XHXCqi&Y@ZX6v&^=QWs_fW050mr&kLpXQ*m{)Rlg2@cn|nghoa2){ zDM{k#y%ZF)WNA(v>hyz zcP6|c&qF%XV2{H-5Hz%{EG+Gp7i_9KQ*SS$YvDd{Yq<5eg}+Iri6Ws4JEfp}zq3=X z=I({9TUPxpwo_9p;kah^kl}Ke1R}$G*bs4m`wf<6&0_~6&sa~LGnm?#FVI5Yt82gA zJ8YGJP|i4P(auhz$D1OR<)~d7jtw>JIt6um%`S`XF@_kwBem{AJ1lS49O*)xEk1`9 zC_{Sz4@sfFpcULp!Qg(I<5OWFe#etj={Temmj+X#!vIRFGoUuLVRJW&rb1>DhSO*f(2n7h=sK6vNS&;c zc^jJfftq{6$?d|+4m6I?x(dV4=DAutWkkEPDutHtcppJKmp6oIko^#{ooJK+pcK=`5*D zr#tQhai!309Ci10Su#9r9F>S9PmQBA%YJVC5RFd$Q3e=1vWgAwVo<0bN@NeG>li4m zuf?nj6Mfip`j=8YzIB4G@wSKPV52KYWyR6z82u(zbTq4)8GgWU*ulear4xE`5sJ&sBK z+(FOaoOIDN>OQz`B64?@i_4WPUOkoH;&nA3ijgMwDuXtEj-dn46wXhhO_-N0Dx`(h ze=S;Zu~|#plTHEFUl(!wbQ+G{Id3}VQvc#p(sOO-iKBgBKl)74UXL4adZhk zX<{q7EKYeITxvFx9vg5^;w0c1V_X>6$C?Tey4HY`;Z2-je?p1f^^+oIKQ{XsRcGp8 z75f)jo|kf{+bQ-HS_U=x(qd_>E>`(`CfYzXH!h)e-Y1Q`aJLd_6|z_5a*v@Q)UT~r z#_>XlCzVj8^}Xl$WC`uIZID)g6)PKB6q=Qq48g+wP+4+`77M-+%x{*GcT42cU#>#i zqvRqJz3BP#`G-;pqkgq~0Wys*rMA{Ri#WNA`eT2U>H+KT(*s;#4SRqh)awBgCLdM% zt3~DGti>5Y%-g3BWM0s2Ljy%&2ETZ9^XZo_y|Q+markcO&V7r2dHuvYiLi!@!*`vG z!*|yu9qgy^#ja=yX})v|P}gMSrX1ztUmvE>=JI^4>U1doPVQ4q(U!9{6U#BGTlVsE zPKx5a6*L}x|4J(6c}`3ORrupZkT~Ef=DU@OqPS+yHo1!Vj^Rgm6vsY7Gx1{#KSJ(k z^XHh+qIl07MUMK7BLBf~BIZKp?&IxqYvZhbv^LJMM^&7DkJXZ+AIAcO%5M}u^tk!O zk`{a4xp@mFMTq^kFPwh^*jFuFaTEisD_0kvsAYHMYT<8d%UJxRA|pc+ z`0SI^3lj2sN|BcuPSeFoY%eWVfgw*TXVug6&!F8hN{imXqYSc!+E~_5*FQrGymzV& zlga*{;M%w3CDa^0hh#6Iv^tX(<2B>fHE%4T4p!@q7y0V%sC(5;*TsD5-RQl7=$oZ` zMv9%)F-Z%APBbs?v)Ti3+}48!<9_WSReO-@X>3fSWnL>kk$2RdTql{v$fzD$(>iIt zu0?=xMhBSnA8UE_GHM%kUgbkJiC|~nmD+D$f8+6G)Qj%C_%=UWY6;}9XDQ0t$i$yH z^;yc5$ALCIi!$APkw1Ety2qQ@6+7HByLR&%P~k7R3yKfKFQ<@{2v2HbX{G&ocU;A7XRj2fSoCO=`3a!viO;K(FzCj#{-BRP$|kKzBzq zzUS)IOV_cb81EJ2KSy!xo|mLOo-Gs9w~>bLV6q`&>_OiB9QChyUn(6Rw{+F;lwDV? zh3*O|!%7Q`ePn9y4t%4X)h;(3D!&zzK)W{7c;J1%Q0+2@F}PnhaPS&FB(PfrRb?40 zNt%kHrqR03d&c)Qu3ky$&5Z}Q)c;rtxwDeyU{EZ1fif*0*6e$Mp0-#H*Q7B0Roq`! z)2YVx)2h+>sWM@S18F3xRT29qKYE^ z=msV7vT6#iinr)mE`;_ype?|}e}dn?9^M}KoUXby1@2ahrnRVtr+MJ7f*#_59|PXX z13wMCwT5nCCioQsf;||r@fJuB@VNWsyCp}gC*SaRtF9G*XBD93eR=1dpq5pImClN8 zG{}FyEswXZ*P3>tE^%dkyit33=QB8aU=u%V@KL}ikYU0sSc9hi} zZ~?d!wPDdDyQ*l7R}zZGJ=W8@=sAsa$Vt<>Nfdzi>iqfcqxVwn+h`RnS;6;J1-_hHv!NwIXo8;H7CInES>G?N*VW zSBi+5W`0F7ihl3Lqu>|8D>{F^k)~9ctQ!#=W0K&W284OwU%?;ffqzpEzf%uK^RM&i zAmH+8kw-It=m}Jbmpp8*wc)Lss8jt8lEC^F3h7#q=X5xWr0bN4STxO)M(}@=MgVW! zO#W>&95qyRaS)%$05lXGJ`&SjTM0e~=ws08?Ql(e67U@0zckmiX*J`w(1k|#&u5RK zQm3Q5G;gM~bb}qyq^_mus_1a#6Veime^#>_ebVGXl(d^@%A(y~CG!ne0$ z<>z${-a&EJ^E#*RfJ$k`b9Z3woy?ndP(mZ%5Znu!aM3A=tMEB%Oo#DuLW)wI|oki1%9OaUo ziGjKj>6vIgyc54~^yKe$QjMh-Z`wtDnv4rFN;!wG?xKDHYk}&Bv<4dg%lg$8$; z9;_?L&4t?z;pKUyg$|pev;fsn;Fx2372%Sjxg5NQIyXH6R8-Ly!JN4VRjTp4J(M2M ztCg-4Y6jfSAfvFKg4|>&aQWIM4yd7?K8JuxkK&Ov^cd&X;5VG3HMAwv5~^!{2=|98 zRTl_XJ{rZ#_ELIeDp1i2IdDavRKk^7ejF}371;i1ngdi%N=|MYA3GWu+C)^2&Utqu>r`Qb)hQmE5P~WRFQ3 zH>T_85oswILo!lq6EFe&==r|cjBMlLkCUbwg<2x*N>A9KvLIZc*+54-$rk*E9I9_Iy-M> zQGuaFOdH&b&fx)<|7@i2V*BO9MFe5cLZk2##506_9ONsb~HN@w`LS z3e~de5Dn^{46eLz|~%Ss)iVGjXc)1Bi!q*7~cEU){JvYQ@{)wKZ#zmmj1eMmie zTuIV3skW)83aK^|-;QdK0nNmBxpAIwn1)ypfBj*K4KV2^8=LX@;$a#r^r$10;HHP8 z%B3kHy!Z&M6}s_vB;b?WKiu)3rjLag18WC@nyhg10n&p_eyJAG_9i|Je$j{u=cJFQbxV`E+(C~A}O~7K0&Y;F)Avb1IaCcD+u zBftyQQ&-EN$rVJ;?qTT95V(`UAv28zKRj-nslnsy` zCbl1MKTAE?ewIpWCZEE#FKk~Pb%y%aDFq6gz_8Z>`Pv!si_#LIwWM1`L2HS05=ZIy zzt&x!#c!R%N-VTY%4amtt%bI`wH&Yb49_Tne)uy(Tlt?i@N}13b>2g}IZ!y!j%Skj zZ|CtN%Nv);hcBO}_@G<;b*&93b?T?@1>CCPlgwxL)8T}NW6T3#&$=z$l!Z2 zG}%%QT$+uE{~dIj!a3@5%q0fuN^Je00j0>{E_^6(X#ggk0bDX<;=_Q)c;F*|i_L7( zmjO@qz;^?e>M`l>0GIL58a|NeBK2$G`fgV!Z2SWs=Uk*gX7I}has{uuNUdT98MaUU z?EI2STWOgScA5>g=FEcH%KGyl{_G+}HLUQ|OB9Mj&Pd`Rq*`FsU8=5)1}=s22h@@L zvP(49ODjmmJdkf(!keLI;FWInKA;1@#9JXXQJ<*MM=qN+`uoeMELfnI>1FFJJ5Tt6 zCb!HQtZO5{*x1_`z^((Iz{kFz#QGWT!^6MCujZP;G2=_BX!>Z1G5L5Yg|B@{ zm%P`>GrC?d&$>cg{j`oKoAe1Wj+^tmk1376zd}vJ7b9HyP^7EPG>jkr6?N~dU2(~# zD|n*-CO#VNS4RDRyZ*+d@v~piz`m&nGyCl*_&ssSr-W6f8U1z){0{(Bzh$qh*c9*} zKYx`j2F0f9YK5SFuGARo+fGd@v%oVIvDZNENs@{SUk`jF|9Xvb0*)g{hVEU+k*NIR z={)5+;Q|<_wd*wA3iTH8HN_6RH`JILNCT*bUlh!b08s&+xGY-q2VDyC4L~eur1jL- zG&P_gL)WB0UC_FvH{o0V`kH!#ok4gzg&TR9;cIk!(9>_wWXYEMFVE?8l+1G4oMpCx zqS-|S4%^h<*ycLQ%j(Dhs%v!Bi^Ggo_yi)09x?H!;Fr&t_!9Wrd*Cvx*gSAM{8B8F zUvLqFiHrE8-c4NU3p2g+IsqaFlR>J&GeN*$l6Z>>)reV=X594pXp}6|Z zK7n&@QmB`96Kvyo-c6cNWt#Rm75QZa4#T>Epq2497H%;nYvbUeq7_K@E^$;;w%uN|*n`W90T+YcGcn2p;QA~_HA5A^rde)RzjD3ndVK7PjQO5(Hrb{{GY z|NLwy(vK60Ktu!v26CGX6wrTP%8I(!V`FW05b9%Z!mK}bA2yf`7~rEYTZnJ8lFRhG zymDJ$u1$Y`#X9*cSz-LCWagGJX46^VGrR1&?TH=!;NSCc%5>#JHkVCf?dP$T>@&8R zJ+OiO$Ua~{vof~UKEYmO|Cy`7`}wy#DBv4=+l?teP9S>Jvszwl!AKAXYH z?Tgt*Yzh0G?Ob?**6jZLH0mI`sJu*NHIgn z+=keo96Z(GBaJlN^O>-eq)?+G>KX=0x^gPBQQLpB>0jMMpHl6ZQl~Ogf&FqE0Zj`$a}iuu_ZNsWaTE%s;ZR zo2<#q%3Ca7RCoMkSxQI$=3HI95jmAL#=*|^Z%3iOO@2$8~wj39MqH;Ad zS^dFEIqn6$$=K+h#+Div{NGR}&sZnUwPv9!Mg-i?a@V0zZ5l^g(oc~3jTzR}oJMGE z@Hm~ZTn!LvxlFMobF>@4T}qC|5M50T8v_WmdJaS;Pz5bAWg_L*ZGp!cFh_2p#HLpT z4s>x7v&J=chl}q863uo8uf$Vd<)4G!N|vL(Pnk8I!dDw#2SsMD@^>jZ?+Ur$dVy~a zgu#Tyi@w)p65+HH%1mD9i>H#o3-GMPDAso4QJq%#>-M_{OEO>W@AM(T-x1^s zg7pH2n@v-QO`HnjX|@7~Rk<|V7>84_Dpz24THr%8umC>tyWG;$PKX4avGsCQ;K+Ul%TYFFQU6xP0Bgs&w zQXW}#eUaS~6!5ZEN+9T(PX;gYA@bbWGx=l+Lwc5y6e$_Gd=Xx1#YdgyW?GtUl|Lyk zl1+bEEXq;QNbX`6*wH#^wy*r#+W@8U7Pc?^JFs~`Cv&)2ERmD^{%px_43&po<)@#r zsgGOzitE*!8k-pF1xS=0MwLnMs;KH!%-t!J9Q~}jN04aRGHrW6MKXF?7f3hCFxIIN zjaQkpBcDk-ngB@A74-AdNZB`)kXO~{T=X@EzL~juy5y3{B&Z$W9b`7!V3KlT81%Ob z%v5KZt(WabSWOa50Ckp`Lcr>5ldl{yZ2t8?LQ}dFwIr7SWIqJ0wP?|cP?=O>#-UAb*KKLGNh{ExF(}waXXv^gQUzT~mtYL9 ziUxwLmL-M9vfp?&oA;LNE;0&3HRF@e@LW?uP*f1r2+tq#%E>;MOz(IWSYzw4D^%tI+)&WO=$>l_MH5P^1s|W`&^}eOw-u4uab9d`p?<8P~&_LrCf= z3gc8*GM@ovCG!%8I)aF@bRTgt8N5|T$w(TOk|ld(q=XF2wmB&tW2iMYYpi~tUOI|; zYbN4pTr4L3=wjmpTL?6{E})s3&5Y`hxvAlqPUj7nxFjGCxUY@v}J zJ;+f^RaCz)=0@MfHW~Y(m$ToDi7~18{W7MdQZZ(ok?ZOde$t{4wCU6>K&iTEMRsg^ z#;T3~#>KKz#?-ib@qRR}eZpx12JgMtS4ka9GIRZVMyL2r?2M5c-;C#tHcVQ6bK<^nW4}+Av5K7 zf^*7tm8>N)s-U`zoe3F08>s2*ywO8zpT3tUP{)xK20>D^AkuWnyj)Q))Yjarw~3%k zO8`Z?v_y8%_)BX9x-@4Kc6!C#&Nhr+{mU5U%KB%f89Q8Wuu9{e#Nq6c@nhn|(92#0 zF!c(Bj9!Tm#;8XBVc!|28^yBAhJWJ=Y?pDPaSF;wNopAC7MLPZ+L8wwjK`Ah1kCKD zv=GneMoeUC6Q?84OJo`3LQeU?8YO+zPos+@p`kCL6+KuF|2-QtZ4QS z33y;y7YKN-wDQEOR5_l-vor-3g&i7KNwIxlhY_pjt57SZUNhP>&tlh&bIqSNb~TS? z*H@ft-kGr*M%(n2Ja43NGJO)qbZA)1SUzH;F}-DXdK_!{1m85l=+Y{Uj~r0zo2qbH@=&L~y|#>lx7Vk&Qn zk%)X20@LQ(lj@BnFq-mGrGJ0FV>pP6=$HXgdUVW2cP;AJ-eGlDV|&NYaI=G&C4+oqF<# zBaN3@L>p`G2{T^F3UvodvYPNBGv!cLDVt;%`jbF+PVX9T3Nob3pC;_b1IUKQR2@y` zuP!!vXZHo%itOeb6Xoh`XFWNYrJ7Y?fPLR+&^g^vWU|y4(jvm>*SRY*j0K(ZQAX1{ zsf;mq#J+2ATL+-I+O2)KbS4CmH6%wy>VdKYG&A1l9%iXX z*?6)85N9^6DCzz*=TKYJkK%jW+4N98L?Q+`OE86HctSMva?Ic@p(BpVM0AqE9$iuL zjvmce_51gYe9XgvQpo|(r?+(*+p^Zkh$QdGatswFLp+f7g-(seC9`B3m3_$AcVDEZ zn-XCX5h!r7Oljw#$IL+$(bQs#)#bnv?-hnR09HV% zQ;oj&4`fq~AMWoQI*p+98*GRvZE)yJGqhe!c-2LtTd!K3fXsRrvZLwI*=P0I(9kR! z;;K?^-QGLGI<@GN#%3B% z_GuA5o1$GB=76MVbi1C%)Y-@vAxgtzSqn1Z0a1Njdo+}QbWT)i8}t2fgZ<)pnHB`2 z9{=x&RX?N@Sn*(Am=;UUg*az8WJ0%VVY+>&Y7!m}!xv#T)ETRVYjJp0hPuTKA+^LP zexx;qG9W>TG7N1MCmvbCNTA|ecq{9(bs5Khu zOJxZQO^X)kWWiEe{{N8oly_czvkZ+g%_w~@Ld|WeJGk0AQFG~=ZNx>YBF1pZUFe^2 zk2~2BW7*?dQHlRPq2YJd6PcFe!mYU(9=RwdW_Z?Usc$4}?vE#W08oFj4}QgyiEO^{ z)syp4|EKy!;`gn-DRGiz&Pc7k7NSMy6}CY+Xc|0R3CO;tZz3`t>f5r7)jOfmbkY?w*C;B3(AnGpec==-7)vqD4Ki98u)In2EFF{dAg=wHDe9!sp!WK z5(*LmPwLV-c?z#ko@9L`Jw2ET{-oF@dMQ0Uv6p3Rv_APS8M|WgQ+BfMr#_vF-{@zk z`@itaI{xi&vE@PZgKvf#FAZn{!*0reOxR6Z1`NS(*0cR#4b6G>3uYh37#EYqD3Pr& z@2{ddpzGMlxrrISjqGd0o9*ILJCR0@4}wLv_&<%=B4g`+p5-N%jEv_eG&Jo!^hUci z#Rd|Hfe&nTI~aWE`Oa~9oTtu{uykbzo!@xlQ1 zwb3wV9DYB_iRoHH#y_0y{+b^e_+9C!UPA(@uBG1?*~z4<9=JTEz$-wQ%`)|xLL*>c zB0IOD`M_?(wKoUd-=Lgw(=vM&F@kK!CG-+2IKvv(R9J>Lz(+n_g{#whtV?cEM+ z)rw!u-_C&-A`WRPK!8iz)>K<53VIs*f8Wu!AUepO9 z&U3KR_xqTBzE{h^@o~n(WBX;SBQDjq*8DsHT8zRHQxME9svE88S+G16z*;~{ zh5`j_6iqD}j*H8+R{F>=LUg)nt??!Eb`-u{t+TpE1j^D&X~oGZ46A&qIk7;70!G;i znR~qsPB|GM9*qC=Q#iWxizB1P!rC;-j8m)3#Z*r4ix4K86! zg^g1af{o#YVM$A96b+2E@hnQT*TdR6l0i4>@u^H(!x$6JI2M`9Fvi-lX&{8Z*p7jK zVIV+8rssC2Byug=F}j%1gb}fFkYg|=zmtj%CW)VuMiwL>7IxZtcf1Wo7-gcN9F;Ja zv(f$CCB-2YK|d-1g;9#66cy4Gqx<;OP?A)cjm90w8F*@p9^duR{KYas1!pWnHApf^ zoo5{)KvIyL-fP$^582^jfvnqpuro%104CH4>Rh>*hJlq+{= z$qXKc1}!Z$9{I2}zzRQfhRq`028N*YmNv8&xHfCJv2|`l*w-FL5GzfSLriMV+WKR0 zEQrv2BDS_?N#coQ7H9nYwHlYlddQWqJhIi+TG>$vgvyO`A2te^W45E&<50N;M$+7_ zjVeYG-`7YMP(PC5uQ4*7?0Th4Tx}H1b@AgPji~Yj)?73jq%<-T=A~ie>M<|QQJhZ* z)*6H7U4R|+-27&&*f8d2I2U;#b`U!J*tJmD|Eo-_D}I|lIx>3RD9T=L(d!FoH)GZs zW4}&tEV7W7e%%lg)vaGA*1x%CY|Z;9cJdm{GVh?Oohpeumr8rZ_iOxFqs{M8Ashd> zl6z(1YUAQs4es>F@;`auXd`r8TgO$Iu-53gZUBl{xvnXu<5lb0I+uE3^QD^M$F4Qd zLiN=qsudaEd=?sAT;N?ZAJoi@S!>vTdC4(jw8^%&ewo1b2z@Av!kF&dMZfwf{E9+E zb=;Gm2hmjY8u)j7vQbjDO?AhWKu9Uh;T5;diu0p5anQuNZdYiEI}=<0f6G+moyoYi zD=OR#U1X)mVvUxkLp>=q-g(5h*H{t=&pRCl!neN0V(~cn8bip~TKPNzLtdwVnD9C! z8AEnc%7oo35%umH60HBPl<@Aalu&Z^2L09$mNRd%7zDQM0ZUe#*mGS8svx#PHnGTD zVf=BR2b}tPRXbkzk?~Gd87nth9~{BH5)TJ(&G_Zuz@$Y>h|e1=`GPLhS5b@(uZTVz zT?K3T1J&8$Q!+PLK5eHm#@KqrW`K-K6NJ_Y#XElm}#5;$nC5jI}i{I<=J@!a!jFnYptN8Q6=1+e+aq$l` z+xI{L@F;TLDL_F@1QBZ$ztC9cRl zHqj0V`F~yKf9X0kH5V0!#cCtBG9up1cCv9HT-kN_ZfF;%kvd-Jf!}c#;`}|(V$K^Z z)FTI!v2Lpv`!2lZfzC6ASB3$@;EUAog%=6u;)~Nf>FI{PI}~yKFHs+V=Mtb+h)a_> zt6b6S&jlf!l3{XqxhQCOl%|Ih<|tV?WPHE`vIX8*2auEh65b5)LlC=P#0Rr^?6CMI zm~}Bdc(ktzTb#(}pqY!#Vp|~VIgp#)67rPT&US5PP(Fa~nz{d$5*M(snU91tKMnq@4yaz~$R`pfZwf^3*0MO&~%k)%Fi2*A6nw=J|5T^6<3&gV_ zER(GeGecNP)LA*Wk}=5jfI$QG^jFB)t)3P8Lzs)dH(U%!<%yzk19m$*C)Rc2VdC`$ zECcV$8nAoW@8Zt}tO@%=xI$TXwoSYk%9?gOPbg`Z3iiLK7p#DseUg!Kr^`pZXhvde z1%w4|1}=!73DfUF3uEcpC4wubnLyz}82jXD%F*A-S*l*91oes-9LBWRf5WyU3?tX? zVq+LfW|u@w7)y1y^E$(8^V+>BF#{LG6XC2ss`hm_d(QEPEbvc}8o`|GPjPPqOO29o z*lTeaiv!B*IRo`GGzh4FiU|=czMe%DgrB%j_C*AC+Ir9wMzM};toR{{jc2RHBhk!R zfAvhXRZf}>duPyJE{TF@c82{W-iTpX4Hk1^*igRrl!%OFr`c8E6UUxph2ohwR>Q7| z-to+Z#~bmimGe{y&`>Xt{wZ?kS+fF~AYkF9vh0U=Ol%yBCIAjHv^N1lyvYfkUlS27 ziRU&K>%p#w(Jt1#iw7MPIZZn}-f$JKgl-O@v0N5<@kE65#`@ACip?LMmxoD#K2Jm> zvIp2`@j@b)cTJ2-WU)!3DG@j@JfNxRn3L8l9v8gPj$qX~n;xN}IDSBa@C{hmq9+=7ogq3~>3^$3Ga5iNPnL}hX zW$~n95KIj#ntKaC@!zH_D6I6B$zM@&#VwPsP;$*bC2xO)X>Ig!>6uT~tL9Nvt@Qv@ z07DPWjq`3nf4msmj4egC%1mSX8-GbXo;XjV2vd#Wb%K*A7&uoPXwF)T7n`$;|BC@C z_BUt$7Yp}MHbs2j0ygjzfi2LPy!ev1GoAGbTm3ugmjQ2*?CW=;YT*2`bk>gv5!@2W zONf_RvQj(}TCuK<^Ya0YmLJrLwQZKa00BK1d7^Uk8e)__nWEe~wRDV2`e7@_kF8j| zqhKK=uNCK7vA)e#Q$P>UH^?WPFC_k(CB#%>4g4eyxEtXS)Ax#ZS~HCu5i?q|CTXW+ zhG2dD&xC+>GGan-wN6HOK4iwiMWUuPOW>z|5+QByoU}+3e+zM*B|BB1So1B@#G7r{ zgKUx5+=g}IqnC)twg7x@i8wn!2^T%uvgVGu%#1G&@Z^#$~eItVAqq$Ku6^cC3;4 z{wN;oHmK+larQR0pIxRhI*X7FKxBHO!XQlKC&W(_X!%t1?7%v)Sz=-bHuu^8ZPFw8 zOU?-x5Oz$4XkD5Xe)az?yAZdtUVQ1tq&>1lvySWwzN)nBSVuO3J8pbLt#VZi&SE|I z+Ua6#7VE@^FPVa_!>UB4&K`+aOvR%_A8NR@)4^PwtBb{am`FT-Nm+%?LOJTaw=~me&3qUQlcV%PiFQVc#2bP}vvEglz$hqqu8vf*6Xy1>;eRs0~&O$kDg#H4!7^ICIU3F%K!=&pV%Fme>Yp`-7aDS*Ya$!7eK# zQAyr@DNOFkRpsx60m~DzByX%WR!I`8+w}#)sdR6`$s zP-8tYG>|c%Nv)>-c%#G}eC zJkJ&}Ub;!l&S6J+d4-tSnnj9P1DPM+Xa&|Hz_y49gIJWPqW4O1VjyTcTp_j&W|964 zEc5KRXgUbdSFC6_@1?4|CUXYBa+bl--;0TZ$awo+l+ttR_hLJq&(8RssK!RDI>R!W z4;!>(#>En#{@(!tEPz$F!r*TKeD}Sm`ksZ0oEKRD+aX?i5!CMe-mLM*FQQ`Aq6~3x z4^-0QhPd(~yc{z``MLTqaoN9RbegsD&Zg(^;fu%9Y7nawqRFeY>+WKvii zh>BVWO^jQ^f<)UPtN~xTP;?u@-fVK5l68OmoP0uD^sDl%aI=gzODWzgUOvsD1$%`h zCjBq-nol_D6DIn;!kl3hgz2AVd%~QC{ZlfgVX0w-Ki(>1+N+qqt-eKayvTW#MK)MZ z$vPP3kq`0pL#&bWlsg;T*Y0&t?_qYYIQc5;gTeIw`IrAU|8hgcPp{bmW~;l)?tYgw zS914C6PxQ8Zm_~n=ib~gGzK%Q&*jv{U}V553AQZkvvNroEH>}A!c`s!HK96;V`}zMZm){{Oy=Q`TY>Tg_dT z%Dr8wbcT2Q%Si&t~7Dh7yGYw1L6dfg7 zP<23<6gNisQTVz-7TMdR$pn_7PvVXa;EpHxl&Mw+Fd@wnREr|QXBJ82f+fwyv)HC) z2a)iySXkf^7hyLu(kzKcIUrsc&q}h7ne~%<4B@oFcFILt(QjS$Oobq6>!B*6OJuZ9 zZ8WAIfG*xDdQV{Q@uIC_?*#S(46TI|*|(S&4J=}95GpBR1>j}MBuumpiNZ;k{8ovt zC$ZFsJ?@fWM`KYNUXT)OZV=ZdvBx70|8v?)@3VNcPvQHlt*4h$?a>Ik#rF4EWVCl{ z%YLqJBf8bfGPHUIYi<_GQIu3M*a>CDpal?Tg~-~J#5_BhUGL^rF*K*(I;JXmk;G~8 z6EWBmR!T8usz>55fiWQ|9=q-Li=`j1p|E_MQ&?!9V#-0>gbx%5)Eqed!B5HN+UO`8 zF84Hw84Vy=KF-@Jdhr-war#Ny&riQB#!O*VQRM|5)Y~xG2kJn=u}TaVETVpCZ7L!c zi3Ng=AQH zj;?;cVC8~bnp25wAIdEdr_6`nTuejuh{xx$xZBK0mA{-FQO3NB+r|`CZCOz}bMmLI zDv>Teux0UrnWxuab_txNbJ^R#(sZ5|7Mf4p3JbdbKVZq5$7TXc!}*fH_VZaxv_;b2 zfy-W;&vtM!ffh;VC-I0gp*dtiuE`gi{{Hx?i68uB&KoB$V$Ke32qKP_?H630cx=r6 z6_wlNMuB{A)|3L7IDg0V;Y)8UJAFbXiW;+|pvBCIa+@!fyGHK8!?RwEzW5IX=OaUH z!4}9r7i=ZoRB+W|s$$vI#VmrOkwcfV^t2jFBjJh?h*Gk8h-jy?2yH+D?p~l@Oi-0H zTe^Bq3|`8@pZML%vXn}pJ3l0}>W)iDeCXy z;8GTv=1xX0_mqH)o+8W)qyrT7yl^gKk>T#r&7{j#QV%4h)lDivpWz+?D$rBhbpSCS zVA3)#0;nUolL2}Y0Z7#&K*09D6HpAb-wa9Dkd#}OfN~^N+B_5-$B|KY5lFhJ2&57o zi(N%HzV3!a2{*wamH1)7uJXXf!ZAiwtJ4lh)+0gS#~-uEfpwFp>3ltSa5&vlrsR-? zrb^PS~F-CSq&0>y|8pRmjnH#n#^*HDR?x;ffNQbbZI!;$2&yGvP1 za@W88DbsX|K)4s$+nS-X)2gT!eNuVISft5Q!B-_Mq!%#Mpn_u0rz}%-$J)v5iP$pN z3brl)E6RtzW?!g(dGeU4V%ZwpAN6P1(zPs^X;)+_Igr%L^a>_g#R8gP4fA|C%VAf` z`mJOCW#PxEH|m(~%ek}+oZl|aeZ!t=oG-m1)-=0-0&1y=kPcTe>H4?Um1g}U*OmB^ zpTrm6!aaLU9R3#G6O&LXT^&B6EM`5NQ80_{-@sY~uOxi%O=AYX@+VQafwfM>O-3Na zM?XBBo_0<8eAi1NcFJF@$P@hDpUk;9-^d2>{2gNOMmR+ZcZf;!e1C`dbR$c8Vb%_+ zSAf1qK7)V^eP*Q$tT&TPWZNj9ej@8-3kro_4WP_&G*n4QjIC7cVF_t+z!v0o;hdlH z1DrgMRzt<7DO?QO#Ol>`J(&zBCD=A~y^QD0{#15+ z6Z2uba+f%}8O#1vyF|SonJ|y_IRng9t)Wo0=qWhyc~E@)BTES%J0cH##}~&$?MQP_ zD%Pa``jNE{mHNl&hf{}v`YJSv3wiF|!rFydiYY+v3zs$&8&aypZ)!-=krrw}f5(`W1k%k)@%6+PWs1N8Os*k5b?^8aw`&%L?eIBhcE z*j$yfl_li<R{D;Q(M0mG$c9FZ@+jN3IY+9>py4!!J zJ65dU3AgbifeRF$sqa2?Y8@*Tul~$%nSz+|Gt0vx@)vejw<1ZL!?VbMdvpG$1FR-h zw6~IH=~Z_11JSOMHH?kGs)zepB^}z#TpkG=g^3|8dxVNVe!+IGBBAeMQ`uy(XBUgc zK9UQ&ST>Uw?nQ%*s>BrOpx9o?LP6z`N|qEfuaa1?Ru(FLtHiFum1d0Sw40@dOqZ4L zK|eNo@HFxEZg#IHn%3v(#K|ds&uxST^AV?9_CxNgIj;Ir;Jo{b!=x%e z+`k>m0G?j+(Z1SV6M(yK7*6Gn7l-!Uve&fwTZegRKkMeE!w)h_bbyOb zgHsN`7g8WH53ps}$#&!bte-jJ{wi2M6UCM)_8){Y4q{EZK)iR5bqW|m?Sj3QJWG@u zWO3r;LFV6Lq7?~~6AOTT>IB(%SoI2XqVEo4>K$ z2?g?y$~Pq9P#oBXhy?{49;U+uFhAFc!6#Xim zfU@Oj)*@`SH2Xr#5q$kV%2O(ap2i-SGGRZ%aKnYT$9%kh1{?imi9HmWDqLq-OQiKa zD|^E5v&@-l${f)^C#=<(vid&Ocxmo$mV2EsYHmI&Rr~R?Y!pzwgbU|@Yhn#c!sGKA z_9eC<4LJwQC1RHO*mMpIoh>oiaj^_@LS^b#Fe7&8O)!4c|DCnbN@Q{fk{UPzY1=Ng zM?yO7@TQnX{xiR`F05EA{+-3&ZV)hS^|IrlKnqB#2kq^r%3^Rwq`s4cMQ^JY*3r2I zy9ED(b@>-+`u~BgUDaacA1uu}yp8tt*X7kI*sYC)UKlc0{$L5#*>96XEdWa2B$+hO z`=ZTxb{`y>BhRyLjaJFJk>m$6z2XQp(^0AGRtD3tl~2BWte$vy~19DudU0U z?6%P3M0B>zsi1K4j?yDy(w`XMtHnouvKAhv9U6|DcE|q2Xun!C_=^=fmY$$muNL$F zg8nQyA-4X-9%7%1q^s;P_JtUJ72frQ!si+rhDZK2_6$%SzlIgHGI7UsHaFpO+29PT zv|Mk5OKB;nFFpmFdWgRI)RY_2?c4AM41v!@#~auqK2MCj0o?P&ksGWRoBKf~e=U5j zYzMAimo@?UX<^ZQu#RT|8h1CRHLxr`+(bt((%#bH-*~9;D2H8L(H;IW$-l*w#1HWz+LMf}mP^2x=CK<&Ah`GjHT+&pR(B1oC+7K$#QDQ|acT zmeG;8{LgMQ5B3-5Liy{S8{aB}so`+pk-DMm?Jz!$^MZ;pMN<*0n<*x*iYP9iOjNPESJ>pigR{qcr8ot+hh4S8(lSpuP(tR)j* zSeedISs5#zGshEI9%wmy#Qug{3o*S(SoFZGRQiEL{RB9N&WZE{?sfsa$x!c*HIGE(x}Pd^T7$?3Eufk%ay?l+vZ zK*_+QUKE!SIPMt~aT>Y^`lhb&J3M`knv(8i45F@SXuLzOn)#4(dD}-mIEL$Q$q6r*C0l25|J+69K?5Z@w@Pt;NrIhSu;X_cb#Y=XRUZxAHDZK#ERjFtk|L+uoHRFPX|~>Gmm5gp zqgR-4KPB?}?l9#GP@ee(Y$JIbr^u}puxk4uX%3fppD&Cji2`%_YSFh5ZynYc{aBM) z#g6*~pj`a0Ch~L$AM7YErXg^Z*d4-CAJ`@XUl8x5MM^(mm|OVjRWfBY6#^9jCO(fM z;>grs>X!shr|mVG_LHkCYlvQB;qB9ayShsV0Kk~?L6*F!ROVOiVleTK>j;MlgFAF6;9|P}>lPd}5V~_6 zFuD0SVTgJrL>6Fy;O3ikBgD{Pp4G)H*otrOU4oB(`{25m>m<{B{PsZuHF%-Vh%3Ro z3t#=a$g0Pm;rmC3`Sti6R=Bl@s?S?eeX%QXF0M-x z4N`bVu`Ze4C3>dtX@2HJ+uG*GAush(`FohPe~^lcy5G;ItAj-PMz~)trlOn*@jz3K zOK!!aro4CJO}E@GLQhDhdu8aFbL*a4;n$4QMYp0$Gfp?%ijmFueN@c$X8d)kRkt+Q z9UH{VG>+?T#fCJF`)-AAbKcugBQ4c0#8b^VZoC!KoAV2RnAC#b3*}bQlDiOM=@_lN zL(N5TI`80EEzcjG6u+kPSb+6v#hZxumV87ltc?1tCGT7(>K(^sE9Z_@yc>=^#<%8) zo@0-9wdOBlm9eZfW{U39k2hNLq=?$h-b*ZsREoC%E2ikHW1JTxIjy^W{A1ss&EoPOf8NkS@$u)gtjyM?R==ejzaH zID|(}&mlaw+v@x{iak|!qa&J_)rd}=cp|$lp6SG&Z|lY@>mhxqz-v>B$cCUg72uw3 zQnF@xCCX*$q$yeaPE2;XWbuCNTQNTi2YW4p^foVpG>lZ4=k9A##~cR$)P;1L459YJ zAccoKB!Qs=7OVHoY2waop7_jC(q(~xFET!iXQ4Y`Sjt<0HpUs+Y@RLMU_}&;b)u*g zrGVb$bu2JmFqq3U^HpZcW=@{XvBwspAkSv+W+I39AsaU7d*Twj5O7yLK83ds&v!Cw+ov>*go6UQX%jR_98(8gyX6Ef21pU@syyL%I z)_Y(5Z3Up(eGf?Be`(uqv;*v-dx^!zGkByJayRb@O|$N9-tV6=y@)+iv%B&4p(a{& z=eI*myxg7Nck^Y~W)0wC@bxH({oQ$cQW7!um`dW2dw7Sin_EpotBLvdK*5|458TU# z@~b1nQ`d1Wc<;S@Eqd{c9{d${t*riim_K1D4bM37P){BTeUj6Y-|JZU7YX1O;_IGL zpIqw6?{Qfcu1yQV-8&jiEXdv1G|G{QrZ<8_47i{7$2GoU!~NWSK`#UmQ$sT24$CQ4 zY%kt8d;zr(4WDSh3|y9kCyc*7z4#p++?R5@b73V>-6RJ~h!6raJpBOXW?q;43AHzO`B|cBHlKK~w>0;2dh;G=npM5gMMjLY z<}5xUs1J`PRh-g?w`uk51T=r94MPW9b&z7)n%W3V4G{5pZ3IFePY@IP@HD=#NUZ6D znd~NUu@45)5hKOR5AkS`{Sa?z1)ku`^3BMj5Aio}uDS2SoSd+eALdUXbn#*S0o-qe zkMIr=()|`lxBF2&i*Qh<9QSC6eUI=L9Lvadf_HJ-L%3f0nMWn2J&*DxPyxzgn4n|E z^B5lrgv%b|X<;7UT`?MhE`XyxaON?L2Gt_qajxTTUeN>3B=ZI>f4Gh0n+^?^_omaI z+)u$cm@hqHfL-}Gh+QV;^yLjjnY=F0e#UuB)ShEs+s+u5+$N+@kKw-cuoA=k59FbwRhub zpoQe%&X^MT0LAM5!1J3p+aDbU?A`t{4;5KY@saGJSpQTlwysYD+ePv8(;jSLBIKD` z(jp0E1U{+&l--^I%46c)XMknllmU>gh2r*SxlsfrNYR-5u^I1NE56>6Q=Xg?Rm8rYr7AD!M=*N#ehiUXd@#b^WRbyn=7(60gqm}ycSGmx+4d6N4P;@m)}bgL2j3_{OB!q7q7@Q6hGi?w{$ zi0@8Qy8FDymjm^-m$~MlAkT|}_Af~a`o1J7*nv>YuWn8iYED<6<|1ri*bEIesV_qr z-h}P4R2yb}l))hLplCc;Vw*Nt)@RLNS)W~l`629<_;Ltu?{h`6rF;l?iP%^8vPPDs zgpttD-74-|mucFPggbMOmz{crk7AkyYNvx;&KOdN=*cES%}y|BD9=psAf(2MlEhOF z#{`)2S>SopXU+}fG2JCN#_D(&0%;~n*%RD(2#ehdOEay7PRhefZ)M>t!A+*3&ujc6 zRz2l)-ZAuqWMoTqGJ$E)nx>vCyZ?3WpiPL6yn$(BwRr0dj%#B@@f$quK{pXz66Qrj zAQ>qM?vl_LZrZ5&-n2zq^h=H4c$4S)|0d~ZrA{uJ_$KU5l(+jWS^A%E$9oJn7aX|7;uk>@r!UsXzG z16(f3M)2;fmzxcqW;+hoKv%N)X@+r}Wh&cn$G|jF_f3(Vb}O1pt~wyvjO1E7PsS=I zeg2EK5f#8U1IG(?>-}cVBjo*AZe@g2T~n8f!jU|qp(i&=L2h#8nYpX5Pw_WVHIhez z!aqmyzO|rL9#E3Y(khb!ujliowRg&b0(W^N7gXNre4YVZf8_JNk9&$WanVLCBCE>8 zMXcaiS}5I`X!hco+62T9#=L_juWPwlWX6c4qll|h-s9a-+C6yu-+5bpP*l7pd(B_( zp~o#3+GzNzmy53EW6)?G=c(#(Ibe~Z1F254s&hxnTooqxnbG`7WWKim&dCMhs{(W> zT)a4jXGKdk1VunOSOWzy;W|@45s!`G*~l|<3{UmyCzNcq{$0S z@(xK_yclQFDZU;H#+4Lu$3GTVa_H8il$r{ueQo2_>eal%B=eR+GJ6Jo(N^&NenOoF zdk`>BI6EGuOTY0_ej!IG;;Zpe^+UhobhWs90wyihB5#5mUuWat-t1-etP)G5ZJ&V2 z%5veD2=L{i(?s4zT|@-XM3K|9sN}F1IgvMtww5_0V$_w!;|twaB=(!Jsl$ zBnV9K$Bq=M8uMPaTJ-!+F)zoOWAaq~gxhH(#!clV-Xy#{4IdP|BnC{!9KNbROq$LI z$H;HuU_FoOtofNA!GsskM-?J=25h6`3P;E zz)YO({0Z0hj~1P0@nwKIHw*QWk0|lfY<^U1zZ>;kByvlTJhd!s4)4L)H1W<{-q&X$ z)mzN2#Pt9CT;AGeIvKuZIC~!40awMB^RQ^?o^4|F8|9TZ@$&UO;)Gp*%cfm)8B;}K zj@}OYJk|O9RpiZ|kFjl!_-MX#5p0;xX|m~9fPQ&YWGsMx$NX+c2u5R4FL0^nG2F&8 zm>^2T>;+H{WnveF%7pJijJjo_*Fv6bemvxq$X&=2&99%F5{nk{mhSfh3whTjmgS2r zZA1}O%ZcqabTS`?tXT;pREv8T@${(c< zk;PWY8;fAYoEFiGc|sGjGBNZKlyLe8N*F$w(EzX5xnvQ8kXj=8Eygy3xx!e?-Jd}b z-!A5jd~XmD^Tg@JJkoqWB?3O;_#%<$@e%Z8nHc#IhHQySzZ=z%Hw%QIGPFGREv1!_ zXwV|JD+0e=UG-yS6_q7esIL~cFX7$X+bhF~5%dKYx%C6Swe?NF6YHBN<#?y_*qbTN zx>v1&-qG+keJ@4&<^Jcqr*5QD9o-kq{r!U}wN~)z8>0DA-ofuQ2`Ft18nP5~?8CxX z%8#NhZ!d%T|3J)L#%G6{yX5FwFyuWfZIGj9f*}uoEGu2~F^`Hh*^geP$Q=OkYrnBt zjE)P>#kU{B-Bm44nvc*=5PDy9_=LBQC^kD9J~HTxAQ9J`(L~6&Pk2^{+$n|9An;I) z5$a*F_Y|@tsx(lFFdMR+jW9Y=WP_Wq5(2Vjv zLE6HMa-TI7fn~fSJkQAKPfZB zAc$|pgvRY~3!XHqAtuNJT;>#c@G2e?cEeP#`tbxxD~-ufZ;TYPR`CVqKJgd~J{TPm ztSk?I!D*#@_7^-HkI%k9hdCfle8KVY7%}uq{*rSVZFA8ZnnMN+cjZl70dlNS;APaY z2Bv%kMY{^edA{PGA=lBbP?Y(}EGZ)>4Q+=n>&;%xd$XD1{Aw<+>#p!?sLEpT(bw>w zo)lSYFr%#&Mf-S+7`6s011H5_YoOAqg>x;Wt5`g?mTzKb%96_A_=!C~k%qAbCQat& zl&Qmn>+cnneYTD#G55`FkI-IE0;`eX(XSIoW(nSXrnTcz@<-^!)(Q!SWkAkb$ z^R2a@<`(;;IRvABK)tI) z<`2A*iy{%S3C`^qqTeRee@5BJO}r z-o`Bu+=JrS7Od<2DIVS`hk*ZXl|#VPt(=B{U$^oJ=)Es&Lt3$zxQ)+*`!;Pm@a z2jmyxh3&kZw|EErUA%)#r@DD^*CoX}h{i(mRO;UCQoLh+;<@mzPWy@98^7A@&=3|} zebY-Weu2vv6iC>GvV&(gJ!5r*avUDxdP!uCddiAHr=ThV9(oW*$Bv4@J9xDF<4o=p zK&fBJV(MWV@mFHu4$1ADojfzu>Q7S42~~p}t)1u0vWdO|e!#XktiEX{PYm%KsRk`6 zGWy0&*dW!S*UvoM(rNGzn%*K8FjmGwJyTVN|BNMyOQQH^sLa{o%b$5Sw`Y)ib~Tve zmU_Ck)ar<(p_{&RDVqI)T!+MczramXEed|&DY>S_R*xo=G*r-3zUnACU8jqe3riYbPN~H7phTorLbgl9eU*GKEtxml&8K7c zb;WMjTg9T!uly`3-(?Sf9<2Cy5AVx2pAhx-!m)Nj+>VD+?%4#%i(J-uWg1ze_M;&o z5{u4b_d>dlh|;}0ftI?q@5NG=dzYZp3nrJaJt%1(L=}r-`#3&Am=C^?zm}9JQ)i0V z`*;x)Q~G|XnC{!pr$Gyy*pC$gOEI-LfX;MMtT}+igZGNWuLroRw)30vN^L6@O=uPG zTbl@ZK|!SLWnw`UALRbppp4d-Ne8|wX?<-F&IEjIP$oikCLDx3U_N~iocvRaI>?i) z>7Kb_XDUBvlXVAqmo!hs%rS;qj!Jb`7hMf_NrELUtq<{EJ^NmXeC&ITt;U{5_W^c7 zj=0X%{Fz$Rrcltp*`_NIKiSq(PA^8|6nETm3kE! zWtOt6BiLIIH-~5?LttB=j+si{o6?u2Z^M$t9MS(M7Klp9N{;ddtlkWQB!Mob>5eEr z#?zhB)~8#eg6Kz8Jz-oNnaty`Q9tB3pW{7axOg0VT`FQu@bLk^%%ia-RnMDWw)_P4 zlJHgA#cd~fH7}hm8lK{}@%7Wiqo<(DaoZmr4fea|GqsD=m8T@StEYH;wEQk*V4(MD z6HRV#5v@-1R&_q_;3Gd=5h2E$=DmIC);m&^Acmf^hR48IzBt(wr@ZJX(L{#%w%q;10=q0P8oubq2C3Gdcy@S5)YHh*xX!)JxRC$ z%}35eaB(I4^Af{2k#~`Q;Io-(DsEhd&*=6`d?MQ{HeccyG5^3z*{gLXu3f~M*^dO4 zAbMZs-{ao6hF9QP+Wo=HN`yFlh5L(XSFn(_MPg<*uqcekpXnUR`agLIboH};$u*Em ze{rp~$!YV}MI2hpQMXCf(>;{f>~03k%LC*#GRed4S9xzb-coXvw{fhL98$y?98D30 zJ(NIk{VET}GD*-ielJ@rdd4W3Q6CYIxy28hWaMOBOi=>lX<|)`63#vn`>#Pt77KQr z_l2LV|8?H6)veiJef?dM2A4gwm%5K+N@$m`3*h*5uCjgN3UKf(BgOqOinHv|8!(jF zdT^<`6EWt{EctTO?A)=mLNf2WdB@*u+DoT6o{gzQz6(z)ce+?Vj^X*DcJY>orc4er~ zPT6EHIh0s2+DB2{xypQ$cVX_e@l{gT&!VrdvK;(T9ZD~@Q#|cZ-U+Fu9)~3hyWE>i zQ{6KTCDmCQjqahTW)Qd8pi{!>YJzuQ>5I<*ziyO*^QnOLPnX zzEh%mfZ{Tv5=3Euau=&C+ZmwLXF*?#q}tGSSZ9#vqcDFU25LxyP;E!Fp`kQ5T2}Du`Voj;Kmb zw0ZDA$JnBNNX_H22QwIR>M!E?5amU7M*I?@e2`W-g7k#jt77dOreOxz#!?S)!E>aJ zv-;TZ1m!_-vVqcrhCtjO86oZuRl51e9YEr#1jQ-VhAJ!gqM9((=_HzmD_uROZ>mIDIC#8N+z3}9eDW0X1>!Y^2H6Ou3EL~OBV_u^5lURN zX;<6yZNsbs6FcRLx>w9Ip|(dTy~3=$L3HAQDu$uw$B|;>BjZPT(O$;WR&qi#AKK1<}4E8eU{>JX8L^;;ucesw(@RdzT1`k0T%gD%`7r znj(Tc1;GnGzz1lenI#HxMMNI)aBzB{X%9E}J6C0Y!(sIN~9W8rInVPSh zMvEq!ahg6ezwg@T9=HPb`~COh!@7H~wb$8uueJAH`*rp{ntByUIv9hbHgs^?P37^;}$jWhd`PI9V%=1vWR)JHLMkqn>Bpdu!gn#&mejo ztz>skde-uJ{kUFuZOb+O@#pV)(`|Cx&_9^oF$YEM-;=?=H}{4)_Od`YyOdy32wifo zGb!9?qX)R!M%8Oq%^A@z1`0=O8(Vp$Ctv$ z-sXtwhcL=8MqF1pxj%*VZ(82NTw^Szud0KP<;|v{n3r1bd%QnI^=Qc~=TT+7^HhI| z_^p9i?*TN1zf7b|yiPhW2`2PM&Psy0yTB`x2p{t114)z`pw3RpH022PC}o-eD}2C$ zZ+HZaAbAgM(g+&Fd&9}E{SGO8Z+18Sgm|pM_Nb9>bK1}I*1&=+NtGlM>zVB3tSXV z4t!&yHkPJi4(t(!7JY%E;%In)j9&4z*DlDeEQ(0B_jJM4B>ZJO%*zXLG|0N-Ab%W3 zDNPeK@TqegatH+zwRoz-yF6fz@NLq7oOFSekS?cJ0&2j&I4%Kw4L)a*KoQX1mIN41 zoB>Lp56rbLj0PnKj*HTrZ5&R$5dOw+T5itLH7u&hP(s2*eL;A;6)!=e{XtT!!4&VYW|1|Vri81UrV_pk^0I^y2V+yP`vkk zJe=ZcL$A%YJ@h2=%gJ-(vR=x`Uq`NuA~KUJ=w21s@*)RrBvt$=llS zAm1~Fp78s(>N{1I5!VeQe)vIN9z#9rBgRsyI%ijrPK{7`eg=Kb_l}@!(a^~el!nsi zo=nkUN<&h68m-OR!3hn-2Wi)dH5O@0lPM+Aly)`xev$T9y!6oYg6V3K0`Ulkjg=uV z_Kk2x=xj2DSpU0peF}zF7dSWtmEi&>q)-G0hGGR1Yg?h#5MOf!i}F9BddQ^@a>*!I z!W-OgG&<}XJbg5ULyCt-(+NC;_U6Y$V=w?a7EX_$Ewt8N@y&|!vZCTUA_<>4=J}Cm zyEk}eB%On^Jc@>57WHNnnK!(78Z~N2N?iy6<$=It1`)a+MievYG1=vTuiqIuonZB-L7$2KP9_Gns&oNkDw z32-h&6TT$P9b(AFj&U@yE7lKCivt~}WXgjrm(}Aa59RsOIGQ5Gn?9c6T_?fXsbRd# zBT>sgs$VxA<5j)slhv9m4BlA5dnZr=#&B0BPykNRdQ5~y&U5TUMEWp4J&``KJoI95 zCRwmVP?ALz*a1AB1uOVCdrhK0z24YQ|O8RHJ;VY@kHW+3|9J|O%i*|3+Q~6GM7g2m574Q+ZkCpq=d598zz5kGTugYD0a&U38BH+m*i-lhd+ueGX7AJr;CffqkGqzVucG5%#!9}slRktaoO-}1&> z)Q9J}YaWdc-mc1A`aK)wOPE}%skLLzdV{q(kCMS!pGUt-uU#v&1EO{`3w%(*VNl+6 zQLuZl8fW+AI}UO->SlJrRRJz`UN{Hs{{^<>Q)KGRTyo(3=148LfF4`#y6S#qelE93 zBf-Vh>Z=B_LsFSfJFuQq3(yBotWkwkhBG3s{oV|NwM8K2WqZ45~|>k47pJXD}r^Jr+-rY{pqCHi0~ugRhA zT|QJ+U8*67AMwF?w8-<~Q-&5Dg_L^JNe5)nb;{5EIMnt+x-V^mXkI>_L$a78r}13N z(X#6ok4{dNjBD!=M%(6iLlvv56fRgS9>xtTGm9w9vYnR|Q6JAnb!7Wn-d#jJ0#2!1 z?RS+LvLY8vw1?!Ui>S(aZXHiqK>K>`l!}3sHEAhe5iXe($le~`Qw+nti#HcjaLAjg zfprI$3ReqDD57>~uHNy+CHMY3qL{jNR-6z*-DA)17E=;7G*s(&v32V(NUd9k&|9{S zyJ{|}_qL^L#^AqE5c2{mkj#7YZJM_o;-s#A^sj5q?>%*HZH;j@a>FOzTzzuw7tf`l z3z56^HOD~X6!~J=2$NIf9fYWS2}&C{iVl6C(=<+_AL(o!JO$g%UFtYGSCvtq4b};3 zT4M0=a_Y;XarJp#QKki}aP_>gjQUy5*B>au=m#T-A1kOY_bR6u@RwFn5uYz7AA?@R zvn!Ne(a#uu@ZWE+iUX{Or&pO=eR)+CEr5ysca`E&!50@c2M7I51wZn;=HRmG=HMOG zD%f|C3SMJ4U4IXA{|;~dee*Mq-irkjmEXR+|6Vi2V&?m>JmSig@BPj3HYZ!$?X9PF z)_KYh@zmv)cH%syi+%G0&FszDDCSpd%qWXFe6jL3XQ-GHmzcptT)(6_3in(!JlM>W zwzQeYm8;83n+5yxvgTmqBA!P)M9~nw{2|5DXgDPgn;HpV|3_f!_w#*^D287ip?~=u zmC_emg}pji9QKgKVbA5X1TR7?UyiZO+q`!Tk6k-N@rsP-M+< zb(@RKo!iZKoDxLeDI;aO4EqKQ*L_l@EP4N3W!4>*{BD z{z{7TG?IUXcdn$_))g;v$5qtd{8qLf-m#-zHD-3zy@YPrb(m>rj%VEyFvL~cGSURw z^?_#b)hb7=y63QcllaZ?IrbV?AR4)SLq+zgD;jGjZx|_wNWQovU+0>M^{a_b(1@_z zs;#!Zc;e_bsKm97vU97^(i@(jh(2p2&gKuZtrOI{ord_anFf`jO9)s^Ni|2stRhjI zaM$Iho9?2Ns;ebX4%WuKNTZL{Ay+0UzZDZjhn6lkxrA#sBosGN2qxUu4II3N52UM# zR5QU~8E!nH?jX{;d|;%HEHvEo(LXihQ6K$VduX%0tGN!OUlv6;)-LIIz_$9%ILB5k2zuuRb%mV=NcMs`K12(8d`3#oT`6dExjpj z!c+9AhvTg3XIwY4V}bZ)^vuoZX@z?Kw98_VQNRJs`^v8Rtc{q@>r*S73YGK=60NGp(BD2R!08gcz}zy!(MC-l}VbaMuI6-};%@ zO%yCL?*qHYd<`HnoA}T0i_Gr0$ZU%?WZs4>ip=h~$ZX=<5iT;D_+j88vx$oiLPchi z@HGe`^DSfy+f04D5L`f*^55NP^X48bXbCc62J$HOb; zS8J8gV+8}(>YyE#pg`~RloLrdq*t#DRG%q^^T=0o@- zFQX(5Be4uXoBGP+D>4-d3#iXC!Z~~n8IJ- z&{~SHdUfMzwXiesyu21me+&5aS_%o=&`npBy0SdCa6w^7fvvEltg2Ge-r#Gs)Iab9 zf^D}>3U#<^Jwwq`(Zml!lU7KP~nCf z4Sy$qh#muo1;p|4Jy=Xy$@}-vS3Uy~qm<{}cubneKtJB~8l?{0?yoE5{Q+(t(93g6 z3Y<1)Nj?fB-&t+D0=lI52kyR?26go6VH8_%4<5G{g_^|o@1?OmWgv@5eF*L#xDfU; z1a~+BTv9vF-RfwVSGxdR85*8kNB8pVI`ZJ7b+j{ZM4+y90o!=EB0?5iNpu#k+(%>W zi-C$ocpR=+lh@#imj4JB%?xZm@1v0JCfgN|#a_;WYvJ6tF!>zuI#v+_f_U8P6x(f7 zkglwTWK0w_s(#JuROjL2Wz$t1ngp7vOE#YN7B==K)j#wW6%m>jfBz2FrlWY`yL8sa zD^%AygS9(cf(x0G4^U7|G;k@K5pX5fX<3=sqo-$wPnk42En`eZn(Z!4n~pH4vdzyT ztH3ASo-xglJz7|_Wv+Ny@?_^03>aFiX*&@v(!V=V*N``)ui^++c^54T3k9 z2ht(v19YtvF+K*67Uan%>!?4Ee4hq)PXu0AvM_f+VZN<0w?JEcyRPN%lJ}AQB!2FF zN(>wUjLr|52pF2cx zmQ?=q5EXPz1EUnS6xJxt_!FhsN5eZUcR`gi6Jw_-rNv@77ewjW47i&-HEj&Pc99Z! z_G#=W7Uz~h#LDtTkZ-^sU7HP_dk|MFZ~YwGCFzGLpyLM6CG#f|dH!LFiaL>~Yf>Nb zP{>lRO#D@pXZ&WjjoF2JM10byno8Pb_l%#tX~@CgVL zYj5Hc;U8+^-2FpJtTBU%+=Jj3qd&}Kg*yizhQs8S5|47j=fW>m*bJ9}RDXbyF0Hg= zp|iZwJ!|(P4Dq)&9^g+ur14F8*?}sbev3N(_A%-u zdKo{==qj$jq)5e^1!#K&qMF92*26{>^@%@IqP8uU4(iktH}#VVuga*uyb zw>24GCnOeQf6l=jzrgNs7Uyone0<~=WE*gLgs$~QSgTTv7*$?cmRDLGG0(Z6Ft?g3 z!R^s5S=W;JX?QKk{N@+bQwY9%&m|g{SX?R=6j7}JP4xBy8FtwnmpW?VKOx+vaL)M) zCSobNQgb5gxfE3|7oHAW#tbH&0bFuy;^Tmay5W<6OAl{`uL3^O4c`Y`iqi~#54emq zaC-wMe@ThmTE_yS?lcx;C-IM`X`}TDnZ)dUzVWcO&rGY&k>mx61k%3iL3zo<2hrogW!xO!9V!YYa<9ou$EnUjUzih})FH zpPxBP;U3YDIGc~1r912!;FZ>Cch#uYkBvM>V~3bJ3I}UnfQe5*{g*+I{QcMUS2l+C zo}=W1G|)_gFd2S#{C40%dt;1Y5G2Rh0A&z(;5YQRWh%e^4V?{4P1n^jOzVs(1J-z+ zy7tZoPXV5O9{QJ9P5fEl!;N9x^b6$Ya}|7IhU$>5NVr$i`GE_R*Liw|p|ca9r5gML zE|Q-Wb~gDU-Ig3M&X|-*4S5^9lFOd~Vt?H60N`d^e}i9UF4Hr3$3@EXS&TSD!og@0 z(gu-s&?Slrx(<3Dg&TRB?`>EVgwMT1Ieg+01>K@b47yCcYw+kx? zm#9trarndB@D%uMZny(}5y9jaTtqf;QJoaNiBE-ppkE7u$ZRsmSg$EUzIK^W}m;~Pe7v-uz znsc$Uq9V7zsoe>GCxGzJ0E`Fk=<@Q?a`+`4FMx!}*gdTZE33s$73!9TRlA!PUBN3O z>6!Jn#xRFyAQAe@Eo8P@D|`0;0)k9z)t|m!i*UZ00;#{0FnUdfI9(2fJJ~O z02={20IvY*0q+5h0WJa>0lxyeOv0Rbk{+w|gJ&op1#mlHCSV?*3a}XP5TJFFQNxM3 zS1H5ZIN2C_+>It8)$ta*)@xK4E?S)lFtsSgQ_P=q6$1cfNz8^nmzP{4UynR^=kU|l zsNw%xRd@fNRON&G3P_6Z(3NR~{9bp0v!{x*u$ZmUStgh7o_5%(BjsZRe JoCaJ1{12C8+f@Jn diff --git a/wasm_for_tests/tx_memory_limit.wasm b/wasm_for_tests/tx_memory_limit.wasm index b8275aaa72b3defb3cc7e944546cc1226c21b794..d94ec7c768d71c1effbeffd89231655d31af0f37 100755 GIT binary patch delta 47441 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 G3;17QOa3PS delta 47735 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 delta 41427 zcmeFad3+T$7dL*BX?wfUDcu*^d&|0b79lm}JK=}DM{d^Oh&H!^9Z)DEl zP2v!Tzgm<=e?CA6e13kue&+YQ-u+G=Utss+4vs{ib~xyP{~&_q4#s`r;v7EQm;3rO zVAh|HFMEm&AMUF$N0?u%mdT8)tWrl%ro*_pXp?+rEjAy}+GT#gn8RQ}!~WF%(i(lm z7xVA=S^f%}!KSc=ud;X8yR3v6E7>~sQYky3m1>(c=Z{*w`VCT&>we0*-WeNz`yDYK z@@)2>m)S|}O=hwJww8UyK4CwypV-grWA+RCkbT6~vm@FWwt@Z03;9fbT-(T&@nhOL z-f=l!!PoM?c$W6NcAbB&O**Q5r&Vg-YrkkeXlJyaw4b%p+9~b4c0s$SUDB>=e`wdV zz!@dM)6MQaI|K43XJt8pf<9-Wg~lSx=Dsa@l`q-z1)uv*rumTN$fZ6XJ|#>=U!0|9cUy zQ<*N`R372-HDWSSxkG>5JnDZJd)I6cU<^NLC(qzW&*u`r6In=+b8d*tWr&=?6e>G= z0Yw(ph%_!cGW2)NJppE9RTgTc|3Rqa3xSYlrhn{CX6&i`usiCQOt_tnP z&YORPHpX{~p2kYed-To`3niW0sB~r^YoT9;zF@K#K8w{C=@Hz=+^P3qtIf!;F09xb z7$&_;#SJoLnOPRriJdWhYIk-XoxEA2CG~w&A%~mlDd2zNmG$xvTZcd7s%gW5C z*!t`X^Oo2FK=)egjP#X~q8N*DDimHLq*(eT!MTHwqSy?=j7n;s2jbcS?Hh3h+hOjB z>)8CnRASj#B@PhcU{#?~P5-*O@(PVY&^bN{6b*^5%f2zQ z+4QNCesjK=_t$xbm6*HgWV4;--HESv+O zcY5TK>au0a0)xKPbR|Du*OQCd63o;xj1A1fWt20+U*Bzhn(PJz-z5)F=wi)&byNO^ zax0-+Gp#NZYo3``Z+wWtY?N}t1swkMry)MSej_~B*KdR8+4{S}>>BA*b_}|PxHFVD zG_N&i!LKYbo23jRX?`Q62U{TCy};wlvnk8j9`oH)w^`UQ#N3hEn(Z@LLm{6pnbD1o zvHj+iMr+x(=E}xzvI^5^lE4m_L!0!&b7_+yyd>8QNK0b}&C=9J^R~1MkWrF0o$X)K zt!YQb=9@1z8_0HZ zw@7HmGGAir7tKGgnhGgU6*664V7}JkWp>DnXerQrm$x)54&IoXx9Y|Yn>|`JQU%%4 zRSkBEQz6@1%?0s~wtg7>>5JCwsXu9LWPfVfrZM`{18ruqBj(vQsqE;QxVFt$^mle; zToLHI5}hkd|IQrNu33*&Qan^#s1c#dFk~>z@sVbcU#URS97Q+8P~}~|i-2iwy9V`+ z5f}{=h}BiE^hKylvLPSBm5NT8*uE`jyQh6Objrf^9h;q~(J5=Yd|Y8P@>Ka+ol+4d zvB>DV_y4JqO7Fjt6M zhl+3o>nF_?om%oACYy(EjWu8DlwyCDc1mGCnx{IIvs32Bw+sQ|=*~Uy9NIaay=p$+ zc__XQbZ*LCH~qVG_WhCSYF2fMF(2;o6>>D~N;zh9jc2c!i@Or6GrbF7d#0!0IVS!7 zMruTib;aoNi--x+6@3w|+SXU7D;xx#O@9>#GL3XRON}HvD~(xER&Uj4fCF1gof$@B zF!c3q=h*x;lW&b?&;@UIPXYAi?lgGC^>|W=Q4@1bj|fXqNp?zkT^vAt_HYlzp{b7c z8p?9b&b^~O!kZgNg`Dz7zce4~O^jICy9u6$dQVBOrUc`fX5{h=qm8YCBw>iW4D!4p zb0s9vj7am{KCz8+)rcw~T?{#>Bb7RIr50q-3JnPOz7G-5uy1`*33v7#hyiXv-1Z8$?j-G06{Tou+)6+w(WpUzdfGk{%#Jry)^=F-rgS1uWs*- zr+&x%cxK!&3s0Z^58G@j=pXU7j#?B*_&)7F6!V>gJBKnp|El@IfJVIFin(||TR#7a zSvg={?A9x#UPDc^E81AAV$9ihwFzDO2U3kDMkT%V3iG?WTCplK{O$)({Fu8R=WDN; z6?dm5ZM{m#S4h&5G4T4(=<7(1%y7lIVvN04&7^^SiRyvFqGf{^Ycn(4EEqFASCUJ| zD3E6!8`udDb?)hi=b(G~WKL5&Pc#6Th)EqlHG{R~IhfNK8!n@`wmb{p-5l-s42qNU z!nQn@zNvjqNRos-g#I7po&QHOs*jb~$dQ$|CuapULg!^MznT5-O<io( zg;ED7L!q`rg9w*3BzWTGhnf07BC_{-pni-+1CxdDi5bRnjNBY0>dLBGBnj7cotyfr6-*vxJtjox` zAY)B7IO;)J21$!yr>?D$r+{FMRAYn6V`0j_NU?w8_)^*TU2baPY;Y*5Pw9d#__2JG<=L;3yc#OfM{LAT|RB8$56p#0lM9_;5?BQfOX)vF}gC-loxkj+i& zB=kz}brP>$Cy{KZb<&F?;+++=#?mjFb4PTEC{le5>o4kR5iSRMnt66a&$!~1ps_92 ziCltj%Y*S5oT2Be88C8)lfAuW)u_wNxqLgo^t0y5F`0ErKcMdeR1J*2RMh}ikWsE; z*Yq75#ArTs-&1LLt(p2%Lr(A2;~&s?{u^eaFiZLH z*?YT8!-~)m6b1&ia9{-touXnIIItQ(`}73E@pAd-%RR+&(mb*!i0mfp7Jg=}x$}>1 zX5HuNgs!xJ&=| znMuwntDss1iEOHwR#5kE)qJSn&9-v1bAvZ&j)&c$hQqCcgCR;_84Y`iW%#0b3dtMA ztx0(+fH@1MQu!ar>d%+o%gli@UCy=go2q{&TW9W=*%Zs#KV}Z<^ogtx7}`)9=3*;e zXor`Ec0zYB_NqJ*0+YFh8pO|^3M4atzRrA2#5lJ~n3d)VF#=4hUD()p;$@;>wb{L} znftu_{zzi*Bc|cumqn9b4j%32{`MVq7V%g#Z&fc#R9l}|&>KiRh% zltnj(ZYNYBf#UqU;)*aQr8uWoT)7qJFXPNwTcR^<6f~2+5k>J$P*m1Hq3EhqbjAFQ zF3gDkhP1Q>(g=m2ss>hb^~(Chg73D()9c!nIC_PxlA)%n9;48^TV-hdR+(0=(tcUB zhSHX7lW7}^W!j-)8TxD6bxQkdyNrzgJeESuJ|HHq>HWcQ9HhFm3iQ!5-5&0O5O-5rIrkp+DPAIHe2^pgA>I-pnqt$u)&P;6l0L7 zCmXV9u#6}5TyxvH-2WAH!pFU=2I6EvqQ=*6U@|v~Z0@7=y`%!&%aRJrbu3AN;zk_7 zdB>6TP#l`y16PbVNEnFrillZ%#u}Mzx$(|S%}xmM4}|9PpUBpH?-SV$pM4@5;Gha! z`eX#P!;tkd?fLa_@k$`U`)-bIWmhlk_~5707k|eXLYP*qe-F^2Y7mp)V>d`tuWXQ^ z#T$+hs#iXZt7G9XT$0{yFBebyIxG9)oK_Nx81?|8d~1$=x}LKwYu+xshp}yD)utCH z`~T~G|JQq8|IZUOw#6LtW#U7hQ|BSA?k^RcF2m#WGCLY`esqDqMaNKdOpWNE7#g=7 zFDFBET#grWx@F#@mzh6*d4GT{9F^wTuObrdP&tfF5cnHp#mxLl%GR8(ZX@CN>8tp5 zo(x!`{yhVckCFc-vU|&piJqdfsAxjCbBC1RpLfVo{J);%0cmco-WEfqN> zW-or7!yvQ&*;$J@i{xZ)tC?Ru14h6)yM}e&EcwJq?rDy)%?g%+RIb~Jl@!9*o8gJc zk_I;!uWvIq?Fw&f=PZ&bDxGrJ@uhYSeY5%3uIMgyd=@kW2X^G}z>=={+Y^BvOgu6Nf+bhyN(5Mg6 z5vO7df485x?qF@0uN&>{%eICj*w0$;#KyhLpRhymT5DD(iF0rX0wyL!Mwk3Qj&L;Un?zM z`M8J~Hv}I)W<+c!kuWkR7|ha99UU$);BnT;ynL*EV0X`Q&+K=6u(|a3P)r>HP7LH<;T=lZc7Q{w_Zk z{`su6ZDysgVtj-JBB>~YaZJ`fU%#J zsG8x*s0XMlv+4JD^SxQ3M<>==)A8|ACpIXwDV0Y{TD8_S-N#+#$P8!B6hn(z0I`Qq3JwoSCN3xM%l+qg(re9Bf3M=^X9}JFl=5If=V{^=u zAG^UKo$+H|JU{&LHkeTPsT7!I8=dM4W7N~98rMBaRp=3d1rIiQzOw?szCl!%RNg(= zSFbe7PeoYi<`HB(Y^I)W?m9-WrL^?TowF&+L0fhi#&a3V_3tS`KW;vI+QnqvWN+NQ z!9Kv9%5QU{k&X5kK@6rJHg}#*Wyj3RryDu#>nm*N|oku}#~rSNH}wRicX@^t+dibHLDj8wAT zI`m)7j+gI@Diwsrvd1AY2K$`)8MEl}F!qbduEYUj!jp1@n+aE^08P==J4sH@U41xcGMPJ!#x9c4hyI9+@o2==@A=(PseFn#q}lbGLC^-{Txr8TW!sb@y$=gnQ$urQ}YwCts8 zeVjYy5jkhgUVlD`tZV*k)L?^(AsF;hZoHux%WFhI$c^!5Adn~2CR7j=P$WA&0XvYVo$eB z8vas^tfhdp4S&_;75xK`*acDCn?=5L2W!H9eCt09vi;V(tU4)@m4TvgjZ=WYZxWj43(-G z0T`n)j1-p-Oc&y>V0M7ziTGNqj<^`Y;4VPl*jN%z*Mf&no_Hjb9p!61g(QfVb@n2g zCbTg2{{Jc%JHlA({|Xyan+@Qnyvi%84PT@4B@cwNDcpa(G{3AX7AGUwZT!=G(JG2{ zWuJ-(QLG)GQ!JK8vHPOlq{gFJ7d6VK`Cyj8^*2RqG;_1kl1|Yqg7dY-Vn8f=jo!y% zS$oPGAIBP#xb}`?FM#9Q;=ql~;-@$^%BhOoCWgeb?rgi57q3b?6we-KrJ{QRdnNP@ zD%9n~+$+EpsJ|hOCfv|&vEt!6>>(z^<~nQyD-$V+ERmI$^h{*WFt$N_mc;JDE6l~> zfilg-TJUw-1x%s+5M1tJw?dOtxmZ-pIg%$DpF282F!5uCKFJ6jXPgs>ZWaZgHf~nm zShyWPog8Rx0Qe|?>U^OX@38xWeT&5e*OA~z_Wd(3ab*hIY&W|t?#wnMdz?>vjcHCjTZz*JrEQd6CqBC8$oOCh5?%=xvy&=?6*%G+?iAc1;{fWwX%6 z&opGYe9k(7&iPQEs*k-(@$t-Mke{kX`IR#3Lu(J_<~-e2<*!+CF11LNSkj0kvDd^G zjaYy7c1dhwrhB$rMDr%Be%twLQ4~!Hy!LO|?9MdHc)|@5P&(0w@xZ+_^ zOjey_7^~qq1jA=QxA2#e1CwRdp>uW5#9~GBuk2-e?8K%2%2v z6)II)CE}={5U;FQu)Bf~r+dX!q6mufE+VrMfK;xxsU20Pas#~b7F*?dmr-Sv>s>|_ z${5_=jQV1kP1*!hwQevBVCIwowGuR*X_-77Wl1Q0JE;&V`N?Ev;lO$bYLUUX zp^-O-gao;uBiSc|RGXGggwlY-8jyb>Q(&Cb3zzBzP94ZdRYe{BgB}%~NAlSIF!%v4 z97;hwPv^h_3x?dN1a2Ub%cX``L&InyGvcMS`7edV*Sgh0S4qkSqO1N zVh%0Oe1gQTGd!Fb;?7wtLS%i&gClMxM54GeYZkHm+tMu0eDu`U2@*EG$I4vey%9{U;XiM)o--x+AFm)YcFn?b3jd+$KS6h+A6#3yd;uA!&jpCpImV6=ppw}*u z&<(G>BC{Kd34mjd9LkP~p%hz1u`c$fD8h@svXf@u(ScaDN}z(BibSkTWq9^Z@epRu zfn@2S8T-qzM6MQ|v?QxxDezu(7ymb4X`+JMl38KLe*=cR zqiZYRYySX@N@Fozhv)1OJFzGiZJV&9aI#@@jaHD~c&62`411p}ZBW4@$82J>kQ>Wm(o9-988_~kAZ8*ispVyuM& z2A*6#3BY|ftS4WVbh?{OW0{{zWh*linq*D4V@fe}lY>e|b&N!Vc)iTZC1FtN7gksm zL=ZNXEMSq?xd*7II%=yh?qSifTdnLxm{wtbNEQPqeXAIE4|^Z$_{e+Nt^aS!|NqA= z|4+ETVab>1GK9rpaJhd7TVl(c2pGy*V?EzxD2uMW#cq7G6J`?nmTdFvrY>T}I?8yXTR#-k}DB*kM3)>eb~MhsH*9a2lv+666&sR3G0 zBs|I5r`bf5DiEb|d>`8i9Dm@pdJvNK4#?V+N zPL6>F`ce!U%Ni!i>5TX8w99F2Qztu7%-peTc(}~~)sSc-eY*&MioKs|m!T5CH~kC6 z!!$>+22&3PWap#_sK?Q#*in@D={Q(0w+rWZ_Cyz1uvL_I`Bs#R1Bb5_aAUSkYfdG5 zrSJ$9E61~2n^j0n5MW6GT;7{YO`sG+cy)ApOMSQ|uxKcV_7gDw{ZiaFfw?jAKR1Cj zgx9ZleZ&&#j;W=*vzBY*}5iFnC(-z-`9&M%+A z)&rxA$bXhSM|gss^TIj`j@%DKA!AL~TgSo$aacbS`Z~dVxGGgM3%yo+@4sMXtxPV!B`Sl<3j;^WL zr5p^wc_kS#alxM1*~|Z0@yltID9WwE&Hxitpw>&$4N)}4+v7)uX1!VIBVO_@-GaG! z=~m*6rI)@Wt6FmSB^Jrqx8htDYo2ycijHO+CKqBH9`l?yY7HtV7Eg38EzQwfKP38R zv&hWDR+i;dj!_|>tuu5xI!8tz(I}U~dBg%&fJlY%I%>r&h90$1AjN}2!6MZQ7OGUj z)}hzmfl1S9`q7z_F}txzQD`o!6st)19C?aFo*RlpDmHIy^332uBGm};z*3*I zsuD-X`ECG4vJs^p6~&m zcq?7Wcc=+fk7PK;baV`aZh*D%PS95Dmr<`I{bd%zAO4;Q@*d^nh$cs7@)GfILZWB_ z6cp>l2#%3W#o~!N9aryOavERavwp(x`V3fSf= zoN*k5iQoEJ%!NV!Fuit*KWDL&jH5D7pm9pRgMkhm^1KY>Q~-k!sLMWt29 zl;E2}SjEE|gOQE$M1{CM3uepPnVX^K%>ChA}XcB zQ$4aXB8PvbWfLuwpuxs``F0}7)3(cGRKU&JmJE;*R1v?{yS#N2uw>go)^=|S%Os?) zu{GSg1?;wc`W@Cq8EvD)m+!DzHBGw;YL+wcQpM6a{r%=;`=pQZ-KAXgv=4%UAc_2#n< zwQa5jxO~wNm{0vK#?EIgL$_8E0~;At^af9g=d)!%KX?I_7SqIk7O?gMaU|6f#;GJ8Hxpma(Zu&UX?vipF?H zwUb_fiWapNp{HFEw=ZIkgx+wygE*SD%ZLHmBD<-v4%EBi4Um|6)AbN&%4@<{%DS;X zM9xxn8(MAGQr0h0u}*HpQnLY)x?YQAtby~yVXE~?F_Z%5t-veGSfkq6lTilH`dQsO zYqI!!8SCeXC#NDBK@neXIe0ToJhGgnu;0Zi%i*ASRjgaia6O6ml|qw6{0ipQm1szE z{o(&RMclRm#)Pxt(G@JknIk*%N>Q+axhxUIfi@Z>e3Jc8uk9-s&WnqmR$xOgSM*zn zZLnPN%u1H7&!;9bUSq~uOK?A5iJ3~C=)VfxRJtor-|EE!|m`_F=aJd!G04hK42M$ zobv&D5j#q8YuIB5O&u2S0hk*A?)je!)sWV`5F~ zub&qK*1{TiUW{D}lzHOdTGpXXg&bLavqZX>n%8g}du20Mlr;a4Wiqx$6o16-Wj~v{ zhV~UWb=V&_{PqVB0^r^UTy;b){31j zgzKv*6Z$^fuhmIgI_ij%w#70YqKM6S!{OF2f|9~>8l^JZO402T);CzLSd%%74w%vw zegX$J6nSDjcBf0fC$@xvZcLi?Qo!Dw?zDlu*dBLo2aO*rdFBGfYNP#bcYH(DTI9&8!EzE_Q5&*jy1mZDw%|UM7Mt@iGeJ2;0Wk zQDcNHJEU0AXbZNARZ+gOC^2OVyBjFK-NMph)S!n34=_00Z{=|NqDl0>M8Z~VwdaXj zwqiHrvbb+6ylJP3g^yjPt_V??Sv6r3JMQ37F8SBLUEcv;N`7x-Sb6>E2jZ2i=8KE=+Vr|6? zm;N!u>Fcc&x!?-T(D#bRzhoVn?4d5(4H8P7fh;1*250=m#u1xHDhQD>!F~NDYv!>b z0@h7LXGNmTS8OGFTb%fcJ;2@(U3Xw#XqMQrgS~`Tx3AeF;MBse**%caYhSbX zJHIVkmU;#^>fus13L3xs2A&vUMphNxw!1cUVA=X@tovhn!3orR6NGwl({60xy7M@?YiH zR(VCV-o^R_NP=7r{aul}3sUl~SiFms;ffkDem8CwTp*6`W0^2ya_$pu@2H{0w`aaeQug~_e*0_R3JhUIzTh-YQ@n0fZ;1$1A5!_IF+&;j9 z4gXP8X$jmZ!oKS36jsr6i5phBOG{SnXD$Z+ke%PMmPE}%2YI~n{Hs_y>dQp-L0(_< ztw5*xSmalrGwu=_D%dwsr6djZ0dD#Z+QXQJ8yUidaB^KNaPrzXOC&ya^0omq^@UH= z2iYRxAj1U=qRT*J4JqNEjr}dyC~Okn>i!OYiTi25hO;b(%H(` zL5)fdS6r+*!%{<5$r>{Nxb#)RcNo75%68B&-kz-%Zw%x2;dOc#Z-U4Rzp%6MI-&A1 zbp+uW66;bCaqu9k?<$f)vr|?Go_UT`^54N=twYLDM=ly4W{r4>yreH$UeYJVA7+`J zMym)RaX*DSfEJYa9Dy*SmDe0)hn=O;LFj!k^E=ira{=`kz+q1f&oX$4j;R*^2Aii7=;w6 z9&~hT6Ly4TDquYE#WEhL9t;&SM&ZdsvIjIvDhMPSzWRKt{)=UtC&dF>F5{7E1bSc# zgNOuAiU+n-#v>J1mf3hu$+%K6^cV}c-)44xFd;ya7t(byPNkqY57J5*k5r?j2dQdu zPm2D&C_Tm^((E#`Wa~mAPzXRhsB)#GAeB%F_C0I?Hbp84{5PuYUzU_02{zgraNDxs z!L3TOWCP7;BUViN2UtZBUf}!P4I&P&o71;zw}{Yi3721%+vlMW{Da zb$tp|FQ}0lsVaA-)X!8y2?kU|sZEfo6QRQNdAzb(>WeH))fKaxr_&r|0iJWEO7Gk4 z;2~aNq^!OYkv|q^E)A%~JI7g~y8N)Z1sIKJ2J0DO)e-ie6s*uef zqF1qmd5B#sdn?t`t9cO#Z4B64SnR#xFH2zTAX20ldxFKcw>hG4BcrD@stfakN--iO zNR+B5vH1iuOfxaX!NV3^@upW`3%a5#)auCxGh_OGi$j*{!`T+u`Q=PJ{(GF@$ z#v??);m+_xqDw2=uh{e>a}8DoZ>S%1#~LPK)y-A!m6DO>s0zT&ubn|LPC?;m8S1&A zdOcEMsPBA=MGsNdf7x%TWn^1Iqj)l?PLEz)W4p%-(z_**U9~W&8fwhdr&vr|wHJVc zqbPvXgWM0WZ0Xe|b(EZSigouq$C5yx8ZzAevRvYrw@MqQwuW>)K4%Vcb=*y~Q zxqt@EXPk>>7kG@g^CI^Xo&Mq}qWlnZ#uU*NxXQm#`udWM8LE4i`0Wtu(!q^!yxW%_ zE&T4ilU4J!!b5?MW{8U4k9?N1XIp*jLI?fFa;c`JIsBE#ncQJuI+T2fwe?Jg9y-KQ z#Sg#2#bATD>o+zy>@Z#P6=az(8$3>W>1dFQdr$QR$AX9IawwrGC=WiA!Z zTtJuJCq`ey4EVHo;WA4`=*UG(_Pj$)#l%ajQ{9~DrI@CDOEsZpBfXT$izJ2fVbsE~ zv`@^v%u>XaOKfsA0z_rh2&IUDSJ*&jfkG!%U4iSvesSdrt7{)x7j>_)v9w2AaFwOo zr`N@ytE@p}_07Ssry7OXB+zF>)F14&@XK$4z6>m*lS6P2rRy~8x|clt2h*7I6s72A zOERxv3F|zijzfzbe?li+wgP|t$&%~k7I37|b>3)}O?!*IA#W z!fMEBUf`f*D!;|(sGk$2wW$d7c_v3ZpX3^D;KkmURTU45;-Zt&Ax2E*lSD^DG@0Fbkr zXD!*@9Slo{*PY#!SUm2%MB;Wv9FF0WJ&PZ;Rf-*2EPlqt@(k}=9Ys<+Pxc{!5F0~z z9r18Hk75hOXV-Z{(d1DcFFuXu0XP`&c|64IfcN?;E`cXnJn59cTeMu2i?(X#z+??J zLWqrHX>|mqDu|d@9f8o>x#Hafo)&0MM?NE7UzIKPCGciYf4+5i3wA)fSck`n0d;s| z^*w|inj&7R!(+vTI{X=sG&+%!&G-F8J{%!jX#WU57`B@h*w!Cl?hd87-CvK-qMmWS9`C5kph2{!mEqEHI}k`uug_b;CNiNugh=9fi>(wr8`vni ziLwSDZKXKTK;g+usm4>=6_()&SB9RiQh;Z+xSk^MbV}s{c8fi!)p+h{2t13#xP}T( zaHDEG(S#?;D0G6JL5+Z?P`uKJPeJR1Hs%?=2Z*sE>@En=?8ZD6%5wNM9x1+T%%i>2 zv?e?bX^BmE6YuCzDtcNIUYEZ*O)PK1C$kSkvoxLp``LYIkc(+zS{k2#$UoA+{yfpS zDNn~y;+LADk8c-Y&3IFul`D*9e3~^sLDQGXg=H0VatJ1|^F(Dcp2Xgt*_`+1Gjhd% z=DgguNRpk<22|w>qXk52ns}xK1ffWrX#p-_=F^gIgckX(Esvhrin~>#brU06@j8f} z+=>@a%f+;==9G&#e;hnn}J;daXEDON*u=+z=}sy@f9Ycf&gK&f#xUv$$I5+vGde<~k?)d1kTS-w@j`PRZ6H1q*2N|;TMg~vl>fvKG*Ql3x^FT4I!rzWfKuN^HBJy&6+2Gk7 zZ6>>tJsvvryA?ztM9D*RZEU=`YrAYp38P5w#v2C|N=obN+r-3f{5cpkf9=LU2feuI zF%7R1xAN|(9+F5Wmj76a!SyZ6n5sypcvuO=o!v2okgr7N!k_=#`I3sOd7`uGxI`*kJ)j^8#N9p6a|^_j9+=k@h(!p6e_+j*sHhX)E9lcbcypx3 z_2jqWHMA%1fLCEp-aN{N{tPa5vT=<~q{@%>Qayw7(supyR)dE$b zXJ2U00`YiXp1}8Ii%lH!^a3DuFt%OBo9~mYT zIe1dvkg0}CFAyR9cykX`m?|j%P<3ZN9-rtzTjfDZ5?FdtF)6PfZ%hRJ(oYh!v!5jB zOg{`{1;Xz(FU+vf12e=%VU7?(ZsX1eZ$M8TT%g*hQs}8lJlz#1kK-!U`GYLi>U<=G z`88sQwjvcHHr~eTXWAVBvpnFI&0%#UEaX&aG?yJlj}f|uoXhZe=oNyq9+U-7qT5D= z8R5U78bqiDTd2e%xASNZch!ti$;7L-d)mBDwY*lhdAY2GC9f78a$NGbp{oig1q7V3 zF>Boc1ymqf-NEbQb-#LL-ho!xC+6HCTje7Ka!94I{$6cFn@OC+!)hb{-c*;{ASA>3 z^YPfU+S4DSB)nhlggnm@&)g~Jjv)hhCt8v89l#&+eUq9-O=tED;7QSvqro^0Eb&r3 zAl28I=zK44ELz_sDZ1k>-pEVtNdPRZBwhuCmr|-u$~r01@2R1%hy^NJ{=cLZofNO# zRU=vmj=z~1gD~al%iYpiI-Ccvq>ZD4EF*3F&!b^3MjH;Yjr^WTV zd5nHz`-|d%Sg?f-X{UaZLl;nBwzgj$t z{v}_rO1mj3rBXwCp{!}=27BII7IY6?Wxd-)(=DNJHld+rh& z?&b7@R^rmVyiUCAnXqwS1CJXg@rw~KC?sU4A+Onea>8*3Ubc6e8W4*uJ)dUDW@{<|eJ!-&2>c^akVw(IA`pMk+m;po9E+AFq>QYY5owuDOW_u-TF7 zSVs;CbX@|cA{tEU@#W)>*M2mSDcL4T)-GJGyh>8vqQR#m}-ImV=~M}mlN7){{Vg18``ULf0v8_=zFxRamE`$ zVZ-)81DA&7hG;REM@P+~si$N=6@|q5u4I)K9w(>nUg?z_=`xb?hQ}r0hjspzUq;IG z7ziH>aB|09H83$Z688%pAIzUik(1saoL{W1%b7ZX_;z#UF2XMd`7UzfUeI7ysQ$K? zGK6;xQfu{Eu0X8FzaGNZS*ECT()loh#0QXHZ|W%c5s6=h@`++ppfYBOhj?3dOnjqW z|F)SOHJq2i&E(tRe6Vfx5*;7rMcySPKEltlog#b$CLFmhi}VrvDR#1C^$6aMVJ{zs zmniYqNZfX@ON2j)rR_qo@KN3>_B|!@X^uhU=fWVmIAR)UOwAGJ9_1?lRrDB4Uh)+q z^vC%RCHfQCbjP8|PoCp(B`;?1Q;hu}9v#KMV=F|@(Q;iqW;B)ta0nZXb@d9NkCE%@ zyT))@SDRyaQ@W{Z3~b4>#Uo=8nl0WO%lqPWWGqi{&c90C{v8qY6ilK8S5%<&Q@puz zz7=@#Dc-Y|wd8eJ!JYxU1(LCT2zCYG=XX^8nd5mk zWIQk)tL@n$bOLXrey7RkodF*W`YoO?SoeLf)aXxXvx)t*f07)9XV2u&c+@6OygmUQ z4SAw$0{8qzPb6K}5(zn!-Y@X;*qVaIvVNnd6yG>T%6CwlypFCdFQf0$lpBAe2W|0x zkoW)mH+saziM*}XLwA!YGTZ9HMzsY>DNW#U2&MlO%?s0fuzANO}*yQ>$3R#8QwAKx|+)4 zmlE-tJy5?ccPtSS{VY!pyJAiA%j#x8S48QbiN~MijbddM`O`Ny{BTXlvS)cM2zv>H zJ%?kPr6m0YK8*U)doQA$KNcrm#FAKsnuzHy@poXYP0i%3JIW)d$$@m*u_1P)Fsy0n z0A!+yl9o(OozHBhqU@vHGc$P?cxUa)}81@%yKbW(z;#_J}~29R|c!6a)Qx6 zAVI=@oJh%%RBX$FZpjnZvUprXF*OFDPbJaNR2&Cy!zrRsHeYD}ie-J3sEh{3vw1J| z15#urAWkVUI!yLLV=`}r`aV6Gsoc-`|FKZI9{*ZHq_x$v#<(!M_ic2+j|RD@ZW_hSeeJYg({eoIYjT2c5Cap;n3;w+6_m9P!UbNx|#0A>S2Z_iT{;t++m$_iC?B-fBHU$Q-7e zO=?P{lr5x@RL+&yYrzwFu6S_{_y=p!JKm;2OBf*-?LDX4k&)UDR>(GKvsNHF$Ag2rpVAY?Q*O6hIy0>WIYkjra`6(@*) zyDeox+~RI8ZLrfyP^_j>r1dbRhW-ID!9yb&Y) zh+V-LjylHA=Z`~+<;>@|b+dg;l@_2OY3;8>cd0|UnxbmN=%5=MPXUM&WP?h7(0Kysk%2aX&A~i}CfbtQm7W2B*>P7LHnp*b% z(~J4g>O>`HXatowbO|42|K6eOE-q%_&GNB+?-0@;UC5~67KjT=q@rlI6e@GKcyK9C zwU%mh)2&U>l<7h&BHudZPyGd+ z%iJJ|q^SfN!m#0p1@?6SiOc!W>N1rKq2wB6QkRw`t1_1?=fATz#XBn?J9%RF3R3;z z@(S2Y@=Bss@=T5y*vw-7z4!DM8_e;6G?6Z2awdIjHJ=f>dln51jf`vb)~}Yl@BzP$6Jn9YF2TL z#J#CeOmCb?npDF7h_I$^@Rg^|9s$J*_t}@%@fW&SB*E)75xbsrn$bGhNdd2mj)Ta( zl|%=7oM5j2xCO=SDCICI6M6p{5Y`rsyU`eWWDZpRejkn%Kv5R;!P9{AC(1M|8J8$-H5_ft#?mjG!KBW0jAH71(>w|vK zG+%K?1zZ%yAL9jVVTtp5XwKlQEE2M_Qgw)?pJNYqf%xEaz6k5b2g>+Rz^`XF#bVb!I6UNu>-%_z*zc(a zwdIRzq46=-a*^IFu9cxL5qIv#%<3zVyVY3q#H`8j*br569g*{M9l_GX8@5q--5tS$52l3Qi9(Dg-HO@e8Fw&GWeHF2p zI4=jBDrtysPSbWoqfBWjLaZF8iJ&+GG+}LMFpvh`wS_5wDtt|Rx0iSI{5&^hAx0c# z#E4e=cwad4@FbeN|LqU}HkIGr!Cwpncs{bZ^yOm1QOtbb6AylkJr*=p*mrzHVi9?; zt?1^O+KuP9F*o;3bKtxkjygia=<`Z^zTs6pDP}>* zcPAkuL`>HoVUOP>2LH(Sph23S;zvZU!~AZrZuVjRe0|9+;#3thpUo+{(p1*GfaZUw zdB-E%{`Fr}K~puq27}vD@%j-=s^^JiM^JYxg?1dFkw^S=1fnBbDni5_#mv7<7-tx* z!=FFHl03&)AWUlLJDn{$9_Jt8Fh_NYR zrk~eK(Zf%ZxXQ@^#YGr7e~N{>dGqS|&IT#5hq*P!_+>Yr1TshLk;-K?^@4d~-yT@0 zLr(Mb(4s$q)QB~5|03iSV(@9`l&{3u)1cwJsQnY~Xt})lprcYd`rv>OnsL}q{11H{ z`2^B+vl#yxYQ@>&$)EW&I%{(NXILI`MbsJ8Yg0-8Gdzy7X(buI@*g;c=mBT>b&QR7 zp5rZ?i)E$GmgJt}_cE2XP`rE|%4d@}dcGP!L|x$NB%gyWaO+p-?~dC|W0|`0f@mOH z#@cD526u{}i%_&ew7AH(1JmV;y!F2g!#ywY1#mPvbBUXtbu;`TfDgM)=pAof<^#yX z>%-nLw73epp13bqdq+9Rq>4HrT6=uo8=?)vt0Y8ACMTFfAzFu$ ztUn<$(8w?hj$?dD_FFBqJDh805ap$BP1Po_eQ#aW`X%nS`YBWnCWH846?#M%bMhsi zc!X(PuyZz#Y0va7lt+kGSrbQGpl_%c=?qKK(ooB1aAAU*F#XJQO>hmz<}GkBoNLpu z=sd%<7Tsz>(Mh_RNExoAhFMk(Of=b|D_g0LJ*(6+sWwep2%CkUk2V<#mOLNr8OS2@ z)$T=TkgxU*4f>aSwT_XNdlx7tu9MbtsstaXM1)}UZ*Bwm>zT9P;ttVLULWk+=m(PET% zrK+fQHKnX8^}~c(T8oHXxv0BAg9)7X4^zN8o;pH0YUk&ke&hQO_Ewsi%2B&;&#^Oa znicPKgW?L3=fN7P^I&HvE1d@mkR6`BI!M~_lgX$61|J->Pj(o~=K{_;RyJdI+eOWmM*E3Z$b$W|5P0{a5M(4x;#T za(a#wV=nPv^U_m~C}o^vK0mHrVv++TqKo*{;tp9iqg0-gVETKY*mO;*8);8+^xaek zEXJ1KxEOmR21r1Rf3hZ}Rh}zGcRM%5+Z$enPW{$B!H{al*v0V@8T* zDOy{xI7v&)1aB@objL`%f5U&GSNIaXLvIK-Ksc+p?ihjhQs!`k-4O2K6<&_?7_aa* z2uFK`_aodU-YeoHBBH#)ccA4W5N`Gl^t-g=dPsI~-SGroGw~mZ|9=2aaI5OR0C1}A zFZieG+TjcMrs{f!sk-HDRdwfqI;yUBn5t`s=Odk}YlpWZOx3l+RQ>u?T|43kBB;9m zKyPremh6w@i5jXWS|w|98xHf)9rY1KWToJrzEkmkQw;siR3u1@JW1!dxd|# zA$(IghsB1@lWz=hezU@#8F`r&9wC_ z_DpTvk%YLvQwNRFTdZuM1^GsVqd$m^Ews9rs~>NnHN&bVyrtF(dk?)@YK=PtN9YbW za6C1B4^?Ud!&=tPaHq|iBV6CdCZO?C_^3z6jvqae6rG(u8sD)5b2EL^P8hAVSR!F7&<__6wbqg%+ehh2XQb#3 z5b9`(|G~m+4c;{pC9Sm*)>w>fqqPf2k5;uFCRVl4I)zO|PzUTxyh(?w5P!7M>h`ds z%dO-}yaOoNdRN^}nH-MJy>$m<#nA-+!T2YpP^Y8fn~6u-qOtl2(N;SYwhsi75DW$y z>R0>3ly=&!0mEW-$<^^icv!%BtS@r z2nq>)pw6VkAL9oR<4gnzfgs6z&fDJRr5g$VZ1U{h=bm%#d+$Bxo^#(0)&di)s-UsC zU%_~Dpz}RSLU~=JS5o?nzd(8O?+YvFu$mLyvba{v@NB4}jgpjY`T+$`=!uOVV1AZi9>AzmM5y#S(R; zs>e8cV5jEq@tQ(C-2wez!X3=s?}iE|6wko!{&3Lb8yE-!8se4E2P2f&mli za$)Pmm>uscx#EGHtoeL4HBWd@^SAqbfyqm@2cK*+i|%SHxk&7!ig3QF_|c~r;KQl+wR3n6wR2x7 zuYrsWDfuSU*b(2sOF2uoQbE+FeNiFTj&se7_P2i6JJ`j>G zML&eZDMFp@`HS6@!JGCky0dXcP_kF@Bc{F;=-rOG$(osicZe?N?E!dSCLb>SjSR0S z_&3r{nkKev!{1k%bj^?_aJIO+jj}gmOA1wGH^%!1Q(uab10Je6UQOU-;M}H~Rizwd z1yBia-3Ex(dJ2f#dMa26Rt3xk5Y+T2XXMLcZFkI~rjAOJR~L!5>L@p*1(9;OI8aB~ z;$|JaAg-Idc?X;JFAQY3#2 zXs7wfrj6o_c4|xAvr$!CP*1_+=b&7Kb#;gb?PPw+ zZuEChT1r&wKnDdgzd#4x-|u4Ol&fDL@-)g%)i({gYk({ux{13qvJ@GQyY6KW%j54v zo!gF=MUOkrcMDJs*u=O-`;)ecU7a+R_F{#qe{nJ8B=n3wE0f>$UC`@B?_;ngk0kjA z;KgFhL(aJosPIWVg;{XEhzP5fJjvyi;<%TZa3h)U(yG$uY|)nvcJLFGs(xnq+ZVQv zk@L4H<&f8+90&LokD<2vsB^9#W4OUr!_oO*MZ|ADDj2?r=4DJ{6WK8<7HwjD4>%{T zoR#rgaP+oYY>MByogq)q>x*VcjIM`3o3`K3^!Lb^G|NakwnimFqzq zP_E!>H0qo+rUN`!15h@IZ{hm%OSUeP4`~$Fx@c+AbMV&w=y655NuJ7H}7M3?w87B~poXtIOpp~BruJr%sEoRnqG zX-2&T;COBVC6`gs7k>h*42dQG+5zMESj|XJ)gT1U`O#ujl(b|9sKRYJ+kDbC=KP#zW*%<;fKdf|VYBiI(k=$9iLAs!Zt-wuEUJ3~T) zgB56Sa0sHqf*rPq(9kf4Lu_N-YY}0KbcES#VUEz?u+Xq5{Dmpb|TRk8|Sdqj}LR;cd$s~ty!=b%&(4iIFJu<=09!|tN7ry!NCqk7zdRN zZA4pGSVN#j5O~9E!5kTY2O;`%qS!`UG_kiA!|d%q9{vR@B0!2*W^Z((BiMnT$jJc@ zJfWeS+YqqXA^_`%jN}fR)8=%fGxMLr$?jwK-s`k8TXayOJ(uZud1bb+T$}#Zi*KoS z`HLdik(BEV9Xaxj(UV4x95dk#I|~~*a_pGV_l>-5^aEq;JmdglHl2k{c-Hm}Pnc5lJE9 zYUd!&$ysk9+`( zbpams1B@^Mzo`rGq#t0o3D`W?TbsPICV69mGi%dTa9UMN(G_Z9c|Ev}3M}vg3^4&O z)CIWO4=~sS>=sf7U7HO+@kB@+Jl$<3?h2`c=)-|$GaVfD_}WUe5~=qUC$k^EjC3M33?mtS+PE%Ir~9; z8c~ktOOYP-y*Ln=#eNj_s3sYw3Dz6lBf<#;r))Xej}#HESc{-LBGYEmoeyb0i0h)- zX(cLAaY@07g;Ad9rztW_cX=S((QZxKD)vRCwmLeGG_bjWRWB!k_2Z|AgQg0)9qGJ) z(X)_gPm5Tsd+cW7K^DIjnYgN*zWNI>PHP!`jEW%8bb7P^_)A*XW(ICNNllry(*hdr z2_dkto=}~6qIH`mO2kCp6}7IY3^cUYcg(|EdrLeOoz7ktuSUPhriwB3db`%C_`RZ4 zOrkhgZE#QoQC{x< zleUj=M~(ADg}FoB9YQpvt#0OtbO(9DdA2><9oZv-@oaZ^I=6WvdPLaV;kqLS0iC%c zv?bI%go%pyhPN6&-5g3D<+i8u@aTLcl%8<6(;aOhcId?{rxD_zui+@ur^%-)ly1XL zbz?@W05eH`Kfqk55Tg)69)5BXT*mISF>#*I?=;siYpSYU}MF+y|IaI zuE*xUP(Gu|;CgV5iqRH|g^3$`EutM8q)`)AT zqGpQ$DZQ>xz!)4OIygt0PBjTfr|lO)&y0M*hzeKvJ`?*=Qdp(pyOc&L76oI@ajb@l)K@K+{XPJ* zBg9#EbM~}wdu}rNSf~@ziU=fZiHv%iC*?9|tF0Si^0W@zfu7C|f#%s5&*t`_Bps@N zo<>E}3sgZT7|^^zXaLC}GF}I1J^EKeZ_qJWs1S(|l!O}bHB~opjW;9O z?9mzk6w;(u%@>osU9K?3Aa*x%b8|d`!A)lyjjWBlsKjH8`$q2LymmSGI~Ft4G0x2g zf*jIbq6zswQamQDRc1%~jc6xL3-%CA=^Ue=997cPX-G*jvSCmJcwcEEqTx=qM7-bd z7PeSqG-}5`Di9+ZrH3d&bz4{;x$-QlFV-|_$8HqI8a1eA8W=`&Fqj+|n25%W*`3n; z5>I5sLVqdkEK$ymX{l-w1|Z3FEy^-F7X0bF$c& zIXVqZB6ep}?-}I|_e6H5TnXbnQ2;9p&Cz*|M>DIU<#?japTRjEhda_^SDmmOoiMsp zS5NATK}wj|(R>dp5mQ=tS%i4L#Yj(h7C#jPzC>j4lk|?v;uUzSW(h_0OExvme2}q? zVo6Ic3lnd)Y=GaNx4foxl$K9wfx@^uDvK97x^XmdlpfqWBGibg1h2?coW|Q7B?h;u zpR2dY;%6xcqj1s%t5ZJkAqjq@WP5mT9x;ZLaSHX$+!5UDO7_ zZcQ=9?b0V(AO^(b+7M3$LOf|fh^t!1hXv_R_`)Mq_;Fu2zjb_Wkp7qzt}gRY(5lEX z%6!xZLCpm+A3;Qz+l9&~OY6p%f-2uP*`uk(b)u?Te}K9O6f-TiE5}Qez$kcw^^ITc ze#-uUe(~?W9?m5d%Y9&?LQ1JY{;4^{k_RTDv9ZUcS9;|Zi05U zK&$M`?HA#sXdn?KZ4z7yW=H+dqMrHbO72r;x>=iEGFVqAf$(kzkm z)S4!qqTgfy3kgQE=7~@_yu>!e{uBq>xqn8+xU9$|<0LYSi5^?E`eBlN_FV9_FU z=On%2;>C;hiS8(f`U7CtnylWfN~VKCQZIJ|qTCwH22m^%W++YKFuR+DYeF{;jc#DfkCNlaYqkkqIi%&y{Qkh`8oLjol_h_7U) zK$8aZ->G9`W)~wny7A2GcnvEPdph3Hgc0**g?d~DG=+*n^*E}TtBuX(W!vxxJc+1Z)N+<)dhnK6ca>rh&Gu`#j?(+xsmSR3FMhl=q9qVNb#&Hxk~z^G|7p)979%M_9O|G$hVl%bJ6 zM1@C$=^U@{Fx`n)SeS0dD>O_G!YhP4Vo~A2VS1?X3d2jy3y8M=q521-4D>|*qxBE* zugB$hd^r~9UcMb2D8m`1hvUV=bQl17LBg>*;&!a>26dkbD;uTc|cU1Ig!!GiE2KidQYllI?q!bNPz=m`)sq46+v+4An6obI@D(~kZX54Jy@zD zr4DyTlF5uDJgNr<6M~>0TCw=?>eN_YR)zj#kXLhui z(?o#Zr_t+}NK^}H%SE&7WanZ+E1u}qUgT!C=>N7V1ki<{UYG9Z6@h7Lrp;Q!(OYY~ z3BZf?LY0&q4Y#~RWI2g1R0UT=WSF)`oX_@Xf72`=%SM!APVoCLqPds?>Z!SuYd__J^;KMl)u+6%+7z+=ng%WQ85n7ji`aeS zKB`ig-nEJfHZp`G!yng-1>#XXUUlsw@4mKIB=&shnhIi~_MV9d-Iq~Q-+Ya%w9%;k z^EC&?)cPW&h7PFV-#rtfS11%N{nhzE4iBG-jWT0_0uxZ}070@9qHC|adKqeKu=PI@ z5gtf{f7xBHtuDJ*QDjHih^AZB2hStC}F*H~l5C3S_5QDC=xf zQdFJAV)0Uo@wFgBtma!G`t?anwrZ>BNaqKFFkFJ5lm}@gBCk&>TPc?JNoXEOb8Qhg z40B_OfcUactV^}KwoF{;WAWID0WW0Ph(r5c-PeQXsJ>LfJlv6btx7(|nPts^W*g;U(#Z*<0MB;tCqQ3ri9E!*kkO6&`W zE{v{?Hd-JCTz5tIseG!5F%lQ8`=yD#{X^o8Dy@3|KY<_X>%IQ66cPeuiuVP<`JhyQ zO83>70;?6Eiwjo z0l=8SSxoV)gFny0bZhxu4Fv02zxU^NTtHs`l<0sIG}D`6{&iQy7EdKQlsw|O2$Hh` zF0E!BQPkNXg0DaBIWUu~+gk=0ro<%ijfimlxJub8oHukyTa-s;Dk;G0rCMfDkW%K6 zH>9}=2}av4rrpq+YtM)eZ z$E+u6sMCBKda11vuA!~?>O9eAbgbw%v@e{Di-wM2FN=SMc289k?j)W~b}F48MGs4C zI*PV+YVU{+6eAQ95HeB@5FAEY zRufX;737y(JUk0%%ZKaips06i=hlT&iT#$+*)bAQH7m1ghpKsFpfM0UacdeVT6$|k zRxZkJZ3Mc$xwR?VD`6_Bw*wnk2N%!8YroCksp4& z9n8ds1ssfM4vPzSctAyiF@p`1*|pGNO$X@S8FLkTNjUDz2z`kZ9FrW3t~%UVguMIi zyg$MyNiXBN8#sI2H3RX7?rMhT`Mb#H-Fob3Sc3Uu?~S(Vsu4vA&`MG7?qThX;h5V7 z1G1a&dtm;s56fJUb9k9r3DA72Z3H-1th_suG_CyZ9&Cl2u)&@rTIZ}|N5tnj9`>=g zn3K&u5!vIUdQKKY#wUtC57ZZ}raQ&V@x36RAC4cxj*5==Y-XQ|pYEB@J`;HpQrI!E zY(if=zn^ex$gu**7OB4&cyAMS95~~|)A#0}M(6IGiM;vu-Q~miX<@8bJ|5f5CN>A| zz7y}mm~zL&8`wu8`hGp+WojiFsSD4{hGO#lR}jBT9!wMm?zfuIPJTwFg%@&!}G=}A`O)kLH}*o~bK1rIhe z%FJea#F+Dj>h2F4NW>D(I54%yX zZ4W=lz7VY+NoN(CZhoW{i~rK9m^&7hL=}y>&zEAwqpfYWP86cUq;uUO>WOfio&Y4kOLky}xX4=I2VI2fgvQ3SzGhh@0+u`JNG;IVG7 z44*vKxmBQLz}6bLW3Wb3=`<~aL72j#@@GGu#;{2JctiG$D0tipe!TE_COCKG@%`*u zvEqp?cpiHq3(tB__K7tXG-Kc#kML-)QT)Ejxtp!tshWH%3K^2y6VGM2$!wa~nmYo&6Y^SO>rSt{tDN6cRYj}G31VelPj*_I z$}2#=d-5sYd-=(%Kzx@^IeJdHIzz3HQYVi(7C2~@NE1m<0;a^iEh)+FH0?*ReoA}x zllXc{!z^P}HPM}*sb5r$Xw9fuEGDzYuPAqn`OB`a4aw1d7FSNqN1<;{&BpWMR9b3E zD_C6Lv^REIjz!~?!O7Je&2q5dR`#=KF|DO3&G$_k1l8CzZK$a_)IU8w{Z^Q}Pp8wu z7n_mHei5lNXyNPT8J)4by4P>rWsbrPLnqy5q4?KOlp>&X12gH>FKH2 z)wRRy2cSGhZ*LiARarz=g?=zHauf!k6wroeIwXjD+~i-*5g<4$n0_KS8;N7_n6-Zn*5eZ zQA@DL;5X5EPE)@6TXFlGYU6>-dMvUNz$&q2&O0b9cW!dXx^JoLZw+I(YHlXtKA77P z&(NZ4@ElllGoCLN^=7||---s}clUX>S#9>wyjZhascy4k%xzYQ3-glLIT1g z^`|Hkja`TTFn*sFZCoeK-;EY5YfzwItbszjJ6=DlQjHifTEvO73z9?6{z=trp%oholF%l4NNlG?c zcE(f6-Yj2yDN}MUoCESKazfc@C1Mud)=ESn{U)VZt;(=gBJ4D+D4?`|llP>5UVXO; zS=%NK|GBFbYGwsD`zN}a=m%`XVX7oEIj`*$FE8@If&KoXL#V~F#cn*`T->37sjm!q za=b|%*u{9zN5Z|AhLJJP_6OkTXK%!_^x1~&Z*lC|=fQydCGmJJUXqcb5P0gN(}+Q{ z?6Zx}L6hUWfS%RIeCc4%8(kG{W&rk@#=@TYiR>ypT4wl zf?Bstf-Rsz_#~{C(>xj_yuI`u_J(M)ESBvQJ(tY{_y^0{bSkq1@qp74L$bKf>1jZY z=z`x!Y+LJ_>8<@lqbOULUUi0I-TLm|M3?2sL*Ag=BmusJv%mU-A67`x^$P(=%Fhy# zrg{~{CJGv=;)mG-1%@`LKOA~TonSGmAu*oyn>m>IqhV{M$LuY_j zFx>PCaspE;iNSbbeTh^^?PkG%5#!CgqB2xqG3KcLdsL#rz^M_{JIvi;!1K|VA&h#y zccd{eBz%ZSUemFG=}S}*#C9*dv(yVKkf~zgng$qf6|H%vEsba4 zqI1AhpoTQ@B5IkINAl8x%$_4Gh9ZFq*&W)Ko9=iao`n=DPN(YyqG0XKmg`a#x9R(} zS$1|(xYxB{-)!o?&dv}RygnTRn8(%+;-@Oaf%P}?(-orOhL*8k5pnvAAXu6Xmo(i5NOZ}Gyqo9thug39Vwv01T@v%`r6fzhKmFG z206r}-1+*DT;DcCM(s#DP*iP=r}k?BaALU%NswT_t%#V28T%KNa2i_?Q4p5$fjoY*sx0kU8VT!^%gBE3{#EWTV$zY-8PHk&^4l{atfNla#Qs# zZ4hOx3zLXB&|xk+mfWt1jVp;H(+a^v{5M8J5Fyl0D0>zbjb@|zGuYm*#GcaDY`ZvD zn!(=L^{qDI`XTJjDWlxfNMCI0 z$qP$Gt7BcTpY-DKVx=T)}6%)?>qNm);a&3D`6WBy_4OgrV+t{mobtjOGUc=q2i5$Mi$izBFYGe zK6~HgpXSLoO6(2fps($zA*M#Gu#5YS#)=91{;F2hAQ-I&_j|9{L4tv{RV;_S((|Sw zLcanHfzvdbRp2;1t*!jpo=xxW|BG|%{o8xsM%awh_Y;%No(}UqH>bUL*kc!|lp6vv z`29~Yqkg|(b1~##2f)ucm;$AJ`JgAnSGG8Euno%-u0uoc9C3)IGmjl=!!H~Z>ksv1 zv&5f=S|*hk9H!c<3E+=GdYQ>|y}T{2`d9=X>MhSE>LhQa0_ zOgA<+RvdGR?+#Do72k~{muaec5&3f`Eanr}w z!6EU|$9M1pTZHyWs{QDjyF~OSF`K%763ZazLyz79&DnfZtJWO%t38DF*+87q81TP#l&N&b=a;(!H20aY+=vKQ4zepEE&Ut#5czpx;D=wlB-12 z@%paa>i1sJ;<(p!SpEJ>+<3ejtkAP(}ZS+ z_~v*c3=l&>Uz9pd8eX|4rkL5KZoLZ%b&@vQ)cRuf5yA>iJPdp zwRP1^vJ4}mA5}m*#O6Qm03C_vo4cx1ef|=C&$sdvs?>{$1wqtB;NieAr5JsYO4++< z$@$k}5>LB|tv*OClxL}Ht5t_<1uOW*8MpngQ;w-?50KoSfvV^Ow zBzTt;-XK4`Wp$KQ8GvGP6>EY*PG~FzufH^gS)4pkr9vwjv9Sm(i&mlhKUJFEScOJ3 zW}A_A?|Bt!-9)8*Sx<%jsmCrN?VlJU@-LQzP;pbLROx_N_K&@O@mz2i9R`%v_(}cR z40&4u>yC}fYZ6#TexOuVB(UCWn{1ZI?qPXyQ6js+sceW0{()trouXzW6P9VC4&o^i z2@2x(O#GII9%5PY#8WIzt|(;QCa1QbNZ$rDj1BZEiqUC5e?E?WVQ0ZO?S1)OAuH_k z?_jAw4@q{O@05u=lgQe!zZN<;$wJp8mXK>S55ylU&(!Rgs+!Ht^>W0axdP%U%{ajN z;7SnZ037~&aTSOIu7JGcbEPu;@U9 z|J>3ms2JJ6$w?$eC$lkltu#V!IynSnVTuya#1!@%l6Iu1R{u0bHTR()mF;v8{|ae` zTm&zp8z>oQ(SSfouWi6~a5k&d>0viAJ||yBhV!fCvtD);K>t^d{*wPfkG3{tX?8YC ze%g#R=vk!9p)JFXy`6YyDm+n}XGOz_l3~|sMJG^nf-hQL)f~+_PY!9$Zbn0tG*`{~ zesk5V-y5Nz7Oa1WB{#)#a3dBA(1|S+%%U!HizKCWWiP{{wvn{(P*D8&4-Kdd~YSxL=9W<-N zGJo`b@fCjY_zid?SDs%y^%7RRD&54N3m_yEt7QL#3Zno69g%Ahq-tTHEA}e@zk$b$ z_lNiKVYYuW5zjQl3_>4a7*3<*x;2;JgD{ei4HX1D{pfo99%&eb4P{lF4b z9+LpVBHf*t1I1KF-E3#b)2fpn7L~~lugc_7Rnw#7==M-1izZc|AE+~+$|!MoD1i{i zpigF2)Saqo(x5n@@c7qF(csT31yP-)P6XA-!yPr?YeoD!1YczP_~LLAb8AI>gibwT zuBu?}1K4-0&6A#P>@ij$^G~sXTzf@E_h6oQW9*K-CDz!TW~Z;@$?)&l(E8UX-cwti&&lj- zA-B)Tr>|xG*eZGSTGo`UUf3IPOJ(2Qtoc>XQ{8(+V9*Zd&l)p8=jTzwbbgK3sl8xC zVoVDN6Wj=_k(&t9D)~=u*4n+6;L6D9Q%-&znl0w&kLIk?UZe!=B{`rEb0=R8+f#ke zC#;gs_hIR5tvuL=HFH^cFZ$(m_)}s8*2vC%*(kPJF6qnebgfnezAS_LF%NrLHtWZl zC8#(YN2y{Hb^Aj(E;c{4SSAV%3GFI`C6&Cf>MV0BJ6R2R8bV zh=wyc;iNrYoiJ>eOOs=3o&>+gafZ^2|1h!1Q*%hXwcgnOfp?x`U<92;VS3kzNWH(a z%?O1*q*qXgtS!@n9`YqKY&2(T)3X~}{NQIWrrtgbxyS@^jZ9?<1vaWP_=f^Yfnz2R zudi5(4g*QOhj5xpuQc#DXu~r2MBWAvM()NvPL3;SCN~5hphK0mak9w})}FmChYtZ| z8|366EV;?+if?uuBkBx$N4lROTPvkFR9)S+f+TH=+&P2|s(*S#8CuF*=Rs-$HkWCy z%f>gcQ7J|qn$+34{qe%=SGI|bnqKzGcX@VggIswNYt6RE4{u_NvrOR_N+b9V{0^Wo z9nPch^C(oylnx>qt05PRGUZCleL-{Mo7o`PhKFuux3h)vvzu93f=_0Z52whk&nhM| z-B&)Rs2BH1B1?^YHQyZKT8S6eh; zcbT=eQT!^fS!+wxB<;Qw7f?vU5twamkYh$DV^KJQHEHED7R)df%#sI;)cuTw(E`Vr zJkyuQ$}{k+vDc()B+F(y<+URrUfboP=sbbkHHvwYH&Dycx;ah~DbJ8PEsU9;_L{tA z6w7q&R89Yqd}I_Ge4UR5O#R3u?^`?7@Uz-rnIc(97D;cc=PjrDzeR{3sApBkRE{=s z*Y|L+Ek3}a$shKa>^T}8%5FJtH0r-wel!|~X)Dgi@Y`6{HHx#aICedkNOiewbk16} z@RiiUn^8&@@90*>^cuvN`a;_QfgH#6v_o?GZEOJBBahsM-eQl;x}BBa_1*2Pr>kTW zQTe`XcL!@fsEh)71ae^$dFk;#p&UQH3Y+kOXlbelWU2z9d zrR|Vg?_eWZUZ8*;s!xB7-sWlcSrpLr5_b&2SI5wozE&m&KgZ+5eMdrE&ntMB$U71z zbH}jo%ylXvLcg$&yqk227G9AZ0f->Z3ekbrW6<0C)$%rx^+>sM1fo zCX?@EkFbyBf;(AnzITiK;!XzF=N38f1qe{=U945iK7sz+XU~}1ru{63+{JF=N4H~9 zqKT}y3sSaCp1X@p;ODo7JkyrP$Sdw)4MUZ08>eXOVRF|~DCWs~*pvU(#p9m968|mi$O&vP1_2u&kY?z4x;YtXN*WAA`wHNDv@AbPa~S zN}VL&7!2O?0C>84OKH&qEQX_tSp6WIi&wjcSf{9B!s_e!Z$5aETXE4@?LbZ?O(MM~`Rq4>j*ln1U%k7V|>+p(v0wcd7+3X3{h84=; zPhhZGBwu`jb?-Ty7F=nh)!7z_r5N0F_K+SmQTL0EP|;e=XsjXtI@XAmZJ%U~oBePQ zxVqRNd`NNB%n*fs6&s)68$5kb=0AzvZ@OIcBenZ9-pMZ9I#Du@-d10CyKO#fjYMW^fA_S1U>*FSxae!Rl93dwSryOm$1u*IUT zx+eP9RSwEkMBbIl8pqaEH(8v^ViQkOt!Wfyr;BHBI2A)?#lq6}bHVk*3vVIa=e-XH z7mS!4lI648T&Gp?R+*E}HbUZ3rmz%4iH)P}5Il^Dg0QfD%PaY3wRqQ6~SH#;$L*%`lp%O_07hpnM!GCZ^Gl)=dkxaI(% zId1*e1juPZe%nx=)7Oq6IL?ILj&&VDTYVIiByTzNZ4f!>$5En-)@id5h) z`NASLHuo2jcP#Ek1~G1TID;_YE2eZkQZG?(Kbe|O6I@bp?N`ddv*|v9U^QrJXT(<; znuCiKB7*4RD31H2REFw=9&`Z+?w^A5kKXOH-{hRdEFsYkr51ov?nH8Xe*~C&D+HLH zC%SxI4EK9|!=d;Yiev@OLWhqI&8JRFALnd5frL^71 zwES5XpHy8Q4l1c5)K*R8p=ViAmYKgy<;T5~oG$P5V-3$X*pnVum$W5tmRHIvmtb`F zn;gD`B_*1eIuapj3I&lf2${P?QU9`$XCLx(G=ZC2z{H0Z0c>bNNkniUkJFZ-;NRqx z#_Q&#Y=o;~yCD#7E@i196>~6L)D!h0d2%Uh%g)I7WvoTEpJcd#oDRF6WRwR;1`+%_ zu@t@)CwaWhDokC*nxVcWD>2wSCx2Xl&^f8^WxZv`jPw3*V5Rc~*j=mQaVQnI)utdlPtpIU5l=Td667q}HN6MK!nyPH@0?Tj8KDPVS@s-@ zn@~#NMau@mFYqaSi1-Z1g`30ZuYk|6-H$~2Q0Y+chNUt3EGHWT%zraF$;vcq_b(m16+Lx%- z-yEdn(auINe(j~?WUYc+S6faDR{C1rWTh-w3oWy-;xu5O&dZ9mH3Y-o7Wyf9jjHC? zu4?ot>`xEWjBj7Ol$on=lAfM)YWZe;kE+ad>4kzk?hG(<_q}u}Ggq#_4_70mUGsJJ z1^X1_0RyqWYWQ;?&;X$8Q_b4Z*P_c`_7nbNFSEqlDQ1OAE>)otRqp113aOq>HQ-tw zxpnHoT9tWSb@hsU@P;m={%I&*IxkkBt83Tq>VK~csxqVubyxz68O`L#^?v4H(t1CR zY+MhHOf@-@cPWw1QzBhZTcqiNQoYJo!#X)qrK)+s>C>D_AAC)YR4UN3wK?)%m#ED4 zeIIr5qF9x)`trO8v>|Br{?UsR;plRFBf^H8SUX=YI${%g(dnkz6xOVyEZS6~7ge>w zIjYMwaGoL+mjGGJtHLzA&Pr9`A|Q;R?6n&BvSWsgZ(z&-y{N-dpvt}F7n}Wz#M#Y$ zwQcnpYCFTMEgdcoXi_=)wHmd>d=10m%h$GC)%LK%r#1V0@HNH^`xNAX+D-Uh7zIT< z-FXpc6lf2pVHEnk?lTHefn$b3x#D%q?aU#=iPu?m-;!F&I@B0fTBAzULMQE7p~W?n z6u>pB6F90Mj~i|2uLuSceIih&B9z;eA{?$RhfYY>DKq<2IR|RXjDKh9XB291;i;Nj zXc>+B1yCh_6{*^CDSi~G(ihmZr!1Yh6h8_Tc`1Bnt z>&C$GvTtU!MYZG(yY{rnkCIEZd5MDD9MI-6`i)DCAlEAJb=5*&?30Qb3@KKSt7{AW ze_=Wl^|Ub~&~)rWBN(Qm;tikasL_+oqKbz*t?>k04PN=~+pMYLrd;->pA>C)leMdR z;;}_F>JF|cY}BXL6f4V=;QCX@^k$>^{Y{CQDAJW(0jeVh?Zm{x!dmQ0HhC!XcK*AG zM~zC)zFeiF$paoJLQ~89dYU)OSbVO+fQnXJ$`w_iTu~=$yP{M@k6zvtbyQ_OjxB>QI#Pbsl$d?9BJg14)y#+1H3CFiWg{P_;e1q?3#v7!>XOW;Qp~ten;Fe3<`@p# za^*!0@W!aps{IplW!F8*v0MVLY>jTTNapUb1{3|GagA3EWjMcwwXJ(ZkxjaNjaFoG z3im7rbS)O6@Hq!Krv0blYE-R;eQsu9;U}`AKz^laH}$?Oc0S=6zgKl*&G?Q9c30bI2Rxo`w^S#yGAT^4y!AoA=lSW_Phx0U-?So+=uHvdK8>(BT^#U06x+Z{Zxk8{gvK)=4^uaUFYJ9zMl933Z*rz`pC}W!U#@d@tjo z0rVlbzJ$y%RN7Ku$aqSdw~t{Jyx(S!$E!5uWq$>MSl&WfggM;K_UG#Npr zeM|aV9Xv+Cu+5wW$&GjLgsub@?6vogfc>ZcR5t9ivX28f_HkaP`X&%Q2;fDqH*S7r zSlz~R5^Nj3Rv>omjn8$dj1EPjanChR3eN>LFY!D0%FzlP;KAV-8qfGCSr_r4O_0z8aB91)xnNR(xnbmfbq>4Y!POJ zT6l1fLkpa(`&8li5K7ch8+6~Hq5?ZfXn5-uu#6&4D6)9 z2XDxMKqM`-@ie38Km(l6`#hZy@?wL;zQsVQ$-6|REaW| z%8m3|B{M70-_gAX>{U4czeB9;zB>spLAE%<8u8aRhIq)pZ$ssxGEbG!@Z5b64qHk1h$dSH7{W@U88>JkjfObND*%P~(UB9!2 zP5zC7zrtxZZLIuz77vvZerNHqg}Z>KuCoiEMjZ_(xfFo!qya>oTjvrE{6}c$j}Q97 zrJzxG&N-HvUho#N0xZTpXsB&8tW+Mfr5>70UrU#)>s(z9BbT0Ip04W%`ZD_@7rjk9 zGxtT-hc&@ATp)5ye8@N{ci|lNE&uQFYdWp|?~Y$Lum|gF6;rpDcDV>c*jA`vp#z2# zjKzb~!>(D;WthD%I!ufNdLreS4LlK-W}sbZ+Xi`5)RU_x(qH?E&tSQ48hrv`BfMU_ zX2q1LEI?KrW1z>8%bjK}1%txM%y5Md!oorYD_Xe^sJJ?6dx9S#t{d5rMccm6&f_s} zNwD)(*!aG~&b$Bb)dvut|8VuecHYpE8;h}a(;%Cd5@Cc=wlIvp=rYAimW1(k8QV-~ zQwj`G@;Wpt9#Vjrl^sV6Bf|NkjJ+*qM8Md*E%!(8sW=$ZKa$^%S6L*#gKd?Kqj+}i zc7;-1Xlu5&iOtw2>mWi55FMo&kvsr|DS1#*>x(BsOjt_w#gmx%$-lO(i-{XRMg~)6 zjm&mcre@Me8lfVL*fN=>;bw_4*#)mC1BT|yB$vD77>y4~R0o04e}HnEI>N6a=uq%M zjdy6i-z*#sM)hTj40{DBv)4hN$H4uuh*qD+upfO}wvOg;y!>t1E1FN|``(s^qVawC zDe~ER_$>WfazqSohx1J$23rlc%9L1s8$!9UyfxBFVtKRrZ&*da-G|-8bXgiME0dM6 zJaMR@{Gqsn1_zW(QxSrz9K(Gfd~eQ;Zo^Dd`H4OQ7tUtCQ#ba}aXb~b)8xkS_Su%| zQzN2H4R#r-T)P1c2}iU9?kN#q0YFyQ*r27<-O>ieijZQ=pI+ zZKNP69-OeMN$WK#6?37D3A|4at4Q*gBS95|WnLemA{0O$`obqt?B!ID@re|Q*68DS zh=vqoC-S(aN=S@k#H!Le*m3@{a&B3k%@fSCF$NFT%jFY^JQGLrUrOYoalSr0i8o@? zWSb-&KX{rl_v-Q&2%Z;TY|F4OqTB{nERs>7xIHbyUKAJ&62mFFusRx{Jh?cDUm2mU zw$L#X!H9gG{3?kzY-W{Y@B_09PM@>l3^8MRWc4r+KX`M7p21tRJfsH zLjL3C9wtiN9-e{QMP(l^@4%jsQ@p%s%+?Er)K=h#?+*H{O_w{o{HFGn(Wc%UMiGjs z6wW7+Wn>by`KG8KI}E^ld2K`fG<#1TZpd3TGsw0ZWMg^RpczFN77SmaG2$xTmYI!s zhg{X1Ucgt<$!ff@v~8#sSx0m3OfgDFAcgo%B9m!b%e+k6Vd`R~(k%e#Yn5%-r{Zby ziWF@xg-mXHFtIT3ktqOUPB!8Vpg+dKoAQ z#kE8)esS={HOqc_6DK>cC45d}ejSa`fCaCA8ms$-lA5SjRuldhA~!ZsX$OtSABbraURpq^x$yrN1@hA90g%PA7Kg&ZIR}bH97) z#HOPk;CPbnZYH3owC6uslE3ca`k%g6Y4Tz-P8VS%HHWzTC9iC*h`brE;YOKYA+W^-{%-a7gN)!KIbIOG|p-?S<6vz9!0*oS5`tzg>e zXa_yCkIdM0D%MK#MHi@OBao?BXVFX9-nJrGH{^lqa+iYB-O4PDahnQ zZ^R%~xBFmeSA_+Olp3%|^@F9gc@s8?F6ycQjAWXA$&0n=!&VkO%vUBUj8!I5YM?=? zUf%~xo3|`jQm4RrBUNwVgDtCuP1ccA0~pD;SO5f;w64X#QvryIum z?){Xg@Gk>36={VeEK;eQBRSmM!==BJEbbH>x7mJU{ zso2uB?fI@y_LKPg^r@2pvPn%o!=W#T>_zhM~8); zC-rW;fE_D+ryHNhV~h8o*V5q}BL`BE3apcTd+^&D?@$3c?~jx+3ixjK#F{<)BC&e; z9{DMb#Pg5$C?8xDc_=CVYn9a{-FM<_4_)M}eJ;E9G-!mlvCfQ-VV3ArTBtEI!ieyaoCJ-ETDklipt|V-XZT`d`Nwhh~0Ef zzkawa-10-d`;LqNfZWlGN9BI3@Pz6W>K%?EpqHmr;DV846j8WW6+tB8#Cr_p0sv*W z6P3JgizpG77%F0xD#$bBCjw+WlZtf;1UE|r_>nxa&$T>yr0H$dcPJnl5)i8up1o#? z>Z2jmC6+75@XO_ZYh5+M@x7|LT_OW%KBX{(>c9GzSrt%bgo&Y0hWEz8>jIfcuN86t zy9b3oY$MDHQZ=koKT~F*br?ZDcuMEYaE&Zn=TYxd-ln*y?K+|BPwTv{*`)T z3nbX8pH_i@+ZYUfoG|$T_pE;lOi}*NP<@uaA5@8!c@YHNQlN4Kn{8I4Aj9>hOVtmT zf6K2@Q6T{>FU$Jy`aReA<1e9rsSN4{V1J6r6r{7x7LqA_`PF>SemT4^Zx|Kel`Y#V z=k(>Bq5>T7>)tUO@W1rsXK;-F%YM9pYtegD_%<2TpU*eG3*ZT*i6uTG0jmbx!sjIN zWl4XY5%--k5<%{8m4?qgyB*po`E!5XIY!xDe2qHF9j0#q-@VAwWdQFOYZ~QHeFV`I!M~O4QXm-nwtRjg4o!VXSeHiGH~p;EGYTuz#7uiTk&- zsS5{T3i*?~Z4iG7gXq(Pcyg-wEe71!!g9P3;DdKOnOzubVpYpqar@|Z@~XkS88|kU zUZ}b>4Bc^v*w;)ybx2-! z9WQYkt;X>|;~-Ufh+;*KHwvw#n$UYa$LCh$E!ShXIaNMMRYENDZ|2RSt5hAFXb?kd|B(0G%=`JGX(tr*oPWr7Z{}T5T<9>c;Ro4v z7;gcJMh@fno|=3Hp?-fFO|5^1p_B`41(^*Qhow@iMdEHWbk>?7AZoseeNWnXl>wVy zO``!Ab+j8&BO`9%OvgNYmMy!rTFXM!R;4g# z(~(;*sby{b6>RtjJ^*CDJOZkdFZYfB+4=If5j=~1Bb$xn>)E&R=t!Q!{*m2B@h917 zxoZ@^3!#kBd>}v`9gT+gR&E{5TSlKI7SdrNJ55xBwI5~GXgDi=l=W`|f~hk9Hr^?r zTy-K_)z~LYUrS8YJ^F$7Ng770?dcLB#unt1+vW!=;PiZq``dm!W_uck@<}Q`ML(+Uz6c z&b#>{*N&s4L0jdB96r>w&Ipvgk;7dKz1E&_9G|F?;p5fo`tkf)Ou&~?=$!m|JZPON zcEYPb@GAa^K9YWO%W*7iwK@vtP7XoeLEHYL?*c5ezWm;gyqXWyeN;EVV0X(+AL z1PolJ%0Uxw{W8qr1imf&Z`DQ^q&Re^)b7Q+{BJq(UZ~ICa@M`PdEy17298YIQRack z)BnWS+NC#zg)hICw{xrP?r0>{!zUZj)VN6w8s;E3tQyKUx{vo@zssEacq+cHLGqx= zIt?@m2sS(lbx_4%Xr#|l{bzf9cR>GH_O8L$efRO~%aG)m$gfAm9-PQC6AYz7rx>Dh z_4OE!6FUcR`ghwzj&HEZ&nChV@{9a^BE&sUUUNV1-Duua5)6DCSp?6D7^qxoI-e?S$y@&Vo`&4*=_C!A-403aOdjZhmHB7xxK z1F#E~GI$c76s2IJF!V4AlTT0LTX9KHj|X{XT**KF1d#m;g5z$+gS-L5zRzANXV10hY^^fqz@H>9=2;TsI z=#)qKFg9O){wUUd=E%{H@yU2qJjQPa1Fv};W2qwf?Bje@qq)R*v<^n7dZQdoP*9(7 z0=3hl^+oj7-jbuAz=&e1eC!F{0H_x~!Ta(2sq(ug_|2%Z{v;pF^QOuLPx47|d8!?` z{tqNk`4UxslR6o#fgB?z^A`0?lS})K0j1KHO~wk!6#3y~-Zw;1;I_dt+$0y$0tay} zzB2Z?`an*in}eE(xqOg=t_l-vN)!3(99J9R8$1)<-=QwNq|bPy7#$uyO~bUs@^l{W zL-z@G%;(Kxj*$hTeJpC4j8PlD%eB6dN6LJD1tu2y&)6XFMLvH5-?EdpPT}`q&T()G z|1PC$Cgy|2^@G@4M3X<-nND4nwp4yFl@~Z)Ak6YuK5r`X3-~DC*HWR52DG+9o-M#2 zVWoU<8VXw}U!2C<;oEcai)sAIxMe2iPQkTCAIQZdU0WqvPv;3HNQQi1I76fJoN%N)5ZyvBTx@Li8s~aoCA&9zK9qN`V>{W^vw3Q+`5AWP#vFMI*?;Y0 zBEZ8CmEPGF11+RgY>(GU2+_z$0Oi_%1AC03Z5g(I zBqBPf2!!}KDUZ+Q4U&$lu7_k7*KeJyE<-ymW9OhX&(4>9=I{4LRel9OVs)zoo1Q0p)zpp~l{IIQG|quA;)*=Ih=BAUU*)Uu z=?hg7Emwfnr3#rbg~b(S5nB8SPY(Q`%UUHj zhCjo&cZ~|HgS&)n1;H(R>OvUG^#TA0LFwo5h7y_wy8l z{=E^CY1w8WhFdAVyj zHr>+YUzxUny6Yi>B9-6Z09ETJ`K9DBnHHIAm9|k0{n`Uq}sXmY7mrAcoYMP>wTP~sC4w$=@fkGu| zrluZBOH|y-6g9=l1Y-tU>`K9>t=@9+KV_2cl|Gy8JRnKNh3 z%y6}`yd4TG>oE&V!TssgV%3)x7OQ?NPp>Uj<9sX0)3CTH$cIKGn~vg>`8ms(inW;` zDoAk?I?X6NESHa#I83=ea{h)q;cDq>gY40E-gnE7?ca4Wt(Spf($?R8_Gj=cz5(8oJ>@Um%0JDgAbj!!D<(VTiHKm+E(26#m}QhQhAY;# z@@+b5^}6a)&3F{vf*fqPKl@IQ=!sk8y9FbYB6=-Y^ug!5U{N2QBW9`Bsrm}oq0FLz zE7Ybo;}K3Ih2Fq;8qz#$03XQ7v}uJpw6ly=F~AhdD~Qz2lL|)Sf5)Lg1?o_ry;oTd zgWVYK;FMgYk^0PWM%uM9nxp)RMVOm)Tdv9dG5TaB-Ui(v-$)Ao5x5l+kNt zmdf-sP%C75TgEWuPqVQwi?q*_`d=m^L^ConqZyk$jFcAp5*dyA1ku(o;M~Au!*OmS zN82W&1tMA~;+0g0hrXyNrq_K^)hTHWOmDxT9(}Nxn7sz;@SSvijXJ>hY!2|)>d+vs ztD^6ur`D=<=;O8O<1}Ke+L8WT3+2i7w``kiSS{N()q+-F@cU|Ab$1Sg;K;Y~NBPsP z_tmoK!*cPs$5@osQE}KBk}?ik;~q5oImg2Cs}Iyx5zc2&7%y#VT~TO>#EvcQT@*GC zpnCmvYJ~gDERehYDfL{ZcE-cFv~-<1f!C=4A3}MvltzB2)`6kw{14Uo{*o%Zd>IF4 zVj{)`PB0Sq>O(cjy;y2xE>VN^YK!VC%$lJX6gC^THPF=c>W?`0H*ka6)lx`fHln5P z(UA?%g1JHsDWyHjWQpg zD0==Ab)y>ep(8q4jzZZ&2RNkb#nf_#I>uJ^7Mf*`vF9z|=I!CQO8H|9rEeAO+o86% zK$l|O1=ZdLYP3ro;mlGFs=UexSt`hK!!B4o?WV)KkY*407GnmUMNNv;C*X-knVXrj zT7t{0=FhU)LIb%CO&m^XEiz#2OBlE=?27iX`SV%7giAXB=OdVq>D)QY6?OmH=%pg#t zP1tRtY-}B^yLc5tH*6S7OHV!?X2A@FezM=5!6XcH`y904XkH*4*sqTC%{OR~cN+MO z1?aij9#B)<^QUu)?eyUR=)6Cm;|H)=ah4uCs6O_96uAf0G^hY?9aJN!)g}=^316t+ zMpoiN;4ggk%@dnQCJ$dsVg?`qC{<8{c}ejHaBEQ;MfYX z9dq(So>cgl5kHOrx%0VWYV#JAlCUMUqYyl56Y0g6bAg`?wT zJ=He6?z>>MtGqYwfiwL2N~YW>j}F!32B!T0Rt3e7$m#8Gu*<%b?tG&z#KzaWQ|N(g z`r(v1((MfANRj8%AR2L6os3AOr`1^X3Oefqj-Q2{k$W1CpTS<&QrdI|X5ZOVdPYjs zK4&p#zfzC0YFq2Ca)3QCC;m$BoyFSpSK4+~9fEq-Jclw1XyZAxR;W=upAOaBus5UH z^Zlh^x^6F3QOE1&u)9`3-OsCU^XU9?9(!Wh)a+Z#E;5&J+WRdk_yK1X=;MbTurd;$ z-FWMZlD`A@mYKAro!?<^>H|9SosrYTQkm24Qnd*hf3p<(+-E5MduY~I%e?5j?^SOs zrmuZpo<)}*ki}{m{)3T)`lHOE+mFcN9h&|lwjEB9+XYOPr^tR0L_P0<8tj>u&7&Et zucOTufG>`qzb>dDE=jXg;M>Fm>}}Om#_yqou*v^HLsxSm(-ZB=|(i%7^+4>=`0u)mB_Ywt%fN#?`t!2d-Lp`}@kX3( zKdT2VYbod#HN5&9feFTkF)^aG%fEVD*SY>`1$Tae9n6y9hq z<`W|kzpA?+d|+h!tMc>Q7Kzbx@7MBS>3;=HETkz{)CG(q-dE+Y^uMZZME;zRY}ZsT zXIAMd>$w=!fI=5 zL~sUS+6aTnqyfAc1@h79We%?1|M=TBI(tfYm10x7T?b_?@rHf7zC?O1wC4ecdMT5wctDr#wtwoNMQfHg+gq{9BzKY4)@&O4_TMy~s6W#XiPE9cO05R7ez_eFKJ#5uy$_V&6}{>ba&*sr0#E)nBKOyXri&Y297P zgwNbn+t+b6hQ~AOB(K0;cTBZL^VlCZEYZe$YM6)p^)HufDTh}5dhh7VMp(G0V*Ie- zg&V~6x89aYJ0#cd()D{Vi_8B?=1zh4!2@%t^L@1uK2z_5CUWUrK-KR$#7HhP@0bz$ zyZe~da!LOOb674V{ewN`T$=Nb+BndRy)(=~qxRiAQyu?D?HF)s9&@2MN4H-tL0nIkn59)js7n_k8^^%p(_=zJBE}#gLM?~sMInMCat-`!pp-(+>R64r0dfO@=R=1) ze>%M+L=ci3Mv|I`9hzCx648KHMr6AUwGx_W+|_IhA1#p)oQ*Nizc?KJb=0x^XM*l5 zx=a?$T2RK-GDr7hY9bD`{6KT9WuA>|$vfiAvowe*vX<*KS(dUjw&-CR#1IoMSHjETIR%3OVv*UF$D?^@kMVks)C303t zj;yGlim35G%*djWDk8Y%e8=k8$if&hWG%;6a~HMHj=Jt52A}TuGR+4TGc)kX)aLgy;$<^|Ju6Hj?S?_2cO$YK?3(Sr6?QO|{aF(Nn^ z+t+v@UIaZbtnh0pwN?n@CK>69|0AsAKk_X7dSU!SxMe;i`-{L}kViSM;&vDXW*uif z8}P8;xyO-jKyW_x+@0*3G1f?2_zfjitI(2iK2du7;bCR}5jOY4!+R(HKf(%)Fc-{p z=~arXR$-nguV%@AWLf$jVPz+{!(GPLWqSGsC)Py>E_6BTE&2gVfGl-skdNTGb&ii1 zs4mW?t3E)zyJXcx@EAGavj}C2XsP70hIX0cikL<1GaNEgB#_YN(^6T%hBgHOjNe=$ zPp_t+!fn!?Xjs%+L}1rwXAOL|zx9|`$)t;6(PznoPV>`^XPB(Igi zw#h4?|GgWD>}~^RVTE#;r!eeczz0j<(r>7auc+1b6wmIue6t1tP9ETtW5A*`Cs&sY z%ZOA*wQ*f)VJev8D=YXue{yM`uZRkEOqUK>$Vi4pLzuDni5dF#Ti;Kn z@8l;!{mdrF-F{AZzi5&l1`3>DUUf0p1$D|%yyQQrr|hJpo}h;j7bkwOq;f?DJrIBH zenUGU`aDpym@UmjbC}^nsaQ^v-$g<7FGZ>)R4qURTNcyw08u?8#ulY7Ms&k|tgg5n z8tG<}o<_J7@?FA9RfHRoKhoC-{8!otTM*VYoHyeDShN&;dBr1nq&>i%BUh3(tZly! z5YKx_IoXN}0sQnl8Wbq{+YGgWw+%KCJd~WWG|I7S#}_%#sX(#9q01SFSsMFgV{}6m zN!Rv30^hYL2zyxz42|Ie));nl`;oJvc|oEUT?rE2mLLCf`^zgt6vK}5NQfBV?$8oa zl_hGHk}75!z$WyvM`D$dI47T$t~J+He$s zO-EVN1PvSxp@fNf(9-q{7qhWugx;wxY}q^`#C%+TxFkY6f`^eyB1E9)Cf;eV`yt2Q zBE%{LUbDd{XuVCeHh$lypm5>5(XrY&k#+qr_Uvf}+;Z zVui(WkbbNs2C0{U+A$)S2E?GeFKBKIsWC=!xw619o!Bk z{wQA_6^P`E%y4O#hK(Lv@8GD|M|DM`;2fFf5rbNwmI$)nlzAPYyLClW)ti5z6nlMp z{@+xm9`uief6G#t9GD9kT2EV`-NLR*P5oV(UQa|=Zqc%OBE-v46F*ykew+5!L;v2P zJM~0e_nWfRyA&5EqHE=F8Twt>Cot`WeHyfpQCJ>%*{t>jGH?lvi-R?Rh4HWi*0+>cPZ zndl8BF|8R8VGR{G6H^VSJ`GC{?^=$K)?7Sl+;0(8l`l}JYZ!eRcYj2M8(vaPje9>( z%cw?%7v7J?&J1o;7~fnxj@^ol&4sPWc1J_Y@VX%OEHRUpYiwAD3m?OtTi?W}#&#K^ zg?KmYh)fq^_)1%EY5(0oDXFP%q8%+nNFxVTsJ4)nN+|>j`vG39F{0_4IWPRa9Kk+? zA?!m{T8dT1xw;U{OES<<$?R$=I@U0Av-6M`=!(nvVQAC}5*&L zn8F^euVZTG4Y}gjsH$ykGgn6n*bK2f=;+75zW2#!ta)Afm{^a*-5y5;%#8)08Hzz+ z*bs7mLL_13IN%9E5l2j(P#jwg&t2mxjo3)uqCm537T7EMwZ;nK2(4)?qRZtmGw^I{ z@fre$w!xwYhpyUyO83*AHsTO&O`BsEhjF<0*|uVJRF2#?z&yY$;Det=g9Ge~WPq=} zuBcW!5y9fhhGfB)f%I=Lw&0_8kWlRo;$_@=u(E?#3C}K1ilgQIS1i>4S%I*sg+NL1 z9mQG1sn$tcE00qq3UqgypGF^`y{)=~!oQ%D?&1y0hxB`Q5$9)W zy`|8G0l+lWC=tz^PTdnl24d|>be)C{hZ|eK(t?iJ0xP{OJ>)dhwuhJl{&B1adU`+I z>H*3*L<@V0h%kvrky!oO+?%Nf!qK%xYfD)_LC1QE=B~u$^>5yZNucSYv_1(F_Lp=fNpx&}K+=)uAQdHs9c@J- zl;nX*G9fOIWaACteF61*24j*j3Xm?-X-|(P=R~o}q&b#(G{0$$@mU$?Nexj}8G?7sn{&FXWL);}A*bj)EN7MR= zM{!JKQ$L7=N9kNYP|eXr{Uy<0l1Rt=@JW9;KhU@R#bQedz3?n_ZStr`5N&uC!tZ`^ zA0U21KinE1Mu4q9H&AqKYo6jUxERmvU!UW)72~cPhf;<|##-rU5A!KGHaOgKZJ=ln zDG&F+YfV(eV?A;#Y&G!k?qh>QOqBD)4^Aam+fJ_+S=D&-72By&fWSU+_8?Ji#m5!m zxg33ko#Io2Kr-1BI9SA0W|@bn$6ztH0@H;>lw`V9IlaMj7d38}sj$^-rsA0#T&QDgwS*ffi+&#_G)riSIZ>8aP2B^A z&R&AWb_w~7z>?-@QO^;=&*FWEV>0FDS+IztaU(@z|JicxW)nndK&IbEm(sgaL^sk# ziA3k(j15$(^1ASVg%^gjW0aWfvt==_qUza8`K#|K>N{FY$5p#~>FgL0g|p@N$B0Gv zEKC!1)dlmZI8C%r*UYCoX_(i}QImAs_B$s>o)|^;{=p8@7uR#lHU-RUFKta1O)B4s zPq)&=NO$91_rGX(hOj%f0wK10+7I&{NKuBw_dhZqi(a6xv7%;x0~MrX$x9D=LwniZ ztDhb#EYS|(8z(cFi}_=Pv&~>)IMm4|J-9QG#y&4%BmZQqvj$_WWs^2CI1Gf2X>2Z- zt&86BiC#^E#|by>Gemvsx9G;TFnZ{BSXFBF+y6+WCs9`}dgLDs8-Lr!iDE~OOPiTS z^x1gvsl%rOeLg`%2OAt;v6sB;u!}t|fAEAnQN*#DtKmd35EwLjqKJpx($0xsf3v78 zRgELhNg}klqnAS}RXt8wOl!qMhfs;h=!%~+>tl)03R!)6Dld0EFf~FT+%}JBR zGZZ@ovZP!|x2Ls}MN9m?Fj=&F%V${^I`D$%;Y7PRQ^gWjpbPyn#U;4UOCpbhufHU^ z)0h{8w0=*`~46M6ib=N=Mp_YvKQe zq*Y%QgB(b@gfdYRzw*3GlU45%(X%@(U+<~B43D)(hYdvZiai)DFH)mNc z%>=P#Q=6H>uCC9a_~|03$~TfzP}VzQ7Sa{JDVo(@#0U$N=iBitQLue96fdVNm|^VY z`jpVQB9XQ&7J+QIS+W@7*z%$)i-m`ZG5+ISNTS&k{vOD36%BY#l;ZRFQqdS9WBO8I z-d5+%%P7o_?s6SvNPltx22sQC!`f>9Qjvg5HW%eXHl9J@`7lu2PObArT%5^(Pl1b9 zFxy6+?B{Radxt4M6hidEe24>B;^xavK9Mgb0qVL8vLtMMmSF~2PCJ(2)wNDWc1I$wc$jHuG>T}@SE9liZqCHKY2~GD(Iy)2A<=Nzs zD_Yc8&JAm(u3;-|7PdL3Lhn(u{&g5lyqGI|ux_4}D?-$d?$GL77dZiuW%hiSVFlgI z6`QftD|}rvYUrGL`N#y=j>{c@YrIi{Vd%x_FKGH2sx}KtE!>kn3!3-kG-;M#7l}t>`jqtS^xh^Y6B}$*=7qpHD6fWq+CSZr^CuRf9nh^ zf;@`v@uYJki(bgX`gIjGej6Nk6{Wllj}=d zi#MyUXViwDfz+&sURw0md~h1BM85?X$|W>uf%qC3KDAJsr}N818|NcR+vig3axom; z`sQ*>ObclDa`YYW@WSet9fQc9HKG2s1q6V12r2^pIHi}q@4bLsqex>+2@*~N|V4iBpM4K$q;c8;`jY9GI zr$xDVABg<_O9oBdi#bbNN`Y+R+!wPvrkk0q z|Ij6~OCO3h+|_l~L$|e*($|Y#ZH_Znj)HLx50_#b31>sM3J0$to`6hs;&L2ku^nEE z$+AK0GsKjqzl@=>4ZFCwoX%Vx0e{Y6om#q$=+X^Pt`Qt_F$ zS2S}m_$%3qNT=!gUXkG98~?fVMcfEFvqc2C1l`#pLOjdO{=&D4cHXbZ;p6UrU^$C2 zwqnm=KP}oSZejK`?Nkq1zM}MPP&R%=JGWt0{5pp$AB%48$7f18mwJB;Tscl(d@Qk9;DYK-6)ch{>I{<+9&jJiw5`tJ!d6jP%*=@WFCx zF7EJP`$fKyrDAk}+d~}DDgIOF;7-!^Pepv&im~`+nu?j?tvA-l>2gMAjVg%SSSH9< z09Z-aXgfxA4V~OBW~du-$leM1)3hDJ9}i8;*dba3uH^bfRpW#3Y|Fqj8VTlnYzOqG z8>r4sPz;`=*eNEn^tFE{crw zTcvQ}3f2bY2U9Y3iynAZX!mYW@9_d2uV&bP5G?$+=k7Oz|2FsuYwLA#JWY+go84yL zE0IBt9nnvg`P}%p%a&)T-X6?DCuqbTY^vNf&d1QaJ)*jMsjS|9`e2Wk;C@Ahd`h)H z6B~j~%jWQN3vxo0b1K#wYv}4{$m^6r5T_nU5T_nU5HjxnKoCuW{=M4b(YC5IccdDr z{~zBU+-xS;mtU4SJyak zH}@6Uv&d4hwvg@fm+T04N*IUyZaNS4;n<_|ccnvqYa3f4Gow+pEX7Vg>=V^3Gm8G) z2Y!!T$3_RlG<=pFf{;^kK=jA&4Tr^OT67SL-g5s=H`y_qPF#Ezs)0myVU2#&>?dmt>`McKh-YGNxGx!ro5?cXUnrd6`Rxevru_lpfzV@oZ9E)r{J9I`$x}9Xp{UDHU3r{Q?+k^1@vuO zylocwy$Dyo$)aPqYM^)F+dwqOqIh;5rG76G;}5fn#ymXvkQbda1?(7`$UGzbMwh-9 zk7brIJ%UGD8Ys9Bvw`BPJA5+ag(on=Q1jQKv?vvqKQ%Lct8LI(c=QNz3NFLuP#l$J zh+`KRFyb1&;I%}0Wp*{9v^0`Pg@W#J)hJ(~8y7^!YLXKf{0Miwb-XC1;1;*yi(s%f zio7mCY{b<LMgH*)+)@+}kXswjDiu5_naY z?BDOD&euh(?-h%#1fhG$qA0ELy+YHki)Znw;Q8xfgWG`dy3&v4{Vux4$e)OC8qOQe zgl8gQunCjf4H4%^)wKL)>J723Lfs;7iloc}O;?^n%HQC^;Y|1ze*08{YXiPLTvrC; z`#wtatps;)f!86Nn`FlS5^xO{_$1((3Q)j|a1kDXE)lw^isBErk!yFN%1_fTe+p}8 zft#+RAb1g6K;>x125L`J`c2`U8C1n+-c>~5=9%yx_|468g}He*(~RaVM{T%yt}r*x zgbNVP%`@SBfVp`l%*{pf!kixG;la(T&>UG$ZjP^qyV0Eah{DZL$nBOOwalH~yCoLY zPxjE2PVn6X$GMpBV*IWOS0UGA53PIn*yM5JQyY#OuN+3wp@?z_t{$9(>DX-%8|qd~ zSBAjL56%tlU%7b8TvCwDOP;77P5nze;9tR0i%sugJrWv#n-Z5qnz9->AT;PlNUEKx#wGw=@5^O<_yB6&an2T-* z=LN_7EKE_VC{6Jrg09{Zbt|{06Q$o5fnkblGGYZ*Q543K${p2-uHF|uVT$f!^z}Z( z>HNTW$gc{G{zp`+t>hqbDk3ET(e3z}@Ib)b0bljkm0?Bi{v*z753E-eI;Ck|wT*a) z&m+kwE7Rf2c>@I<`FOf%pIZF=Yv@V@{QlJd-;{~tk|&JJkc0OaVhyII?ixRZ*3VsQ zguUimckL1NZVlS$uGO5=DAwvHlAX zY$4NJ(5uAjnho@FE)C@|4H*>zq zEs|MOw~iS(1n5|bdWKe7zD(%5X}VR5Zfbg8a0K7P*OP-C-xm07A{&;TN-Ma>=(JUP z#PT%Wfzi(T{fr9nFbzO5M)#jX=x;Brp>Il7)f3g2BCcPsp%=`{FKxww#)G6dTyna)wDQIk8op%!s&E1l=&D{^VT~0j)gCCnOE?Q!?!P` zdTWnVJphoa@IyE)_tu(tXc4+(8T7rk_97L(U~!`XKH8e#$8EZteY)VwRMZ_`E^{!2 z=~~CgEPzaSv+!kV*@&+Pz8~WY0z$M`bc}=$RTR&3Cp*0luR z_K~_|3tTbAmG(uEzS?FtUyoQFHlB)-2*+O!x)=ydO)Ltiq5bwKd34o!R3IBn9nENI zS1mlVaDXuB?(+{FcMig3(1na&K@ zgK^i)un}NJ5)*E0B&Yzp#@~s~=Sj?rzYj1Yn+bmfn32(hPXexr@|_-+;87nDQm2d^ zGjiz23AVAx=_4^&m_zY?OFWZ>qt^L zPEzvlI*q3&%4LKz+C}H;3OW=eZS1a9_kA2cUF+F^PILzoc!K^y!Ist(kO*i5wMf)r zvAvL-sMS=rJx4DmY7N!n&(V5({qhX;BNPN&#UEv-df^OtNGT{vv z`)C(vf#rM^!huHw~KW=naIM?BRntJrr{3~#XdFfgw z+JS^mDr-jQ%5bD$YGfAHKWR$ml+HZ6jUU_zBEK2VxiZ3=@YDF+*n}ydpVlhV3>xhk zgx_g!kC;*M9SX9HIht_fBE zj)#+t>6DtBk~(g@Yh!jJ%(b&V16&o(Ea3A>@IJuI*v#<#_?^Iu=H8d_dnJQCrVn?Ge*s~xExc3-zFZ0Z1#shJ{OLaw=#w;s^BQaxmH-6h ziN}PS19oB&{GR|^#U(ruFk@ZG%f@1*2I!H8v*cyE|ExBue%CR&(jV~OaIN7?I0ETd z`mI1c66?PopoP||jkOOC$^j%FgzsRue~DHy`tt*|)?rE_;wK}{OK{v56|%+BX2Aof zYmgQn`Bu8FKuT18M|C3bWftlM$1_M6TsQI^taWUdn4x2Ns3_}RH3<6?&^`+-lat4% zr6;GQj!8{dw$0Juqu@)g4%T{ADDd`R?YWp{V~v${H+(toyU3KwQ2;Zwb%yh$fyr8| zx?n7?wE~N_r)aqSa!ImQ8+z@}leIWE1q<+6bTChaQr(7j_M_AkI?q#v~)`LfoPOC zR12w4f!v{5ROY0Kx*S<1NTc>q-myW4P9ex{lDS)M^AC&+bQ0k3gFKG;IWgfM;nXLj&l<2+U^X zm}g*MH2IFyvN2yR9I3T-&So3TnUXG!#AF;qVWZ@fmpn>BZyTRuqqI0bbBap^rtstn zV)h=bh10eS;8y$5nyqE67Y!U9nmjfc!rD|@26+CkF&UE)yDP$c@$D=Z0T~k~*fNIM zhGa}kPZ_U_c#+;4t@Un_gE&tk&Tm3dBJp*FnJt*`4TReyOtr^ogEIYJ(v@z2TY+$x z&P})zV5VIY?hKe|%!Ho;9OD8f0_HlJ;d21Dae+Sq%;lKjdjR)VAhY?CTN;*Nrhfx4 z0{n+}k2LhP>Ae_UhWD~Gt%f>x8hw(cg;X^MYUMQgHcgAJF!a9ZP+2IY(;$N(af)NG zYE9QA33AOplf+$5z$7;m;vn)et$2jdf|DM?f zBdt)joDA-b*L=d22?*zuOVEidHJR`Vz&&W$Xb@J)1kK;?HsUeU-3&C3$M<$Ny*@!3 zqNe1~wFz2(^*|0iHBqbAxz;PjvX}?K6z%@NZ>Ba^n3ZrT5dD~E{t6f30=GmNk8#=U z$udc+?l&8GGEc1!#9~B7*|jHWO+pmRFi{dV>Nd)1kRZaxP0~J5*S$&&Cu_qfZ*nEx zi{WZce^1tGc9{B_F%{<^8>U_peht4lYZIP@-?d#}?kaAA45xupv>KlEW*SQ%51KYb zYg_?6fUgO3a|)x!7{uyNzEiblGtGrf_whqBQc@MA1@c1+rAxtgG;0R%MQ=zq4BxcW z@#B++r%EB$oO?&WzYF4a7&k6s9DZ{?9&nu3NVs+r$4|gAL58}Np(>;3>QpU4U6)(r z{epH$%{+ybRw-N=oaJ@s2H+y#;^ErDb%W~zHymyp+)Hq|aBsoo!>xnc0e2McJlqYq zf8eUlf`9^76RtK~JX|NZB)I3`#=*TXOOID(;>QBG6>wYOcEcTpI}LXM?q|3Ph%6Uv z-%Zmxhbc)|kuezz0OB%|REQ@BAnRpqL_^t=t_zCMh&u)j1g_ZN_#gLp8eBRx$kg`# z|L&J||5Ly4^v;e6jlTk-MF3nZT*5@!nx#eAKAxc~pTQl0I|+9l?jqb3xIf_j4}#01 Ab^rhX delta 65085 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 J!F>St{{Zgq^@9Ka diff --git a/wasm_for_tests/tx_proposal_ibc_token_inflation.wasm b/wasm_for_tests/tx_proposal_ibc_token_inflation.wasm index ef853e4f30ac5e483810f8d79aeff3c4a797f8d8..c22dede5731d25b3c8e2ad56728545e0e28c5ff7 100755 GIT binary patch delta 59166 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

Zf!2hlZ>RmUueIs* z0kU98tN_3(VR0S&QQ#alcBZa826qWyDS-Wt1H_27T5Iur8?A`>C{VnRu7$aEqhy9# z>6&l(02o#WNJ+^RxzX1 zt}|A_ZyBVk;m^%0DJ^j1=a&?embzxPMjXta&-*wQsvYXNo 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
e7%Hb!o_Qu7NKNq1h`$aLvty zkYMK0b4elL!x#!+TYvIcEcWz(w z#R|;(?m1ssEsG-OWU94B7^<3AFgI*mBW9`>Poy{2R=nWIS}_U9?cb|NZt#9Z@?-DI z7OMt@Y1=gdbHc`8tuOxHJAd6)o_+U}^#*lZlYL2zZ5Ll+3~XRc)TVa2 z0R{YiwHqCqs-^Bx|6}Fgacw^oxWZxm0!MmBT17@_n)O&|Wt-e{V#%4iTySx`4jlArfZi72A4cw?CO)BnGvNM%5kSTAc2(PuAt95$grPvC+HkUr%DH?<+GVsk_ zk`T&u#m)g|aW4I_6U)QATxz{bWboJJ3wMb|+RJa!zFi`*frYZ{8#k1l)_ZKuZMjr$ zw}|d`NWQs>tCbZ+oJVC6+zO0TnQZt0MI6kFtTjL?1vr1n-A&hLU_vR_EmB~vJ-Zu< z^uq!VW z-Pj`@vBRC2`ghSj=ORxocq?v^GWd_5Va80sU<@8or+NvVbwrKeLpxzG@R?(aQ+_liOL^P`*=V3Ma zjB*-RBA$U?<7^4^iJyv^?ibk1e5t7D0Bp8+PCX>P@#^v`*W*(Y1H}O@Gk);|Z+U_@ zCFpayP_wh9wA1EutWYCoFTHWmM@PjiyVuAGhV4;$|Cs0(Cx6;(wi5_75iB^@ZnK2| zjvqH=az^~*X;a5%ji(LAMSIFTF8p%FPRq_}HZ?0xGi)P~>t}>;1PlHRziU;38v?ea z8@3U6ypP)bD!~uA!RwG7>;@kOT*nP=aU2nK-6Adk4swJ0YBpN{;6Ft_40F0+8;#_A zgup+^mX@RIs%2M^$}O|tU-6q;<_>eq4vkSQdk2Vc%iLjZnFYU#bZ(gie*u_VX2IN2 zG_0O0;uIpdWtCgfhjNY!AFo@$b2L>c6K~tgXmy#OxYR0!Ed>QOA#gzpUW(t<5j-l& zJRu$lvTa6@QAj$7&;&uk^z8}JD9os8*d9leKY|xR< zIPrH@7iwghAA#9W@T6pmGsWeQ2N|36=$C zLpjX6t?2P`QDkpTp+AY%)dmNthCD+`r{`Ur5>iFOX55Kt3ZSMX();@gI^7#h|8i&%(!4fj>YHj zj6(d>^vtmtj*QIFp!n#FXB_Jg&lo*N3onb<>W2Wb5I7f1J1(QwY;^Oo=;7ZY#E^0? z70*~Cqp`iNh@@(Z0rT5d(+gK{Lwrd{(bg-_kV5Qr4LLj1!jp$YZ9Mrc(WG4yJtDgS z5#eWLTZd>yDw^KB2E*~my0qh(XysQm%#dT75om=_ zwW!L^;$tuWLy-n_M|2|sKMzIH!CSy8py=)`@pB7-C@PQ9hoP&wH_^Y#=|9+ji`r%z zh9@Ux%{Ocq*0v|6j-Na}d;C)wqo!nLWlx%w~HFX)OLK*VlhQ>L6#@L!8A{V%CE^Jw0BUmOi#|!ZSA86=Yyi{4(3H zVHCTNV(K$RIWYga!*O&eR*$xKpqg=dU3*7r5(j7!^^MaT)m!qYAq7=x=2PjD#*cPn zjUStto;_`9Ml+jj8~tCL9N_*n;W&r_13|kng_88un%3D$Arh25mEg9+QNFRj2 z^tDlDQ+*}9+DuOi>;!PU`HJlHv9{oatU26m27EeGP`utQk>%49Q?fwVDVgrbcR_sb zjLfmw<2)PHisr`aof5kuIek?2wDd_MCS_!LW??#{PVtQEMmOWp`iCeeL2qsEPJI*f zu{C-iBlj@(ZVK&A(7Oh*L>-hqX$1ElSk;Rv$dvuysJR z@g)6_s3#>EPZ~Dv!^hDt%nKI$A^IfR4gS~#Q;#IQyN2?wBxG>DTXVf_n3bMxmap7T?djzfdYwMDo+w)tfmx+KLL>tJ z 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�E4m|ZqxwZ0(nxJslvXfI*-S!?sD4e|VVgIT@7mv#aE=^%V;dx9lzFwa~J zvG{XYsw7PNi3rhn;UW~vgAgMu#91%+F04nTLNs^1kaZznH9=IuEhGB{% z>54#@&tD9&G6+%bLj&T;iy_toAxe(}h+SX2NYVR(5YeF}kB_`~5i!&&M03-N#q1OF z(wExf_pXRl^c+8P*sR!;6zE)r3u?S~QzwG|wkeDM zdDu+f+=-t(Y~HxJGe39Od}8y2c4rPlZUtEmhq23lWhD0Q#Tg1j1C%e?nFsR7-}>bZ zn6MsrIg7n-{{C`iT5z^2BC%p90SIt8U=z+vC-zFrL0h`8udtJ@QYw^d6HmsCp*->U9`Vx2V^C^oBRAbk4=YqHZV z2IKS?dbfdL^(;_62Guy@gjN0! zdjPPoPnFXS6F}{ZrMgDK8XE40@oLyx+gkOMiLlIgw=qv|VF0!8Z#1^F(4&>7<~2ON zX0#R?;)8LBC7Dr7eU7PbPtIxFRu9U?KB}WpPrreUV_>ilLt+LmV#rgly?@N1_oO5+ zV9@Xnff#$&7p`ZRrs+cSnM! zoNzEZAHJh2v~{NZ-M*tU;v?Vh=pTcc#sin+pe!lVV8eDsI~~4e=1n^%hHa+!iqX~B zW7h5Lz^6?!|J=EN9X02_;=^QW<12$bo96>T+hm@5<-wr)M6+sLv_ zQtAJn@?pE#|Gx#ESDyd>^BSI4;Cbcw|K~;e?+ZMyJpcbd8~$GvNaaQ9(G$o5MCl3b zRM*7o5Dw|V;++FVPA%L&?AOOtrJJ4iwCSZLDe~n)Js!)Kh=L?w7T6p<5>yd}%!ze7 z6--4JW(8@0!wNXOmNSm6=5WUQx~0mSTVL-67wzQhog<4jpc{5W$dy#x%-Ng5HkiZq zCN#6+eXt|&@@AWp_olJEo0jfv9m4i)+PXj5={dOv88JD1?;U@uq8I7Dg#0zs5I&+F zhW9GU6x6)0Za(5Wf7V@!sCuu1dA%*q4Ax9-7sIYv+Al%%hW8BUYs5OB2r@bXp<9V= zzI^a4&?5ka8j4?f~= z7m7|dvQ#tS!+scmuK$qY{||kb34yHqa7fDe+@(6PnGNh&WJ2pxP>uBZZmeEZJ%~BU zKC`0!QpAowso%&xHs^oj!&>jgj|$m`X6|8M3pM1Z=?G0jxWgQKIGKHlcRSa@9HJst zilgshmZP z`k6WMw>VFYyx(N@`y|z~Pu?Fh$A6N~c9_q9l9?uTg=S$o%XZW;%+aRF(wr#8I4#j< znx{WWV_%uAKCMIK`TI|^Jg244bIkM|&Gi+lqGaoNNDuJi!hjxQl&gX_J#ch(e7~Y% z;^=ci1Jl^mZYYRVjV^dqR`HOR%8lI)RpDBPQ9PUS%`|)b+Bxc?RWAE=3b=|mt;Z_0 z$K1e&_a{hRwFuH|GERpv&-yt;<+zl`4tc-Hy!SWVvtQmHGZ+6hg8kF{>bH*Yj$(hm z9>4egp6oecrI!94um4k4uyLxU)1-X}ELw>LqTSWsZs1+&ly#Q_%VtlvJ=9qvB~Tg zQK+#5Tq@eiOZEnqaP2Qekgtx_JiJT9GM!ja$%j(rJ2X21Tb6W!g#^JW(9a0w34+yG zuuy^ty*W$Bv`G|NNx>v&XF`C47}uOdgRzs~D3Gi4BDrdt`g?u`o(oU+hX&c#Qq-~FuX-6|;zWb`=Q}Y;h4r$F}B``ad zCE;m!dy-rAxL9`98CN+E4M5Y)0z=)>8q`VgP$KIOW3e@n_24Bhh@TSKVD_r$lf>>} zwc`0CHj2HvB$;Km{&%x%wEdFtteemuVzELbv(%W%jnvxK3kYayX4GsH)5f!OaVnWT z_-~S*Zpk_)sdm6Xq1sq$Y-7=|H6U?lztz-ONA$0k>WBxp*I zw!muw45$iSsuqlo)o5sLXvQRvfGlTjla021n-uq(+gNgnO&5nEQ2zXVzyG}drGI|& z%TI^{AfuMT?m))z+gZz2HYyGxkf<}OW*;b=_RI21B<8B^QopxtXHO%;m>sf+M|K1i zL7wbIirC$neI91h&J~lkOIB-j+4=`|k}gz#vy*M-T>H6ta~pOI2uvsuc(-=smrDk>K3@T1A+N!sr=SR=4@0XTuc z2?4M;kqy=OUAQ~48_-a#V`&;YbzNxB5;IkIY(=12{@ zCWk!)%(rt`%XYTf;4};B5&2D2(&`Bf4za4E)G1#sTZWuFa#?bkom2nojGC3NI;sfVKoz5bMx2sc2DoVj1E$6Bz(H9L{?pGLca00fh3 zKqTDGV?Rs0U&RkySbT>7IU7Adpg}?cWVByJr>-ozy`7-~hJn-KWFSKYHt{Jo4I~2p z-mdH(zl~3ZBskTo2H6s2Wxzg&+2|EPaBvcU;~w}bS78vmR^ltTEZw4yV}B@vA{U&{ zpbAjrh+Uf@Sqnw3BB%h|gN_9c#t+Ehm*AE$3V{R22#hJp5Ub{~k-&A~p+XP0tWR^yXH+dWEsv1#Z zT2J)EQ$mq~#DmKQd%=~KRmkhhTplSIL$fnW#)8=Z0DL#8mSkd5KweZWOO}6;J1Ds+ za?_{Lt_ur3FDn+tsm+Lemrgaj05JVBW<;JQRWSSy8VrU|)Lq6N>6ZboxXCmM8?6Zo zJAp7!!x{oE2n#v9mo-7;)?$Fj9|(VCwkR3M*0H0a`ykdS)()G<2^NlBfeWjh6^{*K z31ZPewwlkHCVC8Fx&H>wT=el!H)WeG`cyDqoSO0Bg%f*TqtYI(U^jH^=-_#BQKYdJ zvP4x2xuOI9sT!z_Lkz#1-OlES&6nd1oYf1-8qO6*E@yXmHd_yu4`#j5az%sLz^Efn z0KsT!oTjTbPkc0(?PMiFT)_-pyFwhkg0+FKcJ>O^r}YzZa)v_C&%!58FmfNDU67gt zV|o~v)}@JML)fLPRD3uD{i{@@UdgUx3&nj`vUIjch${iC6Q5tnI`lD#A{_=nrz4bE z4|0i}f_Imty0yg$2wxr;7P@*U6ITocrG;YgP?oDNA-q~zV63N=MG74h7=JHV5A8;R zRxZ9A%Jk%aM@=7wQEZ{ObQsHEOT-<+SbLA1cge8EysltQ)I*s#IE;-&)jAJncX}4d z0+))F!1rv<#VY))JrG!c~ZRx{=7U2vZLX-%BV2na- zEoPY#PIbo-Y(EQ7XIHVe*$#2wD&~vYv8om|Ml2R{W~MC>e_qADXUoKit63&4aiiE| ze*8UAGKzi2o~(Z48a9lv<>Jk2St>3ku4SFmPpk$3xqhk^mtbbqJKPi#p~aX3 zJ>WX#=AOz$^fXtDyaDEM`b}tq<>J6ilG@3e*icq3`i^E-3<(g0Pf06Qfz6Q`ZX1bG zN5p=;auY<2w#NE0BK`~s2GG@u>1n%oZ#26XrR0xc3q2J}6zuRAHW#ovZf0+Fv&y=j zoQ&=WW4i1LjKwWhZtWUag;iN3?zn~BMacMlhee>}@nioH zTOKrIVVAD?PqgKNl!aaOAF*ZR-NN4YAF<`ql!blrudw^twZwXYy@=FMNkX+3kpguu z{HwaN-PM(Mu!W2r5=YmuHe$?Otl;0w8~J!P;V+ZFs3)v4%}HH58<9@tY<{rTN&4fC8@tF)nX0_&PpvlNgC2}~PZ%ETg3%iEwPI=yZm) zb}n3BD}H#E#ff|FVWIq~^{UK{qv(AvYt3hE6r=BD{iBb~gUPlxGsE0Dw6DZV z_p)1g{fh|XwG)@#$6_%EU3DM3x9v8X^%v0jEe^zAjK^uS=5qf;oLpj@JLjB4FK2Jt zD89Up-NJDlct6Xe>!ka^R_%)FC+}z1I{E1)WOF97j;;1mpYg_EaHCy7R4;I`Ujjem zVni~64htr;H~zBu6U6j~SoFV1-u)08!q>kPT%Ri*W+Oc3UZCbWBUU}khVqR?;^f1u zAD^~SbeaNHY7pb6usaC+&J^%ew6XfPDJ+_^(<1T_wg8tEkFcI$4MYN#f4?~T2umY9 zbU(^ELSS7U1x*Nh#-pqa3A^%9HX&3MIA^0sp33_3xf{jUsj?(7mEDaJ1b>WueqIYD zh}Ms@J-!kWJq2N#w0b11`;sWL6ij3J1NV{^se^j(h7s&*#KT6^BqInMDZ$$L;0OthQDE_}X{>GLKPeVZDnWEy z=V!qCPB`d;yr&Z)Z#s)-d&TwB*_BCEDuQnrT(|L|+o)9_@yc{o8(p%MYMf;plh-}W zsN60V&S0@E{`m?eWEk6a(RC#^J`y!ESY}QT?@1T0QetqGgjU4jz)X4(Ya4U1Du}T~ zEGF>;@zjedhwW?V&Z+P_q@=3n7r|*sJX3@8KvXyal~s_LV)smTtLKDF-Y(kDVlVQV zE#i||EICdZBlU7CbjP6W+Agi6y4h?tk0UC#Y!15_8uZ&7){7U`h^}*G$j(2P^?_3E zoXbY#*eife^uo^1|1}um$Xzl)~4MiQGLOGrkQ`rx6;dwC?OQie4AH z7eMjO>=9!ZA}*LzitbUeSLBtl?DN{*iOhkvpIyp2^V9pOfWeWmL*%LfpNydXY0-Qk zOXg?xOS+hi+_I2e$?Faf#SR_fjHdeJG`7R&2dfw;p##yx#JPz1n$?p%hMh%Ng25N) zyomKkRKXiI$pD5-Er!khMYLbcQgIooF8AZ&S3wh}K@q@a zO@fdVac>MQ7g4cJ3OvX#W_Td9iPz}>L$q3t41&=-8!x}>S`e%OMGy=QS0E~`V@4{= z4Gw{$ZWPiEBRtV*Ng!0}r1J)3QNd&>P(;NClckU<6(y;PX&@1(Xs#k25yS*d^C>nP zOtsL01yd~qRVpc%*IKJ2$*d)$Lc};omceC2)`Cr{RTLFmtqZoniKh6+GL{fvjZlaW zcYgHaspm@=&y+tPIlJ1y%%ES+yuY4Je<3iNp4dt)Z^A0si?8+`MgoX)6|l&Einvwq2Z!c3!^Fvv z%#%-)WoN}oWQ2?x;07CA(Vr=FK(BiRm?kG8P;r;GS2_`cg>e&$!zr~HblhA7Ebg(b zL2g#nMzI1%wTp*Vu~=TdQuuD*ZK^k}VwDU&gSg=t1Y&lJtUKh=t!{t4Z zLzg3B1YN!$RGs}x62Rf^D#y91-D1^5xQcH-$I^KDi{i)U5HHvxT2->Fuz<5K>ej%Q zIo>1{qS?2Gb>Jm01?P#k@{mI1+M5BGcY^pnjm6<5W@l0h{3LA)I#Ni?u9;uYX=R*C7D1TjZ@{y|a$J zM6|+;@8lJ0s>W$~SG-BWRT*XUpuHu=tzt1^J0>G)PI6<+9!mJP(>(ax+@9v0_>b6f zJD)YVD&G8`Xv;l)7Iw{FVWXlc>sc#ayP0$>#+=qn?|0lr{;U0}FH?OjA0iIj2;mFJ z)HCT}H9o$!o^^*w{ohri|Djc*)=tlHDe|AI`O8=9I zrkx9g1$YD#7A-}Q(o_}6n!O?8Z8(x^X!_0v1-LEC|}a0*#@bXyQh77OfAk zzd`xS53n{6;En@q_&ut++`zkFz=C%luxBTwi2~dxmSx&JV(X7lNf6*8)zUrWwJ`|} zG1yhaJy8bc*(E8?7*X;M)~%ymY@I4r7FCCp$WvA?EJY!R9^iFw+4Lv>!D9PL%^sm-pUbX$9ZQ zkp=9^@=Mh(ShwMIh{T|na9IqIQ^gQiD@etLN1QX;6bzmtB+rdtVrrfkSI2rs%JqAL z;bRBr^;4VObT4{n<@Bxb>8?ojC^tChM z^$(bjovHr%1FSEh>ou>3t9Dilu4n1d@BT}vFm$=)1NG<|8BYLQG zC<3Zki$3bKE3O<47`>>E*gQ5nBDiG;Znj9w^(TEOI;`iONW zezOmQ-#^8W!>qOOi`55C%8pZoZgre8YtyA&A<-a3n?_HK^0IoP>gUfNW<#*7`s-o2 zzvZ5f83Y0@Bog&0f~UV!r+>=cqfpcz4J_Frru;{g`s{m8PFsI&!*}1v z9cnU)!Z87pTg!^Sd-HhBg2jKxz=Rm~8T9BEasOvhlJnJN-Di@`y(;ZEfL5iIJ*Ew6 z7cBuTdXXafelCj``?)OQF?Ct?ITca8<#T8?8uY+1mfO6<8eZ^S9;~ipXn%@kU$W%* z`4+gIsN;)E@<)3@aww3=5@QE<`{TcZHi77-3?xzkYTAPjxAURHo@?d3Q`iBw&s$bF8pq_(yqt9nCB znrW4#6a#Q=p_qD{>3$V~<`{8kBnuu@G@A(8^_n z$YkeA9>n5rS@!@`9ykLzRUi45?G9&)#Z$jv{`$LU_bcn9i9lBP#Xu5w{mTB1#Ls?Z zMQlm+ou^p_(-%u58bUS6oE%SK*a(7NyF|S38!KSt)rr5e$5>JWnF0f`Es7x3$%hlt zI;;^@f3VSQ&q$CJVJf6pp!PNmQCOZuK!;ICtyC?d@+Div_s=3yC)ZG)*(!|Hh?32} zhed_Zi^BL|)>CI#W`wE(RbE?B{oWY_Z7}qOpJO?3>xnwN2r!~<)voN}=UDrk@8ySY z+{V7SuYz5dE?*|zAw!e<`+OnjD6b{@8HR8>m`gf^P$`$^k7NG z5z)eu%!zG_&+vBfRtVKNBXiJFH*yqi7d;tI&Mw_frAC~eNaS9Yf_6mEy9Xrb<=ctx zcG;COOStipyjt{X=pm2=FDuI|`(&1Qe9A;UAKET{W)R2G?IMoj`t^3vovvr*iR;_p>*Yg}6?xRp>*UGt zugauwW52vwinM;K=!3*jbrKk19FbQ~u*koVAUaeX!rCXr`<5jSiVaFs)ov$(DWBXS z)>E;CGBWBuU##L&C+|-o(l##MCaOtj6bxVE;yt691iVjdtwz8*obkF>#9B9R<*9## z#Qdr_;O2|qV~!2sakxwg;hF3?u_}Z|vo+%75Z+6jFoy3|Md@C7hEggVZ0_MbVl49z zZrqGj4VWh*6&-n)hhO8j&KV2AA!c;SSQW+)raLf0tdw0EM;~DQ6JH{tCwvFdD61va zNj9qJYVRj8O1>iKB}Oe>1JIzOz=ELmj+Cmef$O)C!4`b8G?-QFHR$Bvd0>N%Uob9u z${4i;%tz`(`y__{Hiv6+(;V6Vxey-6a+_#=4yyS@C?CMqi_9=S$2vw6Z`?&1hcOgV z?A!lfL24ASc1FAt#*>pQ*@sYz=pIb+-AKe8J{0H*=k3vwIdoYgZVcxcn$;fk0VJkJ zXluoyaNaY`Zj3M;C+b7_ReKl>E+0Bwh!LtsVz1;6;arb8^D4DOd!zC-*%Bhf%b&*# z#gh8J?vO?ssCg~yg4;u+4 zqYn5*HP=P(K7Pd_j4slkNl4?9Va)6bIq}jTeT>8A9Ulk47x;i>1A>*Swuy4pNtNqt z6zvXHt}=QuGK?Jx8b|#U+v05P+ONQ3Y9#N=Hi+$!{I)3j;JZ`Dlx(t_ah%aAMl{3A z(`UuOW_-}#^|HpEz=~BAJ|G~Ex%;mU(aVtUn4wv;7sa?Jo@T$C4~vE6vxQOoZs^S) zQTzsMnZ0K;PZsxUJT1A3%1p(^Cw!`fY!&9AbZ9LE^OD%8@q8wUr3kG#?}#?+*PIWD zRcfMMLL+T*${xM4IdA7#zKd!%Q|zaQ_1430&3XIg)v|JKG#{N1@6xu2E-m<#0k8*c zLc`w{v9Ja2hmsDq;OT6w_^k!cVpXDDG{=$6Vstc~YQ&sq?rZ;?Bq%w?w;r^u@)0eq zl!LaufFhknv_>3?=IK3mC~l~a;}t#H9YHo{Gi(k%^e_S1LFUI}nI0U%N#lnrH3V|# z62ozfqPRYWk7cijtueds*yx1dB51wGg3DSJaoQT{oK2*$(l^pMk<;kecf9j0Q z;(|Nl?QxBrF`W7}j{jUMmdE|Ko$}@H=aT;q3pHU*4YF_nI z$(%9vny6^WuVX94>6RR?=!>LQ5b0~8TPt2k`?(uhVWGESnn+0DUBKDU6u#C|DUZJ2 zF8)m6*L%vXhtaKhiR)k1%5|o|2Eh9%zg)Sl)p@gf4b-R6A#^n^$d8pK z?om1yP%Rrt69?Yp3Ee^_Yx@Yp>y2|@5V4NSK@7wG25cgM>Dvut!*qw?qzvN5R6eHF zex<*G&L8+%DmujhaR?|_pY7a+cVb_O+uQKTxO~)xckX+9RxKoWjMN&6?8t(i?VsIM2B0`=UoXQc=M!T#`!>1w+h_bdkCu%_v zd7t#D5%?rK_NcY+Z`<-m*}LMdb{q%ziWk)7=XU&ZwoUX+2k>PvGaY=M71imoyBEpYuaNdIxF_J=L6Vg5zzq( zx>2<6z?0f-m+BkhHTIM88C{K{CgVV%bc42wf(|^-D#|U360ddOSA%4H7SFbhqC^{q z8JrHaR)<&O!wjRdcxxa{&EiSy1tGHdFsy!kmBk0Ay{Fn8?rtR3GWG{`2j~a}N1q$n zug*q4J1fj=j2SP8E!n&Wxc?zr7TmuhPs2j~_>QQ{%VJhX*s6_UT}M7SN|MGPQm3ej z>>R$8y(PZR;n}gps#93jkW6w2R=G2Cc~7=U+?LB{dQOmwggxFrW=*)1&33@?@tl1yIR6BcZ@_^2lz5@vnZT6s=x2WLm7Wkof{yME`?^O4>gNBFXd4lwaI0w`QmSJ7#K;& zIBh{Jy%gOBz2H)w8KQRT$ah5KXPrgD0G^U~oFqV7Kw+YEhdiAOuZ)uI^sR74i^x7a zqxDj1YMzG{#SySHruTA0(HIV`z_fd*7}W>bx>QW*!*kNC1L3gSQ`#Uxqw$qI4=gE_ z!^)s3-|B;r=6BJxFYn-54B}$pJZG%J?O=k-u-xo=&e*V9W%hGQrIPl zN=@m9A@r>Hb~10>+1~Thc#vB+m|XNRxt{?8f2zaSUx89-gQD&*c2tPgPdnq|utf-N zoqT1-ICcagz)m7B7iVwa8IkHk0SpMxb#cj!{3^VwKI=vZ{5!GhMhsBjiTIl!*AwEh zoA{3r^s(zenB=p5=%X7&NFLYQ)(~B7x;4DmoO)XTUor!)Lz^Rdm@{GLu#P>LTNvcYPhw-R&kXQ7Dx%; z)=4;0jqm_&x%{HFm6CvQ)2?u>`qZ@-N5*T1MZcjz+?C>^)2K6&8tLF`g@CCPln@}( zAmQ{a!_I*+RTBnM0=RTYKTKp~fpN?cKrWO`L`lgqEr4At6#>aaS)2re?QPyw668(p zRuMXk{B*MAUIT$&uRz(3ePME&6PXuf@@=^XxK|`8uiK)8SOG|jlHoi>oj1}bZ$<;0!Q@x6 zsEV+QKTH=3uf^=^o8jEsM@Djk>QA+@#Y9{yxv&7sm9j@tZOMb~G=j(5=V;>)UYUkv zN||=^2%g--7K0*%%mL!WKMOozeavV{rP-8U9KlUHcEBk%BF8?-jiNr1Pe_nnqpefa zhUhBHY-iO*+gyS*3=SGK*d1PR}cWAgIlrc z>#pW{a}`LJUDyH_1MIiKN|5ODD40H7t5ynNyk!4Is zK)pVAt;(VkN`$1~b4Ky_9=71fNT3i^I0#tF5qL)tP^76P2`kKxi+Fq#f_G=d;!(T} zuUH|rjpBU+N2QW>#v&icREvmf;LJ8rPNPQ9RDh0N7bCCXv7O~J@MZgEJC=vzL{wW$ z72yS#HyI6-1t=$_vdtIe*YJCjWHVp5ghA}-*Yd>J6Q9aqmp+9_C%_%T)hHLku7%I~ zRijGb3m#H7;I;HxL?+IPUDxtKxOlFE2YXf+*YRla@E|@S@q(jhkr9@8aiKUmi1!iK zUB^3)2zWB^Wn8ou8ZHHNSyzYlk)Po-FjQgAR-i4HOgN2p^qduV&UOs&(Qf0}aBZIw z?_bBS^T{57Nf!k%ar)3GRp|+&&Bi{7HuQQve3a65AO)Q#<&tmA9galy!}=SO^8t^Q#O%lgl7ZKXgs)p)u7XK-z9vK5*Dsu z2_WLUNk)T3_a6g!s$XIN0fR4nec+@_d(SQ=l!~D^hubKm1OcHeK9e@Rt7hG+>ai zLVuBLA9GBcpjl871cv%-?K4YPfP*uv=pmIEVGmn))Qab$$#B z7QY+(k^!nXi%c&Yhd6Q@m)_r$Mw4WUg(Ogv~_b(rM1*bSru6Y^n;8$8p8tt|; z7>iK792CmHVUkkUFh8(k^NsGjQTGwdgwX}1(&$t#CvGPWlb^7Layh)M9XyW|-PMdc z@CcPHp=k!l?k5EAqja)!3x$IBw(!|^QtRbQ#jOK)H;+9fSvi1bh_0h~cNH}4iV5&D zqxntNQEbpK>&OCcdlh|k;ZrHtqtJ2;vdtR<`_gL+A0+mT!E|ws_<9T<5Nij*=TfSoq8yGezUPW@S#c3Wh@`8blyLfPsUN+;^(o5EtHAD<2b%IDIOTd z?GH{ir!lt}t_Hp$g22Q}8_f|n+{(XT#iGw`m@Yph zuDk>D!eX)EHn;-8PaVZ&xAWd@c05swR-9`&X;c)*RLF|1Msy#3Yq7ZR4$O|;yq!;P zBmhuBlc#i%b|;wIugD4ioqRCb;LSUEo50}jCU`MY>Z8|(Fz zppR1`IBe8WJ?)QEiW7J7fi3DOR{?@!a0f0Xj@c@Tn1kJr>h+c39N9OT0qcw)z42tV2Uje-#&n_(+UywARi9` ze|wPs4YB(lA4JEVBU(&`{=OzgPDY&8n!xuAn!v}(+`}9_F#Ueyw=;Va(=Nh-V(=h6s6!=Zcsqd^AOxADF_Y zvhS*Yn1Ws%^E~lQ5nVa>(H3CsdExszk4cazbgsMn8Z9bW{tMZs`s$&7=X+V>hjFZB z3J`AlDDTt!m>e`X1!xQ+ccAbEWt& z_*q{lnkSx|$~#?1Onfqx--8|9Lmopc{V8$JWBh)Ym`@+$m%_v(KhB4p{~cS|1}?;G zv4%*W|3;i!z+zfuD=gik6uPx&48BGk6>|XfZ!yNH465uWVFawHu7BBtsvG{PMc%TSN zJN7qki!nDMzZf4Lg0uNX5pNs&3aO?#Z5g{cNU-Aq)?=P}|$F>lp*-f0xw-GNaIB1gw?%xVO{ z{{`UeuK^4^{qn2mJ%?w9{qP&HoQyfyq&Ym7Rg0(RAl|=BB+bP~k-ndUV7$B^!(S^B z$#e1g+@iUB3Y#m!=keC@D@jvRLkC34B|oDEGn-nPRpia%>qEGaYNm-5~p{I#uPsnA4El*%fd1Jcx4cB&WNW?G^tVO4SxY6g79_P6&+(q4bflD zeWFJ>PYkOgQ)nb&8^Vp{P}ZFSNxg%huLYn!5w?^k1tn!I<;h{+$o#R$KVm6Xqsqnp zr98dUuWHPY`*kJTjiX2@^I^(JpLR*5pgPdq8Ue3BR1-x`wyK&AnsDE3q!lJ?kgMCm^kE0*)&VaH{jX2|pN za{eZpC3dYqFWDtduD~F9M#MY?#hfMPJcXwp#fGPN0(52XQ+!u1K`PBLfT{mzmw0Im z#ufwb!*EThfIc8n({-y=SV5{!bqT2gtO9F5LbR^nWq}rYv!bzubZQ|h16##k1Q%1E zfv5WMD(v{#CB9lE`3rwq^5=h=w@LcZ9)(MEU#eG6B?2)6kmRnPMG+6ICeRVifjNWtyzkJ3D_ z9X=j;ZiZO;99DT&R-b&1XVVtKk?*qJra!0+1{{M@m|ycedzN;8T8rt>x>$%=)#wPfQ`D>z%Z9 z@|vjY+Vmpv=UNP}D@Ct$(1x?Z^*q=6Smpem;=Vngs$%>9oSBWNpllTokjFWo34#JX zz_%VH-_NU=nx&-VBL!0|z177BCTgbTV_{`lnR>gXrY4$pQ?nxTof)N;l_{E*m6e%~ z-)GJ2eK??Y`~LMq*O|R$X3t~Inl)?IJa(8nP{8Kk3ge3rRISTp$^{q`8|%hyHn&wq zMf=SEh|tzn5&?WKRg7I8Z+UM`EZj;#$(v385qVXnsX{i!Qhlqnq7CReWvvKcy3Tw< z4T!7W5Ya=dY-*^Y1oP#?(LP1dj4Rf= z1C?71EWpg_tx-+vN^#e8+120_>G(R4SmlOd(t4;y(0VZ?T`!%XuWyAe5ifQGnEHcJ zc;2IYiUX`qM#1Nh@;Mq{o}hQvi)T^yz8k<>Hz;p|$cXn=gxPWHM-T<(0ZTp8JjMRP zJV@r7BHDk>ffwJhkh)Ig7lo}QIuuX-`YD*^zKQPk9WCK^O5RtA()Ks8^Jzc*@TN$H z6TJ~VaX)p~h=tJalxC-U#J)W`cK${Pl>J1zAWx5N#B^#u{jm|M%zkRJNu-3@udIu* z`FIV8C+I0wg;-6yHj7$a%ObFl)Da3k;C!u_HQRTf%(&9! z)&S4#Vqft|&L_XJ)KUJXHrf@~Ig)Z@JBb5HH2qiud(r;IbVjY30kF8yo zuX2gDTUh>|3Zs#4iTI>qRanIrEVtD+#%rQG*TS9o;4YRvoy18ONRna;l@0>jr> zUMw$k>u%LP6tqRu%d^`M#t%-zJ;pq1F#@*5>r|P$$Ma9FxnFZ7raf2@?X12FQUF_= zO4qcL!q>3i1AlK)rD}Ovv9dCo;p=2pQnYD{sO>`+WNPt3NqJu2q9IjFT;i~S3)@wk zMIsVoLv)b{2TwK!hL0~&Oc92<{gk5vpVon^ibRT+$4{veqEne?>0FVh6YZ_nDOE2v zY;%`e^C8p!0L5;FuK5)8+N$yywN>ZSd#lQ4`BssVY}Xx1v@WH$?z#i3(FWggV=@jw z$!}~Gp&2DQd8R4a6Ya1yKHqOC zYr?Inh~Dn35;eGj*jO;{ZAHt~Z$mBHPy616Vzi%r)=t=V5n1OcO8{!#K}mF}RJ-@y zuHMSsuHJfnyGW^N7qdCX<8q&+6WbL5u51_CxXNhc4so~mcsflj6fQcj18Nk+;0{rn z+UybyDES>#oUZSP26<(@6g+HkV{v(IWXW{Ooet^bBbmx#m);utkVwZHKCwYzEA1=g zW8*wTg8Yl<1&S5CRQ(@CDb%r*i1VpgnUE~eGEhsLGMRe{Q_}ug{TBr<@EuNcb9xKj**heAd9UyOjn80~TE-q_%ygxE3tAd6 z4-tm>F`e3p-G%$9?JhA84z!9PEk07cJXWn=L-eTINm#}U4KEnKh~b%7P+Qqa#4?^y9ML@-|hB-n;g_%S8FC+gm1?HIF0Q7!&i zBHJ3BBF0&I^F4^)dG87TD6ja{<$ygKdsp$p6j1S4jPHL>#18XO0TAx3lcp0-Uu@4s zA(~1`L1u4d<--f!VF`4Ew<;YQ^FWYbi1OZhM5I@gDibLh!#rE`nO8rsY8aDS16BM2>NV@yzw*4@Iq}w@VCM3nQVLv}jJ@#tZT6P(}n7 zEF7gDio2`NVzz}TSuYz=t6~vdP0f1(a6dy$6Skab#Ui9qpex9P6$#I6UD}pa-BnfF zvY6Wr#agFacqNU#Di*KaVo~G+PVr-5Q9SpNh^n$mGityh-hUTDb@yVzevO9i6>*{0 zY|{X`8Sh!sMlCwHSJb5)dtnEAg+AU33*;*^sOezrjJ(5Uxmx?gPV9v}x=#!Vungo} zRchzPCi;T?qPK4e>m0zQ`j@Eh0r4>A)9)O>y2X4l4`L3umQCZHdLUQEL7a40Me7bi z34DV-JSZL(v!>FiSt5pRJ}&&Q$~Nc_jJ8+l%ps8=un(ZdVexF0(^}bs8SLdF=>P8? z7PVa^TGMIh7|6SMouD7Ku7`LER8}>S)o+KzDi~dt9l`ED<%Ho%0dXce7E6h^Jeq%8 zW<|^VPD(tAN#1g5-%m!;V@F|0Tu+}L75|1Q|BKTiqG;KtVzv`!9_oLF_2<>})Muh6 zO!P-T!|Ze+Jyas<*Rt(gTB+SxpH1m2N+1@m(T)-rv=&mz=b~QJ&vpx44qyucR!~^9 zAUaH6H)z7=VsS_jM~STg4VR}bV6Lf7Sh*v=5RIyBRd3hu-~teAD7g0vXxc|;214L$ z{6chtbNvfZ-+%M>EMaC);&Bn{zw*3B`X3i5{+lgi?s3t{{%RMFe<;J-SI3pv>&kJF z9DY>AE3q`4Fc@$4Xdh~SLc|8`xxh`E26_*cr^^_87z}&=aeazEhSeLC z!(m65iFg=|4aIM#*q}O!`s=^M#?c#8`laY)G1j0Zc@8b;tVQu*VkAv{txy3S}YHFjjOIG!V4%HYL4-wgDUbHRrA*0h_E`k zSun?vO3@H(1*_wV@ZkH`l=BU&`8SBP^DaB<=(d*~LGHey- za$Ypmmzcy>O_vT=0&ge6!lS+`BU*c@B^Rl007}+gkT3eCjH2_f$6cpi&kI*$?+qDB z`6z&j!=^KBV#9`O4}A1)dh-XaJny9H{JmHfHA|5qLi;j(tEt`huo2WTe<0@twMG#M zCwK`bhLlQUlzI~}#$1w5-7bh#`cP+ttDX+jiwE+e=v>=t8Dm0gp>l$4tC<(kw{Y#z zMKK4B=lVfpyN{e?ibtEPm_K=J-B~}jsv1uv)>U}R#rhv0!7r(3Y|{Vs2W)7*LC^h& z0w}qR48T43MP}wA>V8S|$0>ysmjvM$MDw3u^j=2;eiDm8`3paZIGZ@CST3izj$(es z9`aeV`e)2bZ_xgq!GY_j(l6p;ED#;}MeIX~mtPjEV|S>9Er@n5YM{D#oyBE{=YR^R zVXi6~^($tmW!2vhVU^2+MWq`!ye{4<3!EBi(NhPG`5mVb-lB8Ai`P(!`B%h2I79ys z_(T^?`a>Lt)Ay?Q0Z#irmFIvz#cmWW{2GkvH;SIQh9$lji}2DFnI;N(E7^-`Pxd7+ zm@2`y*F{N{uT*hO&~ncW>_6B@0XJb#+(^kc!R#;bHj_wNa#IY0$@ll0AdPbiJUKx0a!~czq?=A#sk5!o^1=R@5G27Fa&$ zRLpg%brEV#r$~Pp9_?j&9l~Ajn0li+j_4hue*SVdDivB;rssL1TD=Mk+}wMuj!wQ9 zOC8O;emWi}scuG6yQevuwm$E1K@+_1Fy+gNXx}-;yz9A1`zp(nF5W_v)ZzMYGp+Rs zk6^8JVpRu=%yoQ2gv&ooEMVcn{myC5r;IAn4c>jIitK8ywD20pC76gecoWnePIXhy z4(<*m{MH|IwTk3r_NG;3LY`K1)knyAh+~Uh$$kh33~_i?Lmd0rL!5d>sZVhn?wpp(lT4%F;!Tk()Fs6hxYaXGSvA6 z-5UT7Jx-4W$fh`dvo=5`pqm^Eka2LX21xEm7#|`jGf@5mgT&@Q$%6!y1j-kpi&&!a z@iR0Ae{I>%D@;Jmm$?Jxpes15%O8>7Pu1lp@b2Is*`tGfvP#Q47Cw9Upc5}WsRLF_ zE;Lm@h2vI;h!F0hGpRI4HgxA(m0lBD{-~8|9DI*;7Nwc8o|rbB?l)yL?|OLBlIrd*1^F|}kw6|a1yd9`GnG6||%5n^8pw|8sF2g(99Pou-=z^1`+EXeqBu&nJJ zHWsME6x^p4(Z|8kgK}33K?^=dsUb4n(m(W84lU@*Bxi1jY}?S=e=e!PmpO%{EVnK% zQ9)u@4WeZ4S0VC?R`yj}Txjd6EhZqiLGZ3wR^*f}WXI!t?JK!1hsp=a^3(zWIhV_m zg@(#m*E+AZ`~|m;O$-B<-k>#Mkg+%DKp4n>qv%4IG@RI;@l&{rfD;%Y+c~!s^@xx) zoz*vL4#nnbCuW~CwvJ43uTm;MW-Yi21jYx`i{qmUn9pE1d8dwi*>^&Q-B)$!ok&^P zSxg^9%6U~^TEf<;2A<+2MfXR^r<`KLR{Abl#yXEtB{y*<-5>a#k9sHqY~G1Fdwch+br$E<`um;I-mw-T^{TkWqltz zps{zZ+$UB2^jBmnv{8x$2QJ6fk8l()hE{zil9%7z_xYl?76n2uQcw{h4*8T~QlUqX3pZe%;cGOOR~ z2<-D7eN%(d;i_?0{qT2j`H$93s`4FG(`kn$TIe`NV{z21l z_U0ZO5tffQf2B%y$~;=4){E0+9!h~0C(1k=3F2rO1_Pl}?}WH~mwd>1fbOd=n?@~A z+sxH&c8@yH1Fptyd@xurcImFIFC!BVF!fZqxpKT)e1*^6bY?~ULLgrFrM^mfaJ;0r zqilrN`_!@b*1(2yHPgX|Djc4vDuogXPLM6CX&Pc9r%PbNl(UT4WaK(IJiVO?h$uIB_p-G6-y68NOdP1YwNuzo~vb{@- zQ&a`FrO1|IkF{TMX{xN#hAGGm>rg9*f3uNLTTuDRbjoaiqqeFbPozo{LVjMVY{Qf; zE8+Q68RpWQgexns`P5?_TEPkfv!cQ&wy|uF1{mI0){oG1#?%IbVM_-%PSr~hYh`1Z z+DIqnhxWEOT43iV(zS(wq5?k2!2$@ZfW{ByGWwINiR2qcmB)xCvTm}@37h7mN0iS= zNfnzTgK-8JAN!oH`R70rP!z1yM7{uLUQ=+`ca-9h@$^Yk>Gu1U#TzBJmeEwZnGDh$ z1Crio=rCJ4uo#Zauwt&N<7p;qMV6x1I9J!R{G?Ptm)4s|jDos|aya2mj zuvJXZOKCEWqSIt;1gE9RmdnyO$ejP=`zT9p2E^) zDpK#3jyjy@_hM;Ix*Pyw=hx}z+TYW)beU`?)xEiV0$<-NZY~r2E-q^Qf( zs3w%dbIJk9w!fvU7p7Nsy|?dSZ-9gx#;M$@tz`2%hYoHfn>jzH1+8Su0Y3d2<_#oW zmNjaGQBm+0dA{&f=0ZFOsXZY}3SAc(z)&d{jRVA4k3= z1}y-m;8Ix-KZXvpmO*u``Ca)$bngb=U>p!^8)*YNFQrCp(8+(KQElWufqmOXEA-`?+3*U++R(1caU#84=?G6S=CZ< zb(D#=-o?W&B=Bw;+)+l?-o^4ZAQE~V$+OMEd_|800hj5}07(3#f5_I9cem`x z`YkSn8H!7O8g&Bu%%+~5zW=8Qk7dl#9MZkogC$1*J-pkh!-W!44Pb%E;m3mrom(N@GxtRL~sAV^ELcd0Xh4yf?1 zu8>o|Q1h-}-eSt?D(hl)H3wL@^&($Mz%+m!d74E`Kv%v~tTwevkkxNhQ`(@FoV_rY zQa2emc#PI3egnRA(xoUF66?hAKV_vr<0-upI+jzH$>UOIo@qrlSwBzkrI3714k8Ip zNpL(@inxh3SzY1@P6umSW86-qMWN9X9D%$uomE5iHrxb<+N{pXq4qM%yr4yK9vHT) zSOTa1>LPhaQdf7`0F~+99fY|=le=T?t*b^iyDMgl>4DE~+Z{w5{S0PR4V9+{dPpa(r4e8ZZ+h0?$J$Oe3%<@G-DzrM4&wS7^_Vmj0p)R~PB?I_3mhkVWI8uw6s zKa5Mu>D_*^BL((DE^0X|gLc=EJt%2_?Bko<;d|s@YJHFFdy8k!{$-y2)@4ex?q0c) zV~)O8_NIdaWT6-Nc$Nsv<8IUZj=iSP|F%I+ytLDK+aONw6!yK{p&R1MM0SvxtkIQ$ zvO0*ettP)knCd3FK5t^LGrHp-Zdat;dwuUQhj(G%scU{tQLi02Fu2^D@Nu! zx_G^A)L@zXSF_PK2g^>Boh^Hz*T0i3`NA7_j%*C4e~#?nb6OwcI)ngv3d_|6v@SvOqcJItMLWn*dg)(=hH>ghRDhi=$xUlVLi3dD%y+oyye}c?@ofH3W}WXa_fnq z&<$_U&7olD=cxT?bdG0e>1gz7?4KVEYr@YL$vFnLyZMy;uyj+4F)}FXx*jpHlfH_5 z5d#*bFY_!m{|Cw%Binn=m9q_<&z1Ah`67CIjNF9H=}0NLmiMXyKA`X5UCP&K!^2SG z7SP8J%jR&5u^{{n>Ni$?WG|ZVz7RhK`bxj~e zw0e|mS5_^Aa2#cmt6pC5&-V_*HUDok@T#XFX zD@`0?ca4gB2yqurEvol8IE{kF%YICm5#wbBsQvHpvS~d<8D^ME!d%SRFsEYAEmDBx zVG$e0K??DRPYW-A>cgbChOLf8bnhdwRV!=lD_$&ssTx5Tr?5|vwdV;wW;d|D`T(L1 z#yF$wefuAQP53G;7^GG-KN=)rB9)?s6wvP4sJEQk&k-=y5XM4tZ5^7I4bJTRm>e(W z=Tp#AI2?84G0Z~d(}l<64RFZ!lfej?!{i+FjXP4i4;5z0P>bYs1-ikf!(}|)zA+q@ ztNGM=gggZ&DhqR!nba#w+Sl~^^ExB!kN#@iM6W%n6-w;E(tfz6e|45r*Yuyt!p!A5 z-N?e&{2RqQBohXpC{TCRRbl>LG|i+(`Q_pq&S(nFvQ?vr~+@&eae56MU2B#o3k z;7l1QGw9PNaL?YZ(NB**DO*@qRT#=* zz=k&5s9Z$x|B_!r;#JL)NoFyh3exr?tP1V?jXLF_BmGQM^JEyVkXo7ta$KjqdB|ZI zHJmCxalW|PIZZmTZ$eC$6LFI8(dn?CzCtffms{ZUn<2k~mH)M;as$8o3A zvt`rpqc1SQk@ZxT>@akxA6z6ssdMBi9Kl;S?MO8JJ_kJT4u#B>1H49cHTP%f45RwL z=E~1OH=HAlrbnNKAqXo8ho6?sz4wa1bif7OgV;qBH4m(`uBh!i7!ILcZ+HfluK&_! z^D#SXHec5EIpuZFe8jYZ7SESqK0#Z&LFq}}b7WkNKuqtQ9!!DFuGQ4X*I-o)_LLnJ zYq>yntbUS-sAz=I>`R)vK;DIgij528?-)ijD)D0}%| zQd|D>X~IG<$~HQ)P%^BNu}@78(yU1H zwFd~BI#~-ZtWI@bB3D6V{k%j@hiW&8AT^$+mq@k<)yK=K-HpQoywMy+IFB1c%0+_7 zVm4(IqGLQyV+!SCtd4zKC|ibD#~4u=B{MP1@C%KX%I@Hpe=U_0@ZL{LWlZ&7nC9F% zsJZzIML&4t1j>9t z*7CQHB|rXx>Zmvt9%B?Z7nGBR+HvqJS$Zb?Y8I!!WY>utJknT&N`RxPOe3-1f!%|W}_`mFz;-S7NP91wL8M|Bu&f|A*R6uL%oIx6_) z8asGCLJqH&<0$BLn0Yage_h2=30~TuUTpNAvKMQwwO_=SP}i#9x7U^hzxsx(VVAY! z4LjR$HMZ`)a0&Wmm}lnV6YoI(v5L`Xy`7p>46A_SXvYRsnhM1jM|<{<*6uEauw`gaXsGPVlP+!^vbB_V$ z=Ivhbj#n0NwhrcYsEF8|{yckVO9!y$7SOc+N_Vj8;CctUOjGug4RdMBe`P1ElwSWY zR)iFzv)vMX#ECv9Sm$Ls3vMcE{H~0xwT9E>9+QTRr~=vTdzMDND;q`a;~Kj4V9Av< zVpUD~$^3vezAL-pyWiK|m7T356m|~H*e&B46wGBRRPxre>=n;5Du}nLpkRyU(xKh5wpc%x&h3`> z8^xeE<#cjJR?@<0;fj4>cd@4<;MPk?7cH_{4GnhbIdv&1?RpP7@F%$F`gLb4`Rzf{ zFU_IoJu<=E_pB9LS=GJsL+`{RFQa$}6vjj?z-Uq70m-|93k7 zh0DGu(As3H2y4~bHbj~;nT;lPvcnV2|n3;5Pd(=h_>>qx#v1^jLwd@aJmeDDLnYy05GfH$k-Y9xw?fT zb#-4s>A1SSI9J!kS0bFNYvUgP=jz%xSHB)t*Y-FG53cSVsuy)k##TmfpdYG78OP*u ztjC@{hOeNHu4Fp8AY>ze6R`0Y@LUye+XTDNkDtLfbrkQ8LY$8Q4FEQN49_j8eTos1 zIBs;dt92XKxXj6|E1Qmy2&f701Kc6u_!tNI_%t_f;j>JHXes(ZYYJ*)X(M6JUi$$c-OOo;BqY@eDLq^T+0Xl zz5;%^0`5eU_+}jpoU>+0Wk zTn4#YSJf@@0rKezxGkxAHO@uG$>VZHFr^%u@y-~;?T;SffotRU1MdyoZJLgUiz=Ux zCym<{b8tNs12G>2Fjw1n7M__&bqeFZmfM}-J!+bc82H_`WL?Y=lO|;5j?UpW%tg!* zRQN57`K7euTbV2>*P@Hx!Y16DT&J;6IhJ~ymNDUlSmI&M&7F`rdhF=zk*?9%<0s`p zv{3$OSwH-cS^>IKhRn$R_$Z&OoO%TjA3{1C(N4^yi2&wA1JD$3+Y+bKKfjZaAyb1* zReNYcj%0wsY3+Bij@u3z2k$!y&~%D8Bf~kjx*?_`lbWBAF;xrk$mCo(GzE7tD0W`HG!Uo%aQ^MV;`NBvCVA%y0vw9Q@B-BxOTb3 zfdH;$b3h9~OLCQBQDh$VFO|n@CLl#_#UXf&`$Iw~dCtiW2`j@)MW-!rW8ps`Gkau~ zD=T{h8el}$WLGKtxkOuN?KzoPwQ{&_rs#0``WzauH3grSookMVHw)UCaGBz$?6~u? zag}1=oZC0F=DchojEJI>=dn~B-lmSJ#-;9Xxy-%caxO!u?giP|JryW-y18&!R=f$9 z$+`_L`VXQ#eL=?5u%ng2n|Ws_?YIErbyy^QeL<$x$cQwRDBuF50Wyl>FUn1RH7m!O zP=XzfJ^*$r$I`{0QK~*gk-x|vn^I7`F$B#tHr_bitYDyteKU|+a3$RJGff9L%Q1e! z=y9WSApwTxWKYbUFll&h)`$&=!;P|yo=7n2KsgV6vbUoh zNk*&i_J}b)XCj&>C)>Ba9x@vmwb8Qi4UKlG9S|#Xcn^h;~IAbbOUhLWKOIL@FiJy;Dh^5?mD9Pq+AH|iCr=$j=DANgI$eKy1#|dwny&d z(L9(9dC+u>#j7m=ciBmF<>6rBP)@=Q?}0EDd^X+_&nY%eO`904^6a38eS`4KV!VkR z74C2ViwHYDH(FyKoY}jX56&u3eSoT6$DHg(vnJ&F7VSxdA^l1^LAu<;=5`Q> z0#gIu%IrdzFR|VOUKL3EtE$+UUzAw4(@gUie}6mWaJ zLUj-I?(lS@o%<4AcnFc705A=1%}mYYFtw>o?He1FsAh8`vidd5SXhj+PEq%1YSY{p zdaD*_=QPfpKT0d0$L^Sk-D$Jj@uN-06vX=(wP%%Z=QAdL%iOr4t*wn;gm`}}z0uBS zb!)aLZx?FS-Uw=HjMLf1K@M`=a>IExSVi_bP4z2No+^a1d5UjTJ$ZDdpJ z)*v}_jEAYddJ1};5R+)(rX>?5kiEY?4ZX_cSns6vfO7o`i!?(XdZqq zelqRvXbgz2o2$9+fAVa425vv^f!J+nNQMz3Ud*K@GmHqot?;Tvu5Lyv`mv``g-&G{ zL5+{XlX>$;sTsu=Zv=lE{{`VLg_HYk!b8}CnN3-ov%%2BRnqLcY2=b7)GbN7!#}Zo1$mV6Q)pRS7UJaO5pwOlzWDOGWMsi zZpOXt5qM-#=C;`24#j=Bn~~bUu3AIHj|13vKQL??;5V(m=8u!JyV16VuNdr)a9{i$ z;OsZ`aosv-TF1QrB^I%f(U|KTNJbCigIj5D4-#$Sl!?Mo^+|0!dKFY+iE8670>^BX z*?vY(Be>=w#AAuQ3B^r?yXZ;!cTeNNSjWFKtq#Gj1Hi_=$0JYj9RH$*y^IHI<|7^# zISHJ|oR9Zk?qxKNxB~xJh3oXk1nB;Y@Qb~Sh=f51V-ox7v+S3Vrw4r2(T4!;rlR$WgNbBEXo+Xv1Q};y$0v-#%&M)6=ZlS}>FMd3Jo>edk$i`$ zX7x3~{c;g?DCPGx?yG7~R(C#Abgr*)Rphafj;2t+J@8?e7KXw_^C}nycU;!QiJ2p_ z9GQ5whsX!<+#PZGeY;JDA zCGNp@NQ!3`J$sLFM&xB+Ufmy%1$YcF3qXL^0XqO60X_p<09*mc8PGET4FRnI-2nFk zW&pMWjsm_1{0?yBn~ti02tX>J8(<(H3or#RE#HiDyoiU_0dE5i0louV0#rhYYXPEX zQurWaRo-PhUjqa_g&_uz1ZV~533vc71~3sY1Mm!>5bzpcJzxi*81OmZd%z!npjj{n z0qz1c0;B^v0D1yO0LBBJ06YU&GRsVJti;0xz`KAWfRlhyz^?#Df$8uA+$xe(S9oo( z(bc_mj@Da;h`-cZJ@*--!0=)zQ6~B4j)Qa z|18|t%kOV%^8q@C135MaZ-6qylcNFtI1=&O=I})pxCAFQn=hUlT8v)S=EgJDk+l?n z#Ni93Dy;F3`8a&=6IYbBpa}4QOGhA{0|Nss7NSlUAPd5uPi(Bkhx>A0pCo4fv-z-z zZ2Wj1E3?%0jk0DiJu|b!;>fV*pKf?p-YYg3<809xjRHoE8Z&zG=uwY8HO9&uqehK= zbo9hg508H4Q7iXBlbPJ!LGBld?Vk)e_~ts53Gv)%ud)g^IzCUwom!LSSA0J{mOsi|K$JT zWwxERVs_GY%JzZnw5`JSt?dV1Y5T_Zwe6zqitV!PE8Ca0FKj>9ezE;zyKW2kbyM)~ zHseX3DSZkzyqjrh$NiiZr&ae$*Y~Z!v!0cinQ75(WaFwMBa!>H;}SBEIRIxCvN^3z zuJg%y;cBC?ZydW}^z%Jc_jM}ea70^piqq07$l_$W&1umuTgGc28Ex!eCH^)I0D(3K z68+LO^<-5~iQIzJz;xWT)rRgDA5=`hl-V?0yJSrCONiV-DM$zA&TnCACG= zl4x8`!otO-EjH4FlG!Hl&wjjtu`eh-;3|Pw94|6%EYLzToE9lpw0XR3oRbek3zB94 zht0{g5^7zk5p)UEPED2g0qvp|1p%im-N^u%H61z8s#rQ{m{r%(8-NztQzMoLXfZwN z7RN!xtQqww(`Z>MneSU+q}6KDK96!q@2 z^SGT~){16<=SaPyb>{Tdjv4;i0RQb&1Pq)qMrzG%%RyF*{=gb(Y|yj}D@gGa=xatl zR2pox<2IeSD4A}OFi!phBq1cyaR^6sB1UB_vJ4XOgr22SB820#wxdR<7DH1Y z0U9(VbrfS*?MUN5?QoXA^OM>$eVH)QB2!qtu{!d#cp+;FKutEhwn9Clt7xm~r?$rE z8`Xy&$uSm2waj=ghdMEuOSh%#C+I;dLzlL=AaXsilO+UoJnw-CN!Kg9U{LR5i(77b zsCJC-$Fp8RkS$o(Es2)5<^g3p3+hKE!;)m#N(t>{0-id(>3&2jwc~Z2oCFaG+IR|u zJgOvZJ0+y+H>zoC9~&=6x8XT6jUCbL?TV>SjH>7~URh||8uY3|kK$>)EO}PRED%EtnIP(Lhh`e>>*}d* zkW4I&2#dZss{|M|)ganhl^$%-^C?|3;c8p-%B^^ITC_8S)8e>l?5W$9tuw0Xwr5#J zVr+f3-WVMfVvLH_@w_^=HQQi(9Gk{A8tv*et!H*6tIm4|*#mv4KV$|{AIRtF+9o5j zULUsED6N-(qE+=`*cKx&t}}k$6*m+JR>wu-x-TxW?pESXb*CyQhQv_mldhk)Xefvx z+l;2p;YlVn&_GZ2)2|^{b!Dz^vJ%xod%FHHmD%o01es5rPX7gR*r=lw8dg_)vm03? z<|Y6w_fOZ?XQJx*qG`BlX7^J$PP={r-PO3y6@Q8wyOzAb!i6@6)i!=`)#|>Rvd~lA;MI5%c_x}Yk!Sm8 zZ<*!M^N~j6NKlnj*DmqVF*VSepryX)POG-tm=xbQ*ehSAZH!N1JB%~&okC2O6L~Ir zWg=f>)7~;%^&3EXz3aaWL!u|9!?O4&%R&%|@d3SpYB_ye{tjmV%$kqc2+}~MKKF7e zA0jJ*w$OGNyuqWf%0!@Oq1^?}6ZtNCJZx4XFSctdjO+$Y*xSbThGE8$27R1P3=mF- zzLCjG-6ZodGBwVC8oGHRy1cK`N53v}_8V&wy87>0PAU-%1)0z+&afx8<=RpsC2=gM zY)I_E4CA}RyV(JwbJD#*c}oak2{9AoZ%k+zYZN7gvxCN@cF{&uM-0FTd;H9UrD6g-(`cxh=%pi*Ahe8VFjdDO7_|V z&3O!-g~WmWTRuT-H<~uhS?=}u@)7GnEceja8t|`)z-w#%c)NC2AW-#*G^i>)W zX8h4+2r)FIZ67J`Ms>-(vA_~#q`UkA;aaLj2W!6C0pmj3d+piM)hRLBx9ceNWQdn6 zPPL1UsmV${L3>))+P;h1OR(vF@DlpBug8D;%^26d6R(Jrv!IRCv<92TY5mKQ5noJOb*<$ z!cLoq*W|c>G||oR9W^#j+E`O#P4P;c+6gHSEWY>Ksza69(vUgSkee%X_vd88eeoF)o^va&vi?`calytsG$>!yLR@{ ziE~}sdXzn^TR%3_NbA;@8hTT=`_RxgyOACzcJIy(kl{8eTzzWxSWt7}vk2wB$KI8E@T{5;l7p>51f7S_ISp7U4y`IR@8_dK!jQ zN9v;(7h-huea`1+;@B8)SERA3 z@1yWfefrH0$@8KH51pQjd+rK1-s$&v>|UjN$(B6dUP16ZlX$+b3t=dM_z)!k5`CB`dvr-XfH z>MinR>jMp1|HHdqtnVpG%?p`YG0lbFA)Ok%3_h&3%$RVG3v4X7XRtySW&D0m!fhxI zOOzc4c4fzQv-Y`WL&Ep!L zYOK9KTo!qC`2D6104hK-WrJLdE5oO=wZ`}ng8I47$Uj5%(8yHwhOuH~V?{B_$e$Qu z{5&$$Gz-;~*IG$2>Wzwr|E-ToL$%h7dIC;w?zklojy76S?J9y%buU2qSRMBkjQ3^hZ)*1WF(2 z)V%yU*~>4?F(4R|_F6PkU+=3ayP%krSY-K@W8xr(!DH%U3i0fict|5}Ofm#{bj&eK zByu0^f$Nz^Tj6SdtO46BjpL7x0M?|jy>Xp5_C;K;j%~&fFNt}=RZE6b2tx&2_MJw*Ct9#VgWV33ovX%-1_s)>$OuY^yhWYhpMJ~w`DxF>5p%#$pr zH$m3RPo@I*fhSu8y=At$s>p9oHiK1d@)SAH##5u+{UvxpZ^-3=2_slx9??a4DmpzE|IpH>4CSnJ7mQS=XHw9`I$J4DqrQ6ec zJbf$VnFJ1#$sP|ySL@p((_PO3e+t&9zENV)lu<(UW%olSy5HevsNo!wo8sDG^0aC} z6iOMvaOiCzh|`lptFua^SRq`Q^{>fM)fB1J9Vikb2rMEXc*N-bEKz*zS-ASb*z)WU z7(PCw6_VOcN$TKf2UUX1iBo&qlzj=X#Ckm|+eY=+V=S36j_on{b3H=#610AkO_F^V zO|9)UhCY|TOFl8Oo~t%5D6EHqDFQfXeDd5;aIoU}82{2w$TYTqX*~FRGSYr{z5}j_ zFZ9Iq$rm2P^}QGR!bz(A;z0Z!{bFyn+F1W0oD4FA$}IiyV(1VxUMbO&L4?WE4$1)& z>RD`aVV;71n*$4x$mdwK{j!Qasm`2rE)E;viX;^&ge^NDb9|i+giIfMsTtdEEPknZ zSP7-ZI}ukRJB4^)CW9As?xp7NqWoVjwHIC`JMpej{&GWm!MEzS?Uk1HLi2Z*S5}0U z$=_~U66OrkOTIO}d!ML$c%7%g~``T8NDFAgBfWN5`n%8-anJx zztb56TLWdxq&_n_vlFh{GW+tI*~ULJV=_v=0Z$m)&~s8P?fGHqK{Be{j+fAH(wHhq z#PoiV=I&|#N!dbKPqVC^E1wEgR7WqkcCa}F;(pBZ&UD7>CoH|8a*@tBooR=teH_|r z#-S`1n_+yF^#Q7}d#V%HPo`2(sMfT)xHg$~H?A*CyC2sNrqyRhji08y5q&cog`=Ip z&Op7?GCmzYg6M|^5$wpOn9OI{(YXGST_4xz=`BOdMxgPYI&3Mqk0Yl?1Sr|c$BgOq z0K9T~!$=c5!}LBJ;r(=dGh74&bdArZKN+4awGBEM>Z(nusky?b79(Gqh0@==)-q#; z8z9?PL1g;6!UO#s`l7E$X8=^3$Z{@Is#8DXoeD3Fr9;hS;90V)NxIbjy1PWS zcM1Kn#Ga_Po^!<;eFZ(~33|@g-l=8uq(|x3RO-$XGi(g(pU%m^b?{8;x2tC!WU~cp zjG)`8sm7bL5^76tkHUbOj0GZsb758j+#%oDlW={0b{bo?^W5yW*}%DsaTUx)WN=)( ztpR#9TmnolDad2>gpX|$KK7yTF(x5MmyO}_@ru9N^gy_P7w0y#SI#Yg(B>G9d87D^ zFOBi@y0MeSrg_iSy+PxBdx|Tk5}6YGZUFIFlB}47beXTS&x}{+lRmvQe+)Zs#N^H% zeO{Ud8|ZQ;7IwN2cst$!gN|NF*s$b-sXh38S+0|OPT<-Fx<<+zq;hp zCTB7+(}g`?kPz7e+&%VyeiyTJ{qj%XT{~$^6HRNsuUOTwz@umSX)~t@_5uqtv{vEx zi!gXzn@IPZom>G5fddPmQU0F1PHeH!KChv%HLt1qwQwo@_zX$+%3m2vo4}KaU7l#9 zt@krNTN;3;D@*TVr;SO=THA7&MnBr&(Y2wzaeUce_91}#8g-W^8S|INVf|;@@{YKE zvwRV9RJ2Tyv(CL($+wo=;MQD0HWGmSo3MjNjgfH%2b=cOc8Ar^y`fiYhO&S#4Ub z@%^eOcGmDKSRredXq+mD!%X)3f+!z}!T95iSR-k5e=~Q*>V%lTplMuO-63u|nG>qS zoq3WN?^_dLJiRjBn6oAn)K{}zB>NOi*T|^%W`Fq{5pavVw!Eo< ztNm}jR0I5lbzMBqAFLY-2&FnygJ;+Gt=UvHS}o7#I<=F*^1_UdHt2P{0zsRp#SjSU zwkbZcMj*(n6sf(DwlUoQq-syJXv)@DBY)#V>?h+N8{7T~u9TX%%$@=7=@_AjrpW7U zX;>Fi%HyH=!L2myKT$mbeT?5XHvbdKc9XKPZu0}pWwj~DP>q;S;t`z`zNbvqKK>Ij z*1sV0m%?Iaj4oSWf`E#*KKbw1OxqTYR()>UgphS+Um{b&^-9dbj~l;k8_9FNF&-@J zh56R1!g?7M#A`5?pkQk>&jUse8i)clIjKh`Rz#IAs8-8WA)Z1&e(_wV;o*65K)5Pq zE>&YBr{_q_lt4wUb2+P_AueYIvKwgT(t09qO5iOtb5T8!ccAAk+GQ#ZF644L)k-p4 z2ph7~%*jOU)GP@Fau^kx!xUNiy-23yc~Ya))>%0wZu&XVG9b4-wtxabF{C*YgDX>8^>G_w?WWb!<5;qqM_90`^+ada~4C zT%il|vy6dnP4n4=mbDl|cO@8qyp`sOqZLS%f?{DxHK`~w@S0M!WXsqftI@JJ)`%{4 zuxm!6;x;rj8D8AQ6Ys*d0~taqM*|!*wiHJyfFz@;xK5}$&gKS6B$)8GFJVWGTuTo( zG6H=cB{{j^SYyEjvSGUAE(!oD4~W72{Z86zxvFk1qNBq~+0j-MET)qrZ&@!7MwE?e zYN3GJF3x<#>e1H7?xY-k@z%T5OoyY@V4maQ>W@PMS;xiu$Sn*`pY(V<_6?#XeP0Yq zY%-$x%xO19RYqjkWpl$N0@uEBiIjMtm1`iwuTWSMr>|PX#&}N!7l=unOhp=eUp3VsjL1QC5wNo% z)gvRWJJXe4SuK@D7E~T}q&|+D)23Ard(@}Fy*uLR_|eDelfhqQ8Gu#_?KB*F-(-t+ z?$|qn^RnGW=lz4(9AobOduyqE0G#HJfxuccm;iA2odEN^01*t6fUEBWxZVpe&;-2luIu)S6e~a@ z?oiX)`6~6o5@2GPaOe&dDE9(H#8>jQ>rQ}`UVwfk;ID`7z}F3vuU3bf-p+K+mrD9m z4&Q<4Je4Vh2{%CUa`f;Wm|pJ%D18G+-Erg&fW=;bh?Yr=gYE=a>IEpB0$^NxC%|$q zKy);T@zW!B5JRN`G(wK%uq#IX(Z;yGcl5dFJep1FiF)RY66m2h!NrJ}f5sU4-kUt{ z%)-)W_gW)1#X*f5m9|8(@nC6FzVwVS15eA&7<)=v@#SZX?@Pxu$~yy$=}j#b{XoWm zAiD$eah2pELlpu8VnKqDacm3w!bpC4Py-o^R_Vev{P=r%xOUsyJAx5!xc zej9$c-1z+c`*~@((dPJQ;zS&8Oq?7#E;;$-xa6eqi4H*j$caRtpL1ezg2_U-GgQaA z8H20kp@6AlxPHx~kZ>}&<(adnK|4MM1_&Mq!$z<)^}`wBw5aW0()7wqy`@&UbNb0} z9#g%8qyl5nHA15QMpvxIzxBc2LKl%>+K~aHF%j7H>@$X|tQpHQ29>$ua>zzWQmL#x zACGJd^pw&QKl45|a?2v^1=5b4G`5wsMf-gvuQ8{mGzJ7{;#vaAO#4PznM6LuCAT)D zxq@}(ih%fojJ>DF2QQijaq4aLwev}=+l+P}HsqC=#)uEM!@~>ysIPsI%-C;?`sf+2 z-%&=z$2OztjArW<2|GoCkLK#|=HdM}0(ed@|f|a)ecsw9H8{ z+Jff9Bp@?H2Cs;!uPd(I5wibbxeTuV|4Z-|dKv$p*YFmCx6sS@-xuj$6TF392KfO0 z!#4b{2ok*@XUI4g#=~G|WGgL)x*v8k!9#)3!j?&fzAOE-S``0+U7}Ev&ajI15p_6+ z@mhKPVD(e(cyvZMgN)+x#=MLfC0~XclXf)g@7cS|oEB6M(KWSuSzfg&^5w}+l3(V% ze;FItHoQy5zy_m)@Sfbi{Oyhy`&!z>rd1h%JL8Nm$}h&1(w@C`2={q<2l?RGa(P&K zGvd2t%-M0X3OB=RrJh8)8_k}CC?T;_J`G6R8!b9A<#i$02WRSBBus?wr!BGJv%{zD z89TRg;%7G)KXKGZ|2#XkVh0smViN)hzeqa=T+q*$Q4vFkrscY2e(jzDJq2Ozw%-nCpUyZky z$lu=^{ja8CIbz;b+JaDgwXVHNre8HayV`(NExcC7GL6&Mn%b-6fd0K<`>us6Q-XXe zY1j!fE;bBip?a>&*}wDt?`A|qU7ty;Tq7{_1z$MzD&?y9*~a4RnKJvTi1A^q?pRCl zv=4ikWr`nsm@`a8JTV}-H0jIZmzGu3z?b>628(7Bp}*g`&TD1nelggNiOw$hK$VUb z3+=2OyDpB|Su^&FxM62QaU1N%V!EACP!b>3o|3H4YB+_oqKygXb(QYf!t5mPAFZPw zmc_1$jecwl*beq*P3)Iv5o_NI-JdmgU6&7vPhXN7E;eT!XNaDym@Hc0&vu7ImCx}O zoDT%2Qm%?ovFs_=Wktu7E6s8+vq`e1IaxABEsOSx_&%0RX1^}k%OcsY;^lhsmfu?5 zw&JPluVfccn<{KH^+^REsTR$hR)FXsrP;mG%FHxBN)rXZo8$)1G_$->U`4JPg}Ahr zg@BDwZ6y6kaV*4BxWpUK%~K6pTjE$F6rQw?)y3_{I2MB&*1qVeWm`5Dw-)cnr$VR9 zJE8Kb+Ol29Tj`Q{dtEZ`LOc1iU_ZNwyafkjqE??pN1L^A+EOj4rT_f-#Ex&j`Q;~A zGws)+p7q%u*64h^+W@i18-9^5YD!#J*{3>mWzPcl z)~*ui@vbbUo*OAmpQv0-Vq2KRs& z%@PNCu<$68L!GP&xR!;%0ieF`!6H1_CI=D-d?34CPp@nw5q6oaXxvjHTXH~ylHx2& zyo&4$4{Z<2ncgziGr_GVMRA78yHh|1=t`<#2zm9B*#d58)Cu_{Jei{VxqOA+AXbO{ zArgAAesC+k>&2q+RC_QRZX+WrAxnRm;%Vo z8}o1*6jA z;Y@*OUPXu7YBDhj;;B(D$wIZjkYA1T4uz{TYe3d`_;Mq8RZYs}H{? z>p}Q^pNYi}vLv=d9C(n0`z@hLV?HG=^y4w+`J>z|}6)F)9GayWG^^h-45~igh zayV<@TuE>xH0wP>(_NZ&r|U1IZ`M{(hE^cP4rk8xe}T=ULoe`RW;MWty(@YL*l)zj zmWl(zSt460Du=Vib~nPP5zHB5BD8t4rylafkP$2m_1!&!J(jdgaq{%Tw1Ee~ z3Di&qC^ky@NeRje-uk6-Sl9wybPp_-$>Us^DLg(P-O~aICQbP zH4hib+gO0JBpdRPswUOWe6P7$8lu@))*mhV;#k?hE5@=YwnY?;Wy$ufBy4n?t7BQe z{+>pMi%sDm&)!1~KdT#EO?dRo#U+^*y`i4F1b1y4Ap%?3f}RRR<`Xan+r`NzAg8tB zhbLG}qwTU`tq5w_lB^w^*g=+}?VvO?gbgndf`~=iDO#knLE*nCGzuwl@y4EA+b))* zv$VRZ3{8VAssC6vciSFgyQY_H`#RIAtrc~~u@-En=rN8hZD-bJDEVjY5oou$!&_+aTAf=ZnEl!JND$c09!z@oOu^r%$mak#8xv z(RM|O`C$o{b}(v1B6b3zF}o-iCZ)#&OkuOd+zD(FN-mkmk`k`3p$dJWs)ydOz^Y%a zkpxxKL1oZHHYPNCJ%DfN@#50kEIjczA%G@h35Qb*o&t%*e+KREhV~U-Ph_z)tkggv z7tl;3*&F^HNx6z&Xs?tiWV&8L zveYXm$^FK(Zo&UTvH5vc-+p2k?(BI^Z~(5z4v2-5T4p$7CtLBw}TY7|sMe5hWwrNkH<7$UxT0Rzb4Jz`KT z9wu;LM1b|_z6szt|!=yvUwsWn%k_tS|qvQ2h2Hi{oDuirAM}kB}QP z;c&P&M?0Al@lo;2OYC93YbQmLJHu}Zd6_*0hiU4|EFQNvUWT}q2;WyQ(k~G$Utvk% zD#A~O3tRoMlRLp_lL4Yv*g1Ag%z2f?ipO7N4b<-kal7&=hUsJCOa{Ba&v@umWg_sI zFXFNgy`1>^I)IO1v4PW;(H5`U!A8L|AQz12-Yo~?CW-eY)ShOdbg>ZhRP<-$j zn@9IiGgt?d&6~lRl6oGUfy$i}KhI!yQycWmVfCpEp2%V2O!{9Hit{U<%=SVarNw z@Q;x!h{kPFyhAgKj?89L7_U4ny5i6qy64Vi(frzJv3V|Q!7rZ{7v{45{Mv`2$vl?I zW{IcfvGC@z$o7*X*2xk?3lX|DMGu~&dnL;gKlD(QEOyRg4fUf(QK&PV4=P~0wE$j- z(y;;Fl58m@IC4_txQx>U;Eqb{B5FPx5ITplJ%-;$KkI{`<%Rj|Xh!88Z<fc(^t=}LEq*v6~IijCCq~5vB+Ad z%nl;WT8>D_V{z=1=#$3=vU5cOTL@_tt!Tqi%(KD7{$*@n!r@)08x2H=aNTL0?!}Wh~z`|Q)N5#YyQ10@hqHR8uyYfBp!wS|UyuMyjx2z}$-8z(yIQp4Wgtu?wu>R7k z=ab{D`k7PJH1=|nMwp^eeoE0OJ4G}S#IY5yeVfJiD_FBzG}x-|#d#s3#Y)H|Tl8AV zT(z!{6u~dTPE5NZCa;7Q$rf8yvIv%4bYvx)&f#VCUyUK-S22Dyi^pxgy6wQt45(XW zn6MV&+VBv~ptu#2i0Va3WmML}-rax@lmCsg;72vckbcxai^6*%m8WNn7Vx z?@%CW9V6t`_*;dKXRiegEQ*;z@MZ>eqw?OoP zxtwz|{qPX@`1RTp9Pk=x;pEje3!fvnNPjF8 zOXK)CA&C^@cQQZrwfa35zxj{bMRW4vHt%Es{MYTGcqbgS-?odAT`WRW5%f&4aurz-z7O_ZDmFnfq|@`)>Fxr8~WIA+Vo!vnKr7t*Otw#oCbT zv*j%|g@5&qSY5>G)wN-_Ss(_bZ={DyzBt^ewYyXUjVfX(CS;?~8W6jxA)Ml0K*Xyy zi8`Uq3W5-trHot z!;WoSxE_Tk-Rf-?7rJ&gNZe`KyPSMuGYzE7iN;|p~KEfPt)!Zp1vP=nI)GMSPlvFrgVs7|`s(sXkOkz!h{#@#g2$>G2vl_ZRE+RZHS)ln>|PZv4w zVTZ&2?IIBWFLn{^x64G^XFQpJgS)<-OSh~i2?OHP$0dCFCQTbXOB zvw~D4plBo-nWShEVMyibM=Yj^Qg@Z9u&8SZI*Tf37S*PUmS@kBr{DW zV1Z36JHy(i&XwKADqqw@hza`*GK*ng<8AG&goxhXq{AKYRxg=_c%SNI#FOat-Xan5 zF?)?y7K!B_v-jZ&J@yGZ#9kAP&$2cMa*R65avx02c+J;|Ax3*`$vGAgKI_i7lFzYN ztd{pb$J*9*+X)gT8Wp{H!8sNl?X5r33h3*p{%ENp=uunNOtH!3JO$CU}0$tf+#b>NO^zPtiY+#0}47Qg_LjzaZW1(oyAk+0q)99*Bfz4ui4zZzf zO|`+PgJ=y2N$FU~b=QeDm&sf$$LuC(oXB*{Xwisb{(08H!vwkB0F{Kxu*U7KKXxG@ zLKu&?%&AR5nu>DToP_p|_w{H%b#f#QUZiBHFDe;NlD+m;MBK~gmSkF7esX88AHv$= zuFqLA*0-m8&PGE`%0I`H^oIETa~6?&gA4$ul_3NJv;h(=6<25}8B91N6LW-qfrV*R zv>&jV>KyUd1=cx8Ztc+VA{SO2v&Gg6tbSuRZY3l6Qg*HqJFqIT%N~Id?OzwzI57D5 zMc9lRV#7r?+2sX*#Z-4oLU7;~7_~n{w+bxzye5WXX$!aG6)dSIGpOC*FL0{#Yof)M zh@DIoFMi3M=q3r9q`c{yNlp$NKIVf9J~u6R$a=sqpzFCVvmSTJ#*g=C7 ztLpwC)yW-XvN9H-GMUsZmzI5{8i>u8(fM8z?_Xvv_FB=k%UC5vUktwje=SGcbA=^@ z9R0geaab@t=LhO_zlxkI>~9=q^wJd;9_v<4m@Qa9Qx3|@fO!l3n$2eOMZwpsd6MGV zs@TJnxSC~Y$m9#)l$I%Oe9byIWwXWuyo%NcanGd)IYf?VIz*8v234{+J=1h8s$};< z_ti_KZI~m|Nq)%DX46x(P|ZH8tU+NVRtF97TP1te+y>>3HBdSEO`W>B;L5&*IlJD> zph>!z|Bc-Lv`O9G`v&vTUq$q{tZqlO8_Hi!YcXq1&HSZoW^To)oz+ube>r$j-iC{( zHoUpwyZwj=0Oy2n*^9vPtv42$2>%%tlJo6Yx?g20faUY6ET)Z{7X)(t1j+3PikeXVQ2Yi z%nPbFS(=$|e6&1k^UW>aeIql)Hbv<;@PP5}evo_70;*VD&(1P5<{b$4sPZOkg4~&~ znRyH0RaI2QqP@L`8wGMaI20^$yFZ)d!0o*RFl6vco$7QcuM3+X^L~?+=2$VSi$xHS9$>>OUn~*EJKpr z{O4jrkz2mE<3g?!nf^122&>6bF|s1S?UT1>QOo)wE9(~);v8h!7zoM$2(kZ&$D2@?YLoF+aJ0J8chz z?83#o03M3HO|J*=q(D^%s=T(Ys5}5WXW-NY2l3{yb13i$HwBESpBQ1af0B!5aXdzQ zYa-hwa!b4!CY?ju&2*odXRqhW*y(0@rIQVSYS$hWI6D}`$Mf@hC`=j0FUv*eIR5P( zF{u`Bl>Un>5uj)8C20gY=>;-6z*VQK^7dqr3&TFdRH9Oc(}hiY_Fye=0h@xPBcbK)NE$CrHnuomJ{Ce%IHCJH!}q~y*R9pkWkTETG>Xz7o+MR zUjBP+oMNj2%weKy9bT(u>{tn)oM798)>s%gK^m)-7p<$qeHbsqo{|tAYcD=PsVBvU zA$(z!Ja^3%AQyIRlVNkww``MfsGE2tlqZH2N;~1}3`8OwK|u#RY!`b%d8bfm-Ccfo z*U}-+vx=ueeqp@5%87Oc=p(VhLZ{5f!wTIO#_!KCPkAGJbjDjD**YfzGujSGhlpc= zN83qH*zBoaFQK-N(Q^+H%jQNOJ^u=&w${t&?n$kXskffG=H4n)@-<*N_H!kL^SBK6 z!EJNAF;KIhhsKXL2QEiT3r_)mbhd@(sJA;B@qyIT(0{X0dqneAo!vTuudPVs0r%Q=*`EGT4!f#>WX=~W z_1GUlnq(?jVKnc;c8Kqyd4yXztk?j8-L{fhiNz1A^w0`Vg12H6)KH8OhTK=2U1{395xq5|7+bjN2kJpO{w|Kp$3Tvkh`Eg8V%qD*9Vhs^HV)@QGwu;-h!?QpbA zwZ#j0G=A9PeNnHD@f-(BiV^WVjg^Z1@w^Fc-^TM4Z6CFuK9A`qNT1QgJJshiZtYMQ ziTYnt)yB77TjMSUQd$A&KTUUl^rX>qO@UjukLEYnAR5K4UTISx;=p8z>+eOaRy@M_9bu)8fTKfo^$jL6!FIh&LR}TTTJe5?a#|kG5lKP6Ti%La zXJ|GUYJ-v&j1~8z0=v}qj$==nZ9oi>L^l8VZqx{Ksn1tXZu6F3FSt6`G-@}fI zvi3l8RQ#@PjXUrrQAeb3Y&b5QxnPg=UlB^M>j_~0sSdo2^Qg?OjjTF2Tpyc*v26>w zZ9`;AO*-D~z%9_t_GjW8c{b1VtU?5NmmUOupAilTt3BohJ38|YsN>bnl6v

3=7yR90d}lbCFOSc(XjfKLF;^)E#wTKJAt?qua=Q(5R;HoeTOdMVb|_QZfZbLnqMUlZH}XS*8vy;lTyEAqBE>XpaY z+vaDl+!DElu#KziDcR0wGJTENC?}QId}j{Gq5d-?=evfg94JL3VH)Dwu(&0+BYw~4_QY?;3HRc6&V;^foq2G=?fARJ#0OOi5Y4?4Te5fNOv*&dw4QVm zd#7Z~q%O=+akV@bZkzd5UK2;Dbgtetzs_szsIdMHn|y@ivfv~B1dCA%t zVPu83%xn#YPtT0|@192ESxp9by~nwAe9BtSlho@!d#SY^ZOOb@-HC;-3v*x~hs?&y z&!Rd=Gx+fdCHv>J(7;&0{DS_z*)_ws&THq_a+a+ZlW}p=3>!0N{~0z0S2Zn{UV)ln zn+NA7I;!N{rP#bOzaMq@enO2PgJ@JaDl(&#i*BPCAk(LjL*g7Q%Ae-(IT+d)nt2t$ zcosSNs$JpRv)!C$X<)&yb+!Q)#RHkp0Afg$-3lE55T^?W zV8?uSVWZ45s`#d;0Sebhd+~7D_0uW=xSYD8G}_K>OziE|3%gV16C0Dkx>s~lIbVBaGRSGHR;KrTqQEF3WraU z1T(}q6@aqvr_*j#2BnzhYmM0{v-Gte*s+rNuTSB;XtSBTWH38uKDFcyYR-?BbmTP$ z%&SW}#a^Y_Maay0E*0-wsxe27D9q&XB6B*kn`4)rr9Af+wP6<*IGQ(0IWB9(4Oez!~>8 zUDlfl>hs1y%<>v9e=x#o5<+za=x5E!qcP^1<+re7=GoMUPp`=c|4v~WQRt)kcjme^sSxhhYermGxI@?WA$cxa+k-j%q9;o7{S)S;k=6%vx_|f#nc0$$+!=NB+F1|kc@sysg2X-~ z$`aDrWnvsDXjZSfl5RHmCAD1$2 zzW!Pg|0UPl{8}UPkB=v_ljgQYL=f7%Yey*_<}_+9&HvRSgcT@a>l@N12O z!u=e(#oYaAgF3Bdmt7(;!PlKWR$}nI?=o9d^lq3t1sv$Vl1j<3Kx&Ok>ag7?Gz%-z z97Pi4oVmSXEF{umXOg2*Le7}C?`+J@o8xv?vNE&Rt`?5USBcm;bNsH%#47o>A}qs` z__1R^jWViBKH4=SHvV8fA)lp^F#-faAPREEeC%klqsl5`*3mZCsn(qKWuydd*xU@; zgYF3Q1f6HO!qnWBk>{#RG5&JvWWQjI04rJWV=zn3n?@!7`}%dBJIyRR*2J+w;!vd% z%)p=8LyvF%sU`c<9Q)JIE`Q3L(1Ubsq>HV4sRJGwR1;&Su|wsP7@A8<*I-P7hygP1 z`XA=ipW+-FB+ePL;qiwdxJk#GJN8W_j?S4IkGD!ZCjVC41yZNSkKI)tKJJB*tHvs1(RhA`X8nYlX$#;egKED2^`QXKIY_sS- zm&LKoX7xqJfcIjGBNQQeG64Vz#yo{M85#$VFv{dWV6HT zjs>40fTNFxf6b0)K(Iy_aX{cqqn0>{+>JLAZOv`tQdO1Nw<=k>@LqE8X`#j|@IRW`SbUBKYC{b$W z@I+b4_(b-a4<*wad^r**t&+&Fh<-^@8Am6v$qdSPx&aGkjzY34`Xs@USpl0OW+t@i%jz-<)Z&{5JM&(I@udo9Y7{b5bwHJG&q7f6ExTzyV|slwTQL)jVD#u%h6EL^#Bx$|7^9hVx>V$-)7HZn)D~0*8R>r7)-dQeMC&vbMbs#}6EackT$2!hs1oQFr}~N-Zii^D zDG9RiV^8u^MK$tq4A9VEW|a``U-Sr6#E<&00F|+Mny)~BWQldL>Ig)Zm@BasSu&EK zvTK04zITU)dH>=QWp^_3GW2J1c0B$h1gPfFcDM7A47yctA6J*eWW03p{MJ7Mz4weBBJJ4-zhYWYn zqEr$bRhsy<=TQjwyBzI#9C^@>X1jtxNyCIypG|!8EShQuQTPP2T{jqWA)E!9FITog zxm+y>#k2r(3~vlc1%wcFt}~eor0J<OXrh$o+nndVUIW}te42PtPAYxX(01OLVy(|(&dr(>^3fi+w*Al`jqgY?zR76Q= z-kNQ^kiAx4N(p+AIM|-KI{XJ}Rym=FGGXF4zzrQRI%0rC%xa-%+X2;DBJS(JnmN1# zXLMk$M2n!^pFQ=mNK|xSBT?V8!HOa*?F~1{ovt^>RBWo5XVJU$|4Wjp@ zXJ8`(^=0C(j;ukrMVTqlc$#!#dzg<*O=os9TPxakVKdksv7-xfN9K;f}Kxqh#$MMbUeatX5-+rPrMnx<>IMs=t%3t7u~SMYK184&QkFBu{&$yzVsHT zkP>kf2DJ(3=W5pMk^>beT`_;iw%k?ew_;NF3#Jr6zFp3 zZ;7eBAk(+S$zJd&R)~P!ER(Gf?R&F@nHJ|m$#v<#9|l1y&@~c&?uRm*c$+AC7r)EI z)!u9>XiV+H20@*_>%*R`?~|bnc@%0!r5JuI3VcUwy_GfPMQ?~>x3cDV)%&s-_O3|n z%aR>yt){)LFUF^>LiA-%5oSm~mY%wn8pXGbg&VUqV^JLt^xOdQuzoBzs%#CAuaUi& zJ%_~v7gG_4iaJF9{;UDQf)bqO1%i9uW0QJh_GTYp+Ad^D!UPaj~sdcr+_Pw z+y7s&H9zd!bvGzH%F8Nu8Z~kYOPWzF1`c2`QH3|EH5i^X0Q1EaV($Q{pce+PrnL&n zl!7vEGsCZz3M#tX#yYUo;+fl67JE-@xD6_@PW*Hmdddp%%s`fsSgWEG$b{0-+9Z@R zP+u*I2eJ&ud$L7~#Ib>Fa4%nvz$}eIs=nnXUFN(-tyV991dJxe)`fWL8;Ow3X>1TL z-p)D%eW70ai4lRUsW^N)i_kp;B5i}cLbojyS8o5`=gj6HmixcXnL7<;_p&X*91MwW z5nm5x9r%J$5q<}2-&3{?))27NK=N?7Y`5dVNd>y%QCWZ%0WOLb zb zA`{k^3D=J-TD&}j=^6R!DSw!8sjM8&K;%b6V*vqmZ+>O;qm0$-#g-wMjI0ndkFgk0 zJ%oj5>p<*W0gDO2Dh5V|C}Ycd(co@2p6wR%?`C~@$p&%cZkDXQx1mgodQ^)NvG=f+ zeBXJ|=N|S9&-0ko%bSYr_pu~#!?0FCM#xv0w4nJe(ckD}2NkvJb_*_p{}X{BPkFDK-kb z^DJ1$35*;dJLWgW|CU{h8o{uw!&iEe_cc$=tkngJK7>FM zGQaW=Yfd`5<{|bH2|fK`)`-8iK@5DDJ#H1faf2v-nBBrRZ4iNvs3N;P!X5=#vHB4< zEn+tn4FwN^0~Vt17RKo7wcm%M*@JAaXflR9%u6?j>0?*}R^fST411pO(yv9zV{CAP z(yyUDTiW2-29jJ4()z7`)n#`A3?fUq*j?sOevmkg%pm zekU{L?;voRaa=x^a%1wR1bCP0UyCtgnJdn(0tx>05=+Oj82?oGzMvOnasSy^*2K78 zy=ujj2$jU94=nWf)iNp@z28?$PuqVWst~`LD&q?#ha#VXoDpN5U=Q*I+r;iC*rv9} z-Uk}|b5sm2B)oDwVA*sy?eM~AZCE+)u*5VRU}1E=XTy_hI%lUv*3)buU;Bah{%JOa z7i<*|Kf@kyRDB@J6}z5ciK*5KO<$UJK$W2pmQmknDZDfuRU&j849rf^VjR1j?en}e zj_I`2BW6C!nl+hQ3WDSUAml@X&9zHR`)K7)-1i)7$Jg!>SD$Bn#rMy#(1vSC4Wv3U z<5ZwKK&oSk8r_O_iGb%>CSScvbaf9U{Kp>l)$@)ld=`jryoXu8$nWN~s8c z36P{fs}8IPFp`QtD^MdU!jGI}!|&ZFWZ4aC+bu6Qm+UjCBxRJeJQaK~C@9kR@|A{e;wgNO07aq_a#Qua2 zqP1A@#7M2Xz{+eRcGN8YWPo^a3hT=CU&NLvY%CUHMOr><&C0~EeAY-D>df>k%)xw{ zG(xdBiQ-YHibu#WfmT~&6ilTub70%9e??td90}D@Qm)IcKev5pM?|bBp3UqDG}mCp zifw-WS=9!-=wFF9^I3X$y}%p2l9~)f+_e zkMP@GpU#5$AJ)rOys#^xpn%1RL(^Fh&)+B}nAq5IX*&F$xf{jcLfAT20a6xh6wL}) zGJi_}L$K&7jrO{YVnzXr4S}OB-#zjjdnd)Z0$8G*;&XcJ5v^yixL|B)lSl`IJ_FDb z1aj)$WsrknQJ5073-=JebOdE2>v^Q*S9U$q$+pc5LC|GBz< z+iz?V)nHGY!HeTvMMrEO0{^%EOpHW(Hi=HNSSqU#qh_%dkkz!An8Yp;9cLk^;RA-w z0<7-vn|NXfhhX>g9=aVFl~f-Sj~vzUYYu>-T%bL?X=sF0;b?JTEC(4+vqU4E%* z!s&&WiAjXyB!;~X)Yf$nYdk(gmq?w>8p3DlJsS~@Vv#qSb!kyVgp6S0E%~I~2pi;I zI}}`%R!J}Vm*UiH*8A_%Dq{}o8kM^lDA$`{`=-ABliAh(6&rp8_fC{|{8wyDAAHys zZiKBSz0tu9(XnW*aY^KwEXLftJ~?H@7K{5E_y%*|7bi_D!%Pv5xtIa}zXiVkTdU!; zz?ZB!R=-aQcFEIw5vI^_Q>8h!OFxBvq{pJ^Q^nH7EdC~MDvd|XpkJ)*;1>v1J{lHr zJ`%rJ-N7$XJijhxQ&`SbW$1}0!%vE)dm&{qPZ<^gd=N<)a6Q-B1SN4mZG!bqrD7!p z7~VX&vP@9NYMO;qR13P4X%$a|6w{JH{gMSIS4b}H;1~JyOQKN`Th1nmPm8cG;Qy`4 z{~xT%zmM&WmR5=CRfuR#5YE-?Ew84D_gAxa?4qb%&0_0a^fn9H6I(m=i?od2U34p9 zy~Luo*uSy-IOlCBW}evhHk-s=6+_psr}5amhCR&w5}9jR*6peZv7yJ(J6E=@$SMG) zj+REy3W67_4vNxcskh)@`&t%zmp=vCvt((9FB>VKq;ILHDod4MDU}4NBB@+`f@rpm zB{o;usS*_x^;?DxpsGS{71S9^@BduK2E|X7GQwUp_)KzbSOREjabO+mU`&(RuF;Vt z3PE9szKXhZioJtIgb1ul@O}vns0Ab51nf#N_#Jf63US~awi`p`o9|-DW0H8R7_Br} zEGcIB5OnH#1P>;QY3mVooFv{~&zi+tk!+y=^c>Bo#)kDGY_b&>*R%NM${d7XXA}Zs zmT?HCec-;gAZ(Av$N|gJ{XG^NGsRnpy2Qr5hag3{nD!pK$=9n%mT1yT;tOPq_g5g< zuZ{ezWYB6A>5rC*Q`xVnk7FItf>?cBy-{pX*5IKHh=NTK2RE=rY})*d?Dia09qgi! z#sf~f&+5>0MZ%2=Wk)T2#zraQ1VL1)r8d}`gVvCk1jibs*HqzeK#;0Ww5)q^&I<3n_*R^ijXZV zy`kLF;$3r4xj1M9STAl`VZkIyY7vYAI^M_+ z*e!i3Wgic=+8BpzGX1)KWG%R(1S>-kCBdX>g|s?IDj-gN0C#n&2;RorY^taEHmtUx z9}d|L4{W-av7MzxiepN*5PotQi*4XlOPDp-K1&M9XVCM-on>q~ zD-egvSgUl!v!RKG$zw=zD|2XiEk=DP z_XEAG9t%HYcfch${h{0)6#NlOw00{6%Mpn3zjgTYw^lCxbsIto$ZmYZUPOkiAIS^{ z{4-rXUK-Mxb)#9JKx9ochb2m6Zq_Df+NPaE%6*39~O>Y!5o4snVi%`j-K*-na}a@tQK8+DT=2X6$4!oXrv|cC*ZkIo2?75K4#etzJfKB0g)h z1APNf{GwNA8MaK_6j)l0&Y5dvSxcoD`{i%DY~2galK>@p=WR(nF{m) zZxzAKHDr)#IDNR(U%a?Txds=hMvM=40W7A4n;^TBS9ppEBpWTj-^|bc#$Oqd_G6d7 zCBPH4gbXBIQz%l2j)hw&j~@C;xCR%ge)22z;U->BfJioC!C?2#S!`ro-l^dO#o#Yk z^ez4ptC9rs1O26|SWzkX^)cjAEM16ll#t_9A!OGVP;FqWHAA5xBhUVyX0}5OOl}i z8Fa*c7a}#6UJye%{UgieTepcPj$x^02dxFW_^xd#YPjPVtDpUi%oSo($!91CqD!8Z zFPBu3BACBj5|s6{g+{`U2dXy)wty0`4_+3%NMb69*h1@D5?Q-lWc|dNK467Ljjb{Z zErEmEGMVKAi#TGH{=_RKX6S#);f-b<+^%YN;3rl;ME&7S++#u_4~*rl(9C zBD{~wB%X-*nMLG$Em!QrjHB|2RWZoUI4xi5Eaodod}&F7_OJMfd7_L-h8P9@u}P^k zz8X>34>^LY;AEl13^j5V$v+%O@-^>r2@1Ym^HMlaqAI0Z>t9|my;urQ>+W?pER&d6 zIQEx0>SQOOi_{aWn+l)Ch?h>V@VY@(RrRmLk`t_5RGkR=T2e&)E6?#0EC825d?bGT z1$&1Ud?Z3oGNDcfyF=uftbH7eAUczMoW5PWf0Cs~ua+ht5XX@z%|WTyeD&u^)>)lF zb_cm4TsX3a=14)F-ltf{sB&eiLyQqvGlB6yO1YSGiVgAJ*+S$vE=VaR1LZ=1Q-50) zLq%iBMqfj3*nem2+X2pvM5CIXzC*KTbB^N6 zCS`|4M;f+fVl1|5p^m*2&?K_eq2d3SPL5B8c z8UO7@B{AzfjsTR1_Wx!LgS@9x#qRU$8MJ=)3v6NHdqgw^JEq$6Vj2bEeFwnxfB-g# z^B1sPR%RZ6CYtnb)<0UwNget_8v&EL(~tjVO&te6B5|A%`tNu-ZN1$5J8M>Nvt&E~ z4WhbisTlt|8{h-e#upkVOU2i}v+gJ<`VZ87jkx&_EDOCSvj1SXg+&z6+ZOTJAIz;Q zEs)FxVgK#>;>sT^9ts&(!%`iWtfG6@Fqfr=IMhXE-<}ePT8*z^xVS(pszD5-OkA#! z>r3f>vMlGKPpAoJGGpzhV%(oN`cWR{vGo7ec5L;qH_* zqUx_3_Jw%S^CFA)>ky+avfI5~AP6c)oe?sVoiSK-#xE~|+3n)WMb@6J6gORB>)0ys z<0Y02;K0l5W$Y;2bD537Te~aR#<5c5U18lrR+0Fzdzoj6C0AHdM{MIZ0$jn5>+7rp zv?6AmLHb(RPVhCOu(=!$9ZnF&1UV%`s&HRLN#&y8D(e(mDMt?P9Tclc=7!tY<2iVh z4${n4i@Yx|-d#Mjk@pvma(+9YbeTf%aT*YzYA(~YCOv+KER^mmxaLr`n7x%p1<~jl zI8L7-ZjI8Ki&h$M+hCVs)7KB2y6n$Vhjxn`jo;6z#Sa>9&CZJmJ0FKf9&Vy^l*wbS z=fnqg9_y;69z2|*mPKJ1N2%n7nr$gX#my0kbZ;D4dC*Q)h ziL*|S*(Q=g<)d#XZyx`Fl$AZhwx79S+KfLj#da8}sLhN}-p;j6Cf7q!eYcY~xMNQ; z)Xt8`igM47gz{c&lSmEY4Z5r+WZKhc$2EW!5{8Wka4Czy-G)Yi93yWscGMXo%S28X z@BJT`ITXh4L_OMsb6n0OMuzhk2CG?h#K!@a`z!od}+SCC$ANydx?XqRYZZ=)7^VkIG1Q zD9_?q)D4EFgvk>W;UKU~$Bu>d;$xkU3zoPr!uv#zdVD*tm}ovw+#*I^=;$k&3|^p) zq-DkF;)(h^f^DQ@{FA*$_&4GRf1DT*$3(`xM!1Ijm_W4 zo?z^ur@m1%jF&}si02JK`tEo>0DC}}$D@Rg#FcnH7&HeZ@MojTWqWbsiX7u9@JA!b zcer;A_=$-;qrTPj4wMEYnLI3!w*#G7iM)ThEZ${PY`{v;$dyJ{m6A2!=~^-N5|cN# zPiRT}$*AwG@?0d>V?PkH2gR#NJhg7h1uLaIiQmjG9Gu?($7Skd%{wHsN>PN9BrY5j zUH^tP*AEL56Nxn*ScB@&TH%Kks<1%3J#UN**gomPBe1g#Tb%I+R>kV%-JtS{V-0v} zT@H8nQN?^mmfgG|Ps*v2f1e*#@b$}f+^Fnhet9u-q7tsdlA-{r#JS`*)I$yCnUhIBZJ-8 zH;H(fFNQVd?fBe-qOdU^!WSGAKR4zN5Kp%@;mwGraZMCYtC}dDzHb6k{GEtu%F|HJ z%}x0;2^KpTl?^*CmxJf+q{}R@)+=^3=lj}LeJj-#{j3L!1qHBXlZ}=4HX79`5w?V`0ZKz6^4ExG zn(+>3ku}X=iB5>BW_(bv)PA~LMs#Y<2Rrl0gc$KI4r@5CIlszIiPT%Ljjgl=--i30 zM9bD%BHx-P`nSfOxa}DjV9$wwmV7r%@ZOdj_XFjN)(`OZfixdAY@$~y$i7@W-HNvs zA7%0S;d%02W|%q`4kk>O+s@*#;|*~)d0Nicv0v88=ERlEJ>&&H;xmIsgsaN|84z9i z@rmLU4~+58qS6D&pAf;N{2n|;m7=hpJ%9D!)9LanY}LCvn%pb@AfWSZ#&bm07}{*r ziZ_j3K;@}hEg>Xpb|RLw;?cM)BcnAM99Qql4> z?1#e#Mi4Ubs9B9^CtU4iTE@QeA{VGFJxNY#&s@SAvSyf>i?5n%Xj zh>~Lki86?8NY3#l7t*C;#tFn+y(K70fcqe&5(jV}q{^EMd6DYlB46Itsb~Vn2QQXz zqDl~tkD66Q0p)Efg^Xka;a%kodNlz_SU&Mq(JD7zrRjBYBQ?p& zPK&uzLy3mJiPOWPWk((}dDzh2Q}eA%vTr z#>)26j=W(bDd<{(GkJ6p=hCbyVWI4lsOrd5vn40)+M0r4pFDgug%{@Kb+zn~R4u>O z1Q1aksxFqw{NObbxmW?kQ=NEXM{lDl+Q{fDjjFMrSe>xu@A^rqthbRBIz&_ z6`2esWY5V!f}dz{H7+>=`IkWfDAiK)OkwZNpGc7E@b~38uqq0=^LW1JJF%)e&jL>; zy7L~;speT6H;RjAvUsOx#R|EMx#3on&$+^Pr@vT}$y<^KflK}G>g2|-++)|Km4}!8 zRQ<*d?EawRIb#3$AGYOv^>GvI#&G`2y3mm#U)Y>SJNIn{vNz6zLjwoozD%AG9!eXd zZTegig7ds6OVFal)t)@x8vVtgUi^Rv>B9#LPj7ywXLuhT%*2{o`ORY3tzf*+^UJM# z5W|hsqDw!XfXn*DJ^gqV?xYqA`*FIIT727&)2-B^NqUbO~xHCJp4VbwH0fF3c!{`I{$N-j0}vDf->c->SvH zTdL?bh~IJzXwM*imm`mE20+f#!Mrc76L@McZ{)j9;Pt`$N$iGj-oXvutpa!6!JGQs zj*T?}W5Lg8b=;0EX5GR2*FQnm4`kyivXn3!&FMY`2Te}j!R?Ig_nf;Eb6>}P>qvUf zA+Q1`te0np@DxXl^|E9LPeL5;{UN+>=llhdKg+P^ll@DhGp=d8tI=6sso-fmUrWLL znsB)(r9gufS|z&O&8IplESjI+jnWnT=J&y+|M7y`F__39@DU-whp+*60~I{jr}NrAv$~42)@Gp5gi$Mpbs3(lP!6e zNPd9pmRH=l8P0*o>rRnVxJm@fJu6-u&2Rn>SC9{MULu{;&ro$l@mBPmvtrm7J_Z{8 z;TYca`dR7q@76q~`fmGd-X-c@S0?)|wMZZ_euDq6cFBMJWI~uw%7=^fG2lNr1{Q@^| znY!4Ar*)5duqz1ns0;UtJkIf{^eMO)^&*cFcfE*Mvndw82zF13Z7-ug_5Bxme7U&t zGVdWa{tMRgq}cl}z7R5>HJwL`+?ROM`c{>&lA7((aVHe2Q~DBbgDBvsmv~o2u%YPv zG9>d8QKg6~2;Psk`(CM~<;)nzAT3?Fia(GvVNuv(dC6>L&6U0|J zpm<2}IV!i7&(Ctf=OOV+ZY}Kv6KZM4673jcfdhP2P5|vMgf&?!8b9T4NE@Y{LeDY0`3uVmkf*YbJ8$WN7}pf46dtt#MUm5AN>Fs9qZ*?g$a zx8mWcyir1_*PtwNx#OJp)(1opg<};E#j>e_EF;={r&x3uu6#DT}ULbk-sX+2FYzE#+#Va#7MV-YAlzcq``F;eZ z&6EV*nJEc0nsrTOa5GVqt8uogk*thoshA2E`Gbj3-MUQ*R^ID~+WTvGHGO`gzCmV=?B0mi2ct5+96 zrrtcj#xev+SwUL3T1nBVw>GN5aMu~=9Wwdb;9}}resknr*;uXh%kmlTa$y(5fw|m4 z+#Z?7T`r4U94$S#?5;RE#mvd3SfvT~e0U1wqT75P)73(D(jc1bEz-x5e>TMy;!)B( z$^Kk8pXUUBDfwulU-rZactayBiaNSdc1jyJZ3`mJv+_~@Qk3H4eX#ZX`K#wA4f;Df zC5oT>9xQC_q$c7#`B9HUQXz{ir)RS?pDqj4Nj*a-Yjc41R8{^2uKv=Bn& zY~3Zx7Yi1_*zFd(7x7kjTwH_>wOb@F#*&XDU||=_#mPNl)MB2A^f`;+81EL}EQST! zE%YS-{w9niJPI|wdkOF37cQlyxKx3%jI|WJv_1bJZL3OabG`D`%GR{LNMEME4?|(PHfv zz82^36J7PtU~%}Lfcq$@mq=l{8OM$I^JN^bzuyzFX;DhOJ6!4@ILE$h8%p_5e~N-7CQL3*xC| z7?gGk_nSP)Pp}|v34QBsv3(g@aO~E<#*chQ7C3 z417aodHfBGuDiwLH+ZH`0ddp@nTV?kqI@}zYVuF&iQ{T3pwyotRHWGjd!(2ITh5z< ziHzm`Oe}CwPYD95vcKS-m}t3NGV#iCzhY0wVu7ZLO&sp4i7JnXKrqHuRi4!w(V8T3 zYRo;g393BfU>yiCd)i{Q!wTNSS7CU&M1opSJh?&&efkP4R(M+&-mWiw3(^PpIIF?( zNuMyfhX}dx>)({hQ})-38mTF=(bM=K66#&JIELD{RjrcOw(p|PNU+||?x`Z|q+D1l z9{Z+jw^!ffjnRB--h>ykTkOT7qmQ>Lsb;#x8x4Kg`V6ImxF*ixR;3y)@X>Omq;=;? zN$Z7`eodo-ZnYXADpz6z+%5L6%R)4H#YIEf~WF@IJ-(Z+LKrFE;JqZa5Wzj zu#?JF{#^gJcya^DWM~X^Lr^6q(0*5#uJC3|^2GgAw%|OoV2LC*Fbg`J0&W4*FKPSVeE;;uAcSb4gCDZ1-AM0>g@Lq$e|k zT^>%~Fd#d+a>mklCUy6A)Xm-nCl^FNJbL>2sxp&u30t|zWCp$F2TPlm+#p^9Ew-iE z@+x5#Xu|}jDe)!o*1PDi2gMif^4Mlx|HcLH^BO*^;mAdNGzK4fvE-u#J$8#*i+M^< zzY!C}ee5en&FtC%O%_trqhe57Uf)D&aN2C+uI z#~<)(t6H5uE&Eg44f<2Te@tCOss3HKwwvZxQb)YLhq9njWR>u^jpPPA4dv6fTZm z;w~hY4~W}c{AnfQ%WIN|g0vu@^tV2a zBUEj`r2X&)OcU#E_*u+$Tmn_W@tY4vPlccw0<42XDi?`h<9N8XR3yFN!c;qbKFRJP z$GepQJ#HLp-?duN=CSZ(f|I5 zxGpVeC&#zV#63H)P_kak-^tVQsWef(6WAxNic>qe_iJhUMA$A)D;9%xAsV(-v9E+v~URC>(?*H{ZO>o!#f9kO>%K!U*EVrh}&Ki^Y`%MsM5=y@iatj zR({5pMz11&Lw>p{8jKXz&o(-s8HRn%J9<|W=`vY2wr|z#|Cm5Vd# z5%UG!ibc0Cc;}c+%6)^eT3K3ppr*Ir#;Z=JdV{BkLN2sk~z*1c?8xT_!@DqE?*uCqLGof1MvdD9VIr=Yhw-P=%s{4XMCr9g2Kt4f4@3;ih*1HR?1HkYl% zgKAulivT|c8=BH94UbR|b);86Nqo}U*phGg;?XmuP!bfBmYl=nrp63gWuhO9hASuw zenH=lGIu3(wpFD8ULoT{z|ntJif^1qCj8zV+JL=|%wc7XS({ctFW zU#aCm3JsMWfQ>mPP9NaY(4^0Q$DiQu9S}c%#~aY1R^a!%Ij=k*+J4VBBKeo^QH1xS zp->uPsu68JrZiA2o4g3#-PLs$ryDXtuXktz2yK1^#!g(AI*@4;!d z->dj4e(bbZdIW1>zk57Kphzg?@KNlsDHs1f$~V@sof~6S)mQ|fd&+-=FAk*R$M_eu zNM&+f2~>$B_WZ=Z2hQr_{7fxQwH#}Ksc_c)%s<5N{?8ML*p+*JI>Fl$*`$;3)XPQZ zlYBp)@~bE66d$kQe#jYT5GgJZyUsxKwu_Tzu(Ebk3_B|gXzp2QKo_0mWI%s7%V(mm zjjiS%;XrxjIb?u^IR})l#MpDZqrXmu{#_?SRe;|*a4vN+)O(GFICM_xWP{&$4((|D z4eN2=h?Bp`;sejamKBP==P}isC7wNxwalsFgY!Jz`tl`O4C;bksIUIDRLpRAWM7L5 z=OKr3;km#&0<`cc4I0{!*BScZ` z%i`@_H2l#gbHxk4!#M5|um6siQ8^B2@bnzzA;|r&WTR;UfAGt4awg00x3upBv##W= zpudT)V}#?o?E1T}@P_Y!7wjYGMiK}%_*op&Mssh?NnX=r6G$>HE?)kFJFQDcyuv5? zGIF@&4>?L5`2)_teo^y>46?`7VC`j}=e8P*Qe-Ay_!A3WsLh;<{85;#ix>HT9^S3j zs=v~Bl>0StSY}f@u)z%Y-Nj(2|KcV*?&$TGp^@dDA1?EuWGLES<<09DikGgU!_1uL)Dqb5 z^O|anPzhxR=8e=wu=07^HQ0oCUu$E%pShJP>|)deR3)sLS^O2sJzFH)Lt-q`3{ZN9 zX#=byb9DYyWr;SX{3^n^)+?i2*>GujDG?$kBjbe@#gYP&j0h@nx%OQb?>!TwP1ZdV z6x%{WW6}Y2q2V2}GrV}jqxU|Fd73t&woKJ`$maW(scbz;R%N>E+Ih^*q5?EpYU>-I z!J3LE12h;Z&x`;qhcmb_L0T5W4ZT6yGRwhq_$?171XM6A4U2n%wHXngTqFf(W>nKt z-{?6XtWBWB&S#wv{6VqMsm;eDGgM3GtA7*2L$ywPD=rug)&5cc6R*#OXcN|?X|Xpt z47p~APGOomLN3rWp~IXdRdv?xA(X^lalu^^Iid7x;ZSP?Uvh$8gB&%?PbmJ!_rYdwZMw5MQ*=b?q`Qnj#|VX>~pu zNgjH$`r5Wy=UcRh)SAYtc)HD~e1)!bbz$#}`~yc+9*@*0UMC`!(U>xHP)-&0i){KcZ$1WHQMJ|XBWW61Z@RiPbO%C#5eKU0`K1oxAIVV z}0L#h@^)HipA}d$Ly&0Mo5mZ$r{+bMQkV&QV5m{kc!gZBk zT9S6Fr3CxLfh4Ud+dIF378mYQg&;W*Xxcz)6T8=IU0`AQU?GUki_t9M$p%`h8!5(y z23kMyY-?>GjN^{h=pP5f$<|V<(%NYF$g~*VM(Y8SxTK9X0B@(-Xw4H;&E+OQJFQAV z0(v3!dZ%d85hpDUd%o!i6$s5eF1v~B;No%vZ4x@igofHG_Jc@IhI0Ji$xqh$Fm}LG z>C(y=z_U}d49wiNr)Y_oxqY9a(Uc;v5scA~qE8ELDCTZOEi~Ey{aFjGQ~WpTW0$ML zVKvA8q_$1_0Th*+1Q{SjH_HBYoP4eE<8ZwpUL@OD6S zX{AwMW>_n2XQm}z+L8jw#xc9HYi_hOosOh~XxNp8i~TL5C+^JDrh45-n^8&|SY$47 zHdAXTb~Mu(@qI_dFU?>RswRndyK0G|dvh(OYXLPH&w?&t{ihNu{$wb8LqxTVr)GLx zS9z`l95HKfo826n$M+l+?=;uCqk?CeYa>KhYb}|4&^jB-wVSjlkm2;3wDyp1v&LEy z#B%s1?U9Bj@-TZ?*TeN{51!}7M;Zb$Y`Fdv+bPhi^#h)-8fzsi%nRf$_twJJOsr$Ji_#E>-2dw-IH zrc+R6hn!ET`;+8E3=vuds}k$dG`c_Ocp9{}Oa!E3o6}{{G+k@n$UA!OhjMx=4y}@- zEWzj-1mn`R*0tXKR;gzPz25!SbnQ8C*|wSN^tn)82x&z#%_ROku0q;isVl5r;sDmqqH_;z3f<=WQ4h@xj(_R_ z{{QqeyhTgkY`dpZFYP#oNA9{+yTbky$$hofeDyKU9euUoOo3O5yZXZh{3+J;muaG^ zzgEagPl~4pz)*ZH77x%aT0>YfvEw$)((tBoNe@o0IcmL^U<1XgRrtUI+7+W67uVXc!meWzAWgpAO_ z*he1cU1$TeE}~HBo;!zVw=(|I1hM#TZ6IH8R{VOmHXcLU=zFyO@iWQ%pk-mL;Pc>A zE&W6p2hWLJ_h`2OD}1Q-eEg-eWI4Sb9>tyehJu_CONMGO*CcDWvcQ}C*-&j7CNM+q z)mrzcON7qKSXj~^ldlm>aX@9d$zy=ptJP)I)zFW3->a>}EcfYQ*hBN(BvJGzrl!u} z+9>G8KZa{}^hkM&1L{cT5s{@7JOmZ1o3zOfTNgHM?-4CUu1NA}>5AmXFZ-&_=b>BQ&{D zE${(t!p%F*L1^?15Zq1Gf%k;atO*CsZ6YXR?4fk;bOR>NW#mgStBrDNa0N9S>{BDr z#EYs$#3(H(E?4F_ZOIFVKVkb_fvD3hqqJvvLABU2O51>MS3UWl784|cEY9rN26%F`$qxY8H$HxDX))HyMZd9Wt6*AP*VUs}D@$G)V}19q3YRamORt z7{22-@%|%P>z#M#kW zBZn$%uZSO`jnqojM^PfhtT9?7K1?lEjDg6#%*lIr{FpPm1=);(^S)~7m8x=bolk&h~;D z;eJdTl>8x;TKj39zkR8v@G?+!+n!<67Lwhd&=5RI)+pTntIm32>QgJ?n-mnbB zkEwUys=oj_C_y+GC{a4AEYkPYSCT!m5wD-pHeGyDBFY@J?H|hW_DD>&p)9&=A)MQQ zo%xSYPO)96FXqActzw<^(lmWcxa@~C(D zHJ?AT(x-U>{(#q`;bZ(LUeq+u2&-FBl``>61FmUpVp{|Jd|%P6k!taWaQ%&x7J~;G zB@yEzEQ*qc@MZB*BdxJ+tW%ZyM9DlV${CzWJ5wb65HvI`2og zt|<#i?T$PXx}hVYd?DpnZ||upo>sAtjzwLi7dcg4U!6UW>37&YH~9RrP3#}+85GHf zAkLGabJ1-v%?e7 zSDj`P|6EK7S5_=hxE>@mMIQtdj_;}{Y%EtB!_Ob2-YGjVYCIp?fugGxNKKuD%hg=u zDZ^5jh*0u5;3eR%#Hvbd>(Ynlvo2TZXqL+p(0m@d+mG?ri=b#Fz{V`OhB(`1xXLp> zr!AJGgMC$H5Yn!u(={y=ZS8{J{B?@t7F-3IL|zMSYEKDo3ocQA6EC#jwvWHy+=6>s zIzEuBh2kxRqT5nRORCTv{MD;(SxUXFOOUZjtXWD4al^0Nor_CpK%APO>Z;)cpkx9% z7n#c_IYo-dmSR4tPe#V6q zC3n86V50TrdLrxsuuda^Eb-=Y%89zUpE$dmK8bk;J>=P&je2-#ydw@hM)^ZalU03j zS0WsYWS`wrt=Tk>)8_IxwIY4G#4$svuMV|vdOktkZq0>G3P0> zSEr9`Qk0J&XQky#%jS8mc<>nP7>zs|92O$}*oFtW9PugoV!2VAZ-X&bh~!ZsQBO*)ODCBiTnh)5q$1LL0 zO7U*=b+oA7O=Gfnf!2Hd7-X-dA4~ij~9LRQhpqttY+BV4cauE&Zc|o z*d5l0+P&n(6U?W3sia4#T~)YXNaXCJoUG7dRpBYFj8b%~kbDE?jHgWUO_B?-5AT^F zacCb6kCD_p2cnPw#C5b@?Xh`ZrL}!*Y6*)^90`(06Kifvf zcJxE6?Q_Z&>km+$$y=SO;zq$+fa_%iMIJ6+&J{@cRLFSxCBGeU_Gvm7^a+g#N>Qy* zggE=|9GMlN1K{N^^YgT^8Ax7*INPG+eA;2V*LBPHdSKoGW7i&l4E1-7^kv&8RD7u~ zzk`h3udM4u6JKZIPlB^G%lxZN{3&pDAX5Ho#QFFx`C7y=EWt|&&m+ND;05q3Kv$+v zvpaFeFe>vFWX8eT27V178+gaWw}WRG3f%CLF(>+Qw{K0*fWfUIyg;yn6# zho;->-7ZhHF@Fd$qlRCZ_)!!88hoT3-)1^sK4nc@SGjB~7v{^`k>odlU$P>kj|cB+ zke7n9)v10}DMy%qg{z+s{NngQnwwQqqbf6z{sX|?K=MH-2glio>-)+4-~EjG^T-vr z!h1ppb+Ku3JDndjWZC;u0w`03d3GhQRq3m+r+DrVrD92J z#ieCFsymJD4?-C5*y}n}ojJ+pt*`VpW!7kJm%T~!{0Ak9{~V&i;QHF|t@CY!15kW6 zLiP_82&W+AlPez|*(0I_9k-fzJ~*f0r+LaGgp+~W0FD;`PR;M|x$1cbNFQo*`E5?E z-lsWm{&tGRhiSUVK1?}7k+Bfy32+BeP5k;u+EKR{*^E2&`Y-SlcU_&>^92oyDyv)l zCFOP;G9FRU^d%+58LMWUShr&F;+K@yOJ1Wtgnro~W+gs~?#N;4H^_Y9>SPcH2bJeM zs;)eHiFiQrKbZKdCf;h|ZnhfnfNK~=>Q!?T{Ou4Hi-Mz+X5IL(s#FO7QSzo_K@s*IrIE1H&KAT;eMcbc5J2Z*)-f7$v(Z8D zh#PqcIH#pIgdIdF;&%YLgAgAc!_U<26tljj?Hz~xGN%_kL?2n@)yD99#tWDRu1E4` z!EX_3zM+!XvGY{jcWuJ>WFgDgd8?08Wy(4vPX}!SZUrR&264V(tP>9(Cr4~X6W;1T zGhh+ytH;h07mic*u(e1Ztn+Z~b8*aKvzDzb1m}%0eW>_Lh|+uibUe(26<9^d2}%gc zOF)U=;dN@^O@}Ry!F{X6osApknPuDs)M?+pmM16-bsF~0#% zk9GP{U*FJV-Sh z65vT-4e&DX8t`}EQ{WizBM{w;s~j*8NCUEgaX=YR0l0xhz$4A-Xypk+)&d)Vw}JP8 zkAZgJ6mSmcXpOpK-}xOCrBpl+-d1O0?s=*@&6_J+r>Q2JN0YaHIf8typA8fPMfyeA z+YqpMt8A6t29MLP>|7*{pQagEM{%p+b#s!!Yt6`c^d&z7xsAE-pP}-gbUtG+1Kc&q z3&HyvcoFyj1D^uU9!2Ia1!w0a`Eu|H2EG}5nt{I!4nq-loTU-5vd{=PSo}jJV#Qe+ ze<}SLq(#!dI7=(xxc%pFg9?e4&f!5PB=(=f)#zJM@I4KmIQ60M>jQUAUN+7l&K}3e z6T!`XC+xU4eUAstv!eJsm8X=#{jevnVrlR`(&@~N78lP`Qp8myU!eS~JiMB41H2BQ zsE#=Z*)PKe^a((qFC9LYRfxwf(2oDNq38ckhRz#2g9nsDH%?TGfEB=6w@Cbf2HTS0 T{DuG{fYHD>U@|ZjxC{6%k87l0 diff --git a/wasm_for_tests/vp_always_true.wasm b/wasm_for_tests/vp_always_true.wasm index aafbad53c54b83248660e6a28ae84182da56da3b..8fda29c456ff4f37e26d540a4813ea639db017c6 100755 GIT binary patch delta 43818 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 delta 43599 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 diff --git a/wasm_for_tests/vp_eval.wasm b/wasm_for_tests/vp_eval.wasm index 3b7ea771d8118de6c7885e3673748912cc5d9487..52b9d43bbe4c0eb4152365962831abb9d5b63bc8 100755 GIT binary patch delta 53835 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 E1KZFLS^xk5 delta 54323 zcmeEvd3+Sb*7j7*gv?}t4%ruyo?%OX5H<<2rh|wqDtNt$7Zo?I8e9NzUlJflfB=C; zDp7`K|1WDL5Xjl})AgBQm!lqFWBO-zze$T1yo=gyY?|pyYpD)qr?pjWrI$NDO zRb9Q|Qpnqro0m>t_SgOL^=DZkbLoYwoxYPL_}QFJhf6=r-0@C_&E;~qf}BA?-02K; z`Ekzu!onRqBGT#LdPm+Rj{Eufai`1Wbh?}lr^Dew5%Zr-e}Ui8-QmPPKyf&2F5Z&6 zoB;21wRAfDC>eE}sP1&NvN`-vg23R9>wfm@^?vrdn^A3)aRD|}(U;p>g}P7_E#W_> z4R|>@%GcT>wF~u*j-Htt z7_(_C@WGjWv;8`b_=0`O9)IFf_7(efM^6%Ml`$zV@_Fo+zIkq~c z+9SjA>`#RToOe9(XvSmzemI*?V{fo~?-MMa-IHVA$+oi3*g417>>&GwU1U@EL|)3* z@p7KU*Yiv44>pM(cU17n>HIr>f}eD}%KzYXj#>80{7-(!zRU3;JK^}&@txy)$7RQF zjz1h19hV%xJ1#h~{igW6>NnMImfsA&T)%+zN1NsAZTz0iEM53vmaRK?sy5ZGIWx3P zbMdTA%*x8LDS1=yt05ziJG*mPGKdADoLR}C+EuRc30moVRLb!1L=I3v5>!wI$~iK$ zNez%xPLP7Sa~r`>GFl-^k884yZCJ9m2}_)ljn;x3fvOF7D8`fBcmiCc24&!?tk*C4 zdxAfkjKY-JAwxN(w{y0QI)s*}R2Y@QHAAC(#DlSVKnVn?jX*0ElS*5p3 z{mD$NvJvPiXP4-2%#8bUnVWCrF0gX@xguLzXw740-F$hYSn20w zD=)gD@2NN8RNG`pkjkd~Y^K$Mx|Dz}9GBV388hdgPw8LGv{MbG>y6T9^`Bj#?AJ2C zfR7k2nI#fb-cxM4z+HN9(3AZ59Q~D`2l?eW;{NaKVP(Gs4P(Q9g$USGaMVdZLCQJf z*<>4N--)qIaGEP;WsWV8J5>BQJ@yQhA-RBrCk7=TBN-5|vZGD?8T(DdSJ@*)-|Kik zJxxg%ReyYoDSqj;R33)@NdfH672HA`OD9%B5I2wz*#hT3%wjTI;y%l!l?ILRI7xzl zrBh{n`6UOgw!Zv4u3E7(1Hb1T`umDIv)CDI<7uih5oHDhqc~-2;acHL67}ZFn+A|1 zd$H5af&v2p$KIFk3&554<<+>F@Tvncl!aztUV_3r&463%^td#BqlA4PLJ#3L8VSnK zcHPemTDS=yOEnO6b(e@HqL~4~?C()RE`Taf4-$ET0Zg^yzk_mGd#b93+z^pzz)%CU zU1obRMsvA}quP@KGqoAWN&%)L0aF!j4NX;4@O}3$3$3W_4BK1Fz ztbvp0=3)Bn%{x2u?V2swwtt~Mvw7k_iwPbYE+Tjp&J1@`1Fpu#yPIh?w+sI(cJPG? zmDoW^MGZ887unsx25A8j2xL8H5I0{B2#pCexJ$?_*0(58v8wY*%t9>8^anz_H7OyH z$kG>tCS+zYPtbti=4cdlXcLJH8n1Ae=rp&`sdS+A=4yzEPKAS*hdw(jWL$t)0;Vh> z>IAt!1|O0YU6o|Xw&l(??obOe&@BB=HaXpKTd=>%(w#ZW+@ZwX(4Mxh_4~r&QyO}? zfZ!RO45qFehlueEwHbbrZML2^66u5b%CP8v9H$;Ng`w!q58^gSN-1H!*69upf;II; zbFqacQTj>>hFf^*(cvkqSRWLg5?Jc=1W1ZNoRxu08s4O#jn#iA{8ZW8Akmnt< zbR|N~l;VkJ*b+!6z-G8zYCte)1gQt~`S={t=a>e4KJRct=o5LdlYUE_3QQ8XMH+5U z#z%jH4bEmXF

c2M4?uuNMo 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 diff --git a/wasm_for_tests/vp_memory_limit.wasm b/wasm_for_tests/vp_memory_limit.wasm index 5a66580cd6d90a5d659ed8cf550c02a52c480455..d5ce074e53d01ea0ab8d59d8370c1830610b21fa 100755 GIT binary patch delta 54809 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¥{bbHlzDa9`8ij;^wP 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 H}tA_NwgNJ~Jf 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 M1w08D1#kiW4;wGUj{pDw From 2b49dc0f13498051522939eeee6210829d74de35 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Tue, 4 Jun 2024 23:39:07 +0200 Subject: [PATCH 04/39] Now check that the IBC events are valid with respect to storage changes. --- crates/events/src/extend.rs | 15 -- crates/ibc/src/actions.rs | 1 - crates/ibc/src/context/common.rs | 1 - crates/ibc/src/context/token_transfer.rs | 2 +- crates/namada/src/ledger/native_vp/masp.rs | 293 ++++++++++++--------- crates/sdk/src/rpc.rs | 40 ++- crates/tests/src/vm_host_env/ibc.rs | 2 +- 7 files changed, 202 insertions(+), 152 deletions(-) diff --git a/crates/events/src/extend.rs b/crates/events/src/extend.rs index b4111fc4a5..fdd098b401 100644 --- a/crates/events/src/extend.rs +++ b/crates/events/src/extend.rs @@ -483,21 +483,6 @@ impl EventAttributeEntry<'static> for Info { } } -/// Extend an [`Event`] with `packet_ack` data, indicating the success or -/// failure of processing a received packet. -pub struct PacketAck(pub Vec); - -impl EventAttributeEntry<'static> for PacketAck { - type Value = Vec; - type ValueOwned = Self::Value; - - const KEY: &'static str = "packet_ack"; - - fn into_value(self) -> Self::Value { - self.0 - } -} - /// Extend an [`Event`] with `masp_tx_block_index` data, indicating that the tx /// at the specified index in the block contains a valid masp transaction. pub struct MaspTxBlockIndex(pub TxIndex); diff --git a/crates/ibc/src/actions.rs b/crates/ibc/src/actions.rs index 44726014c0..65ebd59b80 100644 --- a/crates/ibc/src/actions.rs +++ b/crates/ibc/src/actions.rs @@ -21,7 +21,6 @@ use namada_state::{ StorageResult, StorageWrite, WlState, DB, }; use namada_token as token; -use token::DenominatedAmount; use crate::event::IbcEvent; use crate::{ diff --git a/crates/ibc/src/context/common.rs b/crates/ibc/src/context/common.rs index e536bb75ee..562ac257c1 100644 --- a/crates/ibc/src/context/common.rs +++ b/crates/ibc/src/context/common.rs @@ -510,7 +510,6 @@ pub trait IbcCommonContext: IbcStorageContext { /// Calculate the packet commitment fn compute_packet_commitment( - &self, packet_data: &[u8], timeout_height: &TimeoutHeight, timeout_timestamp: &Timestamp, diff --git a/crates/ibc/src/context/token_transfer.rs b/crates/ibc/src/context/token_transfer.rs index d511ee308a..fa4b71aafe 100644 --- a/crates/ibc/src/context/token_transfer.rs +++ b/crates/ibc/src/context/token_transfer.rs @@ -17,7 +17,7 @@ use namada_core::ibc::core::handler::types::error::ContextError; use namada_core::ibc::core::host::types::identifiers::{ChannelId, PortId}; use namada_core::ibc::IBC_ESCROW_ADDRESS; use namada_core::uint::Uint; -use namada_token::{read_denom, Amount, Denomination}; +use namada_token::Amount; use super::common::IbcCommonContext; use crate::storage; diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 0e7891adf6..5c4b9468dc 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -23,8 +23,8 @@ use namada_core::masp::encode_asset_type; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; -use namada_ibc::event as ibc_events; -use namada_ibc::event::IbcEvent; +use namada_ibc::event::{IbcEvent, PacketAck}; +use namada_ibc::{event as ibc_events, IbcCommonContext}; use namada_proof_of_stake::Epoch; use namada_sdk::masp::{verify_shielded_tx, MaybeIbcAddress}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; @@ -41,26 +41,23 @@ use token::storage_key::{ }; use token::Amount; -use crate::address::{IBC, InternalAddress}; +use crate::address::{InternalAddress, IBC}; +use crate::ledger::ibc::storage; use crate::ledger::ibc::storage::{ ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, }; use crate::ledger::native_vp; +use crate::ledger::native_vp::ibc::context::VpValidationContext; use crate::ledger::native_vp::{Ctx, NativeVp}; -use crate::sdk::ibc::apps::transfer::types::is_sender_chain_source; +use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; +use crate::sdk::ibc::core::channel::types::commitment::PacketCommitment; use crate::token; use crate::token::MaspDigitPos; use crate::uint::{Uint, I320}; use crate::vm::WasmCacheAccess; -use crate::ledger::ibc::storage::ibc_token; -use crate::sdk::ibc::is_ibc_denom; -use crate::sdk::ibc::IbcTokenHash; -use crate::ledger::events::extend::PacketAck; -use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; /// Packet event types const SEND_PACKET_EVENT: &str = "send_packet"; -const RECEIVE_PACKET_EVENT: &str = "recv_packet"; const WRITE_ACK_EVENT: &str = "write_acknowledgement"; #[allow(missing_docs)] @@ -398,15 +395,14 @@ where }, )?; - let ibc_address = MaybeIbcAddress::Address(IBC); + let ibc_addr = MaybeIbcAddress::Address(IBC); // Public keys must be the hash of the sources/targets - let ibc_address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &ibc_address.serialize_to_vec(), - )), - )); + let ibc_addr_hash = + TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( + sha2::Sha256::digest(&ibc_addr.serialize_to_vec()), + ))); // Enable decoding the IBC address hash - changed_balances.decoder.insert(ibc_address_hash, ibc_address); + changed_balances.decoder.insert(ibc_addr_hash, ibc_addr); // Extract the IBC events let ibc_events: BTreeSet<_> = self @@ -416,6 +412,16 @@ where .get_events_of::() .collect(); + changed_balances + .post + .entry(ibc_addr_hash) + .or_insert(ValueSum::zero()); + // Required for the IBC internal Address to release funds + changed_balances + .pre + .entry(ibc_addr_hash) + .or_insert(ValueSum::zero()); + // Go through the IBC events and note the balance chages they imply for ibc_event in ibc_events { // Try to extract an IBC packet from this event @@ -425,66 +431,133 @@ where continue; }; // Check if this is a Transfer packet - if let Ok(packet_data) = + let Ok(packet_data) = serde_json::from_slice::(&msg.data) - { - let address = - MaybeIbcAddress::Ibc(packet_data.receiver.to_string()); - // Public keys must be the hash of the sources/targets - let address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &address.serialize_to_vec(), - )), - )); - changed_balances.decoder.insert(address_hash, address); - changed_balances - .pre - .entry(address_hash) - .or_insert(ValueSum::zero()); - changed_balances - .post - .entry(ibc_address_hash) - .or_insert(ValueSum::zero()); - // Also enable the tracking of received IBC - let pre_entry = changed_balances - .pre - .entry(ibc_address_hash) - .or_insert(ValueSum::zero()); - let post_entry = changed_balances - .post - .entry(address_hash) - .or_insert(ValueSum::zero()); - - match ibc_event.kind().sub_domain() { - // This event is emitted on the sender - SEND_PACKET_EVENT => { - // Since IBC denominations are derived from Addresses - // when sending, we have to do a reverse look-up of the - // relevant token Address - let token = changed_balances - .ibc_denoms - .get(&packet_data.token.denom.to_string()) - .cloned() + else { + continue; + }; + + // Get the packet commitment from post-storage that corresponds + // to this event + let address = + MaybeIbcAddress::Ibc(packet_data.receiver.to_string()); + // Public keys must be the hash of the sources/targets + let address_hash = TransparentAddress(<[u8; 20]>::from( + ripemd::Ripemd160::digest(sha2::Sha256::digest( + &address.serialize_to_vec(), + )), + )); + changed_balances.decoder.insert(address_hash, address); + changed_balances + .pre + .entry(address_hash) + .or_insert(ValueSum::zero()); + + match ibc_event.kind().sub_domain() { + // This event is emitted on the sender + SEND_PACKET_EVENT => { + // Ensure that the event corresponds to the current changes + // to storage + let commitment_key = storage::commitment_key( + &msg.port_id_on_a, + &msg.chan_id_on_a, + msg.seq_on_a, + ); + if !keys_changed.contains(&commitment_key) { + // Otherwise ignore this event + continue; + } + let Some(storage_commitment): Option = + self.ctx + .read_bytes_post(&commitment_key)? + .map(Into::into) + else { + // Ignore this event if it does not exist + continue; + }; + // Check that the packet commitment in storage is the same + // as that derived from this event + let packet_commitment = VpValidationContext::<'a, 'a, S, CA>::compute_packet_commitment( + &msg.data, + &msg.timeout_height_on_b, + &msg.timeout_timestamp_on_b, + ); + if packet_commitment != storage_commitment { + // Ignore this event if the commitments are not equal + continue; + } + // Since IBC denominations are derived from Addresses + // when sending, we have to do a reverse look-up of the + // relevant token Address + let token = changed_balances + .ibc_denoms + .get(&packet_data.token.denom.to_string()) + .cloned() // If the reverse lookup failed, then guess the Address // that might have yielded the IBC denom. However, // guessing an IBC token address cannot possibly be // correct due to the structure of query_ibc_denom - .or_else(|| Address::decode(&packet_data.token.denom.to_string()) - .ok() - .filter(|x| !matches!(x, Address::Internal(InternalAddress::IbcToken(_))))) - .ok_or_err_msg("Unable to decode IBC token")?; - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0) - .unwrap(), - ); - // Enable funds to be received by the receiver in the - // IBC packet - *post_entry = checked!(post_entry + &delta) - .map_err(native_vp::Error::new)? - }, - // This event is emitted on the receiver - RECEIVE_PACKET_EVENT => { + .or_else(|| { + Address::decode(packet_data.token.denom.to_string()) + .ok() + .filter(|x| { + !matches!( + x, + Address::Internal( + InternalAddress::IbcToken(_) + ) + ) + }) + }) + .ok_or_err_msg("Unable to decode IBC token")?; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0) + .unwrap(), + ); + // Move the funds from the IBC internal address to a + // specific receiver + let ibc_post_entry = changed_balances + .post + .entry(ibc_addr_hash) + .or_insert(ValueSum::zero()); + *ibc_post_entry = checked!(ibc_post_entry - &delta) + .map_err(native_vp::Error::new)?; + // Required for the packet's receiver to get funds + let post_entry = changed_balances + .post + .entry(address_hash) + .or_insert(ValueSum::zero()); + // Enable funds to be received by the receiver in the + // IBC packet + *post_entry = checked!(post_entry + &delta) + .map_err(native_vp::Error::new)?; + } + // This event is emitted on the receiver + WRITE_ACK_EVENT => { + // Ensure that the event corresponds to the current changes + // to storage + let ack_key = storage::ack_key( + &msg.port_id_on_a, + &msg.chan_id_on_a, + msg.seq_on_a, + ); + if !keys_changed.contains(&ack_key) { + // Otherwise ignore this event + continue; + } + let acknowledgement = ibc_event + .raw_read_attribute::>() + .ok_or_err_msg( + "packet_ack attribute missing from \ + write_acknowledgement", + )?; + let acknowledgement: AcknowledgementStatus = + serde_json::from_slice(acknowledgement.as_ref()) + .wrap_err("Decoding acknowledment failed")?; + // If the transfer was a failure, then enable funds to + // be withdrawn from the IBC internal address + if acknowledgement.is_successful() { // Mirror how the IBC token is derived in // gen_ibc_shielded_transfer in the non-refund case let ibc_denom = self.query_ibc_denom( @@ -497,56 +570,31 @@ where &msg.chan_id_on_a, &msg.port_id_on_b, &msg.chan_id_on_b, - ).into_storage_result() - .map_err(Error::NativeVpError)?; + ) + .into_storage_result() + .map_err(Error::NativeVpError)?; let delta = ValueSum::from_pair( token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0) - .unwrap(), + Amount::from_uint( + Uint(*packet_data.token.amount), + 0, + ) + .unwrap(), ); // Enable funds to be taken from the IBC internal // address and be deposited elsewhere + // Required for the IBC internal Address to release + // funds + let pre_entry = changed_balances + .pre + .entry(ibc_addr_hash) + .or_insert(ValueSum::zero()); *pre_entry = checked!(pre_entry + &delta) - .map_err(native_vp::Error::new)? - }, - // This event is emitted on the sender - WRITE_ACK_EVENT => { - let acknowledgement = ibc_event - .raw_read_attribute::() - .ok_or_err_msg("packet_ack attribute missing from write_acknowledgement")?; - let acknowledgement: AcknowledgementStatus = - serde_json::from_slice(acknowledgement.as_ref()) - .wrap_err("Decoding acknowledment failed")?; - // If the transfer was a failure, then enable funds to - // be withdrawn from the IBC internal address - if !acknowledgement.is_successful() { - // Mirror how the IBC token is derived in - // gen_ibc_shielded_transfer in the refund case - let ibc_denom = self.query_ibc_denom( - &packet_data.token.denom.to_string(), - Some(&Address::Internal(InternalAddress::Ibc)), - )?; - let token = if ibc_denom.contains('/') { - ibc_token(ibc_denom) - } else { - // the token is a base token - Address::decode(&ibc_denom) - .wrap_err("Invalid token")? - }; - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0) - .unwrap(), - ); - // Enable funds to be withdrawn from the IBC - // internal address - *pre_entry = checked!(pre_entry + &delta) - .map_err(native_vp::Error::new)? - } - }, - // Ignore all other IBC events - _ => {}, + .map_err(native_vp::Error::new)?; + } } + // Ignore all other IBC events + _ => {} } } @@ -629,15 +677,22 @@ where // Ensure that every account for which balance has gone down has // authorized this transaction for (addr, pre) in changed_balances.pre { - if changed_balances.post[&addr] < pre && addr != masp_address_hash { + if changed_balances + .post + .get(&addr) + .unwrap_or(&ValueSum::zero()) + < &pre + && addr != masp_address_hash + { signers.insert(addr); } } // Ensure that this transaction is authorized by all involved parties for signer in signers { - if let Some(MaybeIbcAddress::Address(Address::Internal(InternalAddress::Ibc))) = - changed_balances.decoder.get(&signer) + if let Some(MaybeIbcAddress::Address(Address::Internal( + InternalAddress::Ibc, + ))) = changed_balances.decoder.get(&signer) { // If the IBC address is a signatory, then it means that either // Tx - Transaction(s) causes a decrease in the IBC balance or @@ -660,7 +715,7 @@ where "Simultaneous credit and debit of IBC account \ in a MASP transaction not allowed", ) - .into(); + .into(); tracing::debug!("{error}"); return Err(error); } diff --git a/crates/sdk/src/rpc.rs b/crates/sdk/src/rpc.rs index b6610fa8c1..bf4dea33ae 100644 --- a/crates/sdk/src/rpc.rs +++ b/crates/sdk/src/rpc.rs @@ -48,6 +48,7 @@ use crate::args::InputAmount; use crate::control_flow::time; use crate::error::{EncodingError, Error, QueryError, TxSubmitError}; use crate::events::{extend, Event}; +use crate::ibc::is_ibc_denom; use crate::internal_macros::echo_error; use crate::io::Io; use crate::masp::MaspTokenRewardData; @@ -59,7 +60,6 @@ use crate::tendermint::block::Height; use crate::tendermint::merkle::proof::ProofOps; use crate::tendermint_rpc::query::Query; use crate::{display_line, edisplay_line, error, Namada, Tx}; -use crate::ibc::is_ibc_denom; /// Identical to [`query_tx_status`], but does not need a [`Namada`] /// context. @@ -1159,17 +1159,23 @@ pub async fn validate_amount( InputAmount::Unvalidated(amt) => amt.canonical(), InputAmount::Validated(amt) => return Ok(amt), }; - let token = if let Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) = token { - extract_base_token(context, ibc_token_hash.clone(), None).await.ok_or( - Error::from(QueryError::General(format!( - "cannot extract base token for {token}" - ))) - )? - } else { - token.clone() - }; + let token = + if let Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) = + token + { + extract_base_token(context, ibc_token_hash.clone(), None) + .await + .ok_or(Error::from(QueryError::General(format!( + "cannot extract base token for {token}" + ))))? + } else { + token.clone() + }; let denom = match convert_response::>( - RPC.vp().token().denomination(context.client(), &token).await, + RPC.vp() + .token() + .denomination(context.client(), &token) + .await, )? { Some(denom) => Ok(denom), None => { @@ -1365,16 +1371,22 @@ pub async fn extract_base_token( // First obtain the IBC denomination let ibc_denom = query_ibc_denom( context, - Address::Internal(InternalAddress::IbcToken(ibc_token_hash)).to_string(), + Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) + .to_string(), owner, - ).await; + ) + .await; // Then try to extract the base token if let Some((_trace_path, base_token)) = is_ibc_denom(ibc_denom) { match Address::decode(&base_token) { // If the base token successfully decoded into an Address Ok(base_token) => Some(base_token), // Otherwise find the Address associated with the base token's alias - Err(_) => context.wallet().await.find_address(&base_token).map(|x| x.into_owned()), + Err(_) => context + .wallet() + .await + .find_address(&base_token) + .map(|x| x.into_owned()), } } else { // Otherwise the base token Address is unknown to this client diff --git a/crates/tests/src/vm_host_env/ibc.rs b/crates/tests/src/vm_host_env/ibc.rs index 184093f7c2..003cbc3c60 100644 --- a/crates/tests/src/vm_host_env/ibc.rs +++ b/crates/tests/src/vm_host_env/ibc.rs @@ -78,7 +78,7 @@ use namada::ledger::{ibc, pos}; use namada::proof_of_stake::OwnedPosParams; use namada::state::testing::TestState; use namada::tendermint::time::Time as TmTime; -use namada::token::{self, Amount, DenominatedAmount}; +use namada::token::{self, Amount}; use namada::tx::BatchedTxRef; use namada::vm::{wasm, WasmCacheRwAccess}; use namada_core::collections::HashMap; From abbf3b2b5466517bc4ef465c3c2f1246e0bd3884 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Fri, 7 Jun 2024 15:23:04 +0200 Subject: [PATCH 05/39] Split up the IBC validation logic in MASP. --- crates/namada/src/ledger/native_vp/ibc/mod.rs | 28 +- crates/namada/src/ledger/native_vp/masp.rs | 526 +++++++++--------- crates/sdk/src/rpc.rs | 24 +- crates/tests/src/e2e/ibc_tests.rs | 57 +- crates/tests/src/vm_host_env/ibc.rs | 2 +- crates/tests/src/vm_host_env/mod.rs | 12 +- wasm/checksums.json | 2 +- 7 files changed, 337 insertions(+), 314 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/ibc/mod.rs b/crates/namada/src/ledger/native_vp/ibc/mod.rs index a0e1f41bbd..334b26ce39 100644 --- a/crates/namada/src/ledger/native_vp/ibc/mod.rs +++ b/crates/namada/src/ledger/native_vp/ibc/mod.rs @@ -409,7 +409,6 @@ mod tests { use namada_ibc::event::IbcEventType; use namada_state::testing::TestState; use namada_state::StorageRead; - use namada_token::NATIVE_MAX_DECIMAL_PLACES; use namada_tx::data::TxType; use namada_tx::{Authorization, Code, Data, Section, Tx}; use prost::Message; @@ -2187,7 +2186,7 @@ mod tests { packet_data: PacketData { token: PrefixedCoin { denom: nam().to_string().parse().unwrap(), - amount: 100.into(), + amount: amount.into(), }, sender: sender.to_string().into(), receiver: "receiver".to_string().into(), @@ -2219,12 +2218,7 @@ mod tests { keys_changed.insert(commitment_key); // withdraw let withdraw_key = withdraw_key(&nam()); - let bytes = Amount::from_str( - msg.packet_data.token.amount.to_string(), - NATIVE_MAX_DECIMAL_PLACES, - ) - .unwrap() - .serialize_to_vec(); + let bytes = amount.serialize_to_vec(); state .write_log_mut() .write(&withdraw_key, bytes) @@ -2702,7 +2696,7 @@ mod tests { packet_data: PacketData { token: PrefixedCoin { denom: nam().to_string().parse().unwrap(), - amount: 100u64.into(), + amount: amount.into(), }, sender: established_address_1().to_string().into(), receiver: "receiver".to_string().into(), @@ -2757,12 +2751,7 @@ mod tests { let data = serde_json::from_slice::(&packet.data) .expect("decoding packet data failed"); let deposit_key = deposit_key(&nam()); - let bytes = Amount::from_str( - data.token.amount.to_string(), - NATIVE_MAX_DECIMAL_PLACES, - ) - .unwrap() - .serialize_to_vec(); + let bytes = amount.serialize_to_vec(); state .write_log_mut() .write(&deposit_key, bytes) @@ -2865,7 +2854,7 @@ mod tests { packet_data: PacketData { token: PrefixedCoin { denom: nam().to_string().parse().unwrap(), - amount: 100u64.into(), + amount: amount.into(), }, sender: sender.to_string().into(), receiver: "receiver".to_string().into(), @@ -2920,12 +2909,7 @@ mod tests { let data = serde_json::from_slice::(&packet.data) .expect("decoding packet data failed"); let deposit_key = deposit_key(&nam()); - let bytes = Amount::from_str( - data.token.amount.to_string(), - NATIVE_MAX_DECIMAL_PLACES, - ) - .unwrap() - .serialize_to_vec(); + let bytes = amount.serialize_to_vec(); state .write_log_mut() .write(&deposit_key, bytes) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 5c4b9468dc..91fc67ca4d 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -19,6 +19,7 @@ use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; use namada_core::ibc::apps::transfer::types::packet::PacketData; +use namada_core::ibc::core::channel::types::packet::Packet; use namada_core::masp::encode_asset_type; use namada_core::storage::Key; use namada_gas::GasMetering; @@ -42,6 +43,7 @@ use token::storage_key::{ use token::Amount; use crate::address::{InternalAddress, IBC}; +use crate::events::Event; use crate::ledger::ibc::storage; use crate::ledger::ibc::storage::{ ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, @@ -60,6 +62,24 @@ use crate::vm::WasmCacheAccess; const SEND_PACKET_EVENT: &str = "send_packet"; const WRITE_ACK_EVENT: &str = "write_acknowledgement"; +/// Convert a receiver string to a TransparentAddress +fn receiver_addr(receiver: String) -> TransparentAddress { + let ibc_addr = MaybeIbcAddress::Ibc(receiver); + // Public keys must be the hash of the sources/targets + TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( + sha2::Sha256::digest(&ibc_addr.serialize_to_vec()), + ))) +} + +/// Convert a Namada Address to a TransparentAddress +fn namada_addr(addr: Address) -> TransparentAddress { + let addr = MaybeIbcAddress::Address(addr); + // Public keys must be the hash of the sources/targets + TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( + sha2::Sha256::digest(&addr.serialize_to_vec()), + ))) +} + #[allow(missing_docs)] #[derive(Error, Debug)] pub enum Error { @@ -334,6 +354,246 @@ where Ok(token.as_ref().to_string()) } + // Apply the given send packet to the changed balances structure + fn apply_send_packet( + &self, + acc: &mut ChangedBalances, + msg: Packet, + packet_data: PacketData, + keys_changed: &BTreeSet, + ) -> Result<()> { + // Ensure that the event corresponds to the current changes + // to storage + let commitment_key = storage::commitment_key( + &msg.port_id_on_a, + &msg.chan_id_on_a, + msg.seq_on_a, + ); + if !keys_changed.contains(&commitment_key) { + // Otherwise ignore this event + return Ok(()); + } + let Some(storage_commitment): Option = + self.ctx.read_bytes_post(&commitment_key)?.map(Into::into) + else { + // Ignore this event if it does not exist + return Ok(()); + }; + // Check that the packet commitment in storage is the same + // as that derived from this event + let packet_commitment = + VpValidationContext::<'a, 'a, S, CA>::compute_packet_commitment( + &msg.data, + &msg.timeout_height_on_b, + &msg.timeout_timestamp_on_b, + ); + if packet_commitment != storage_commitment { + // Ignore this event if the commitments are not equal + return Ok(()); + } + // Since IBC denominations are derived from Addresses + // when sending, we have to do a reverse look-up of the + // relevant token Address + let token = acc + .ibc_denoms + .get(&packet_data.token.denom.to_string()) + .cloned() + // If the reverse lookup failed, then guess the Address + // that might have yielded the IBC denom. However, + // guessing an IBC token address cannot possibly be + // correct due to the structure of query_ibc_denom + .or_else(|| { + Address::decode(packet_data.token.denom.to_string()) + .ok() + .filter(|x| { + !matches!( + x, + Address::Internal(InternalAddress::IbcToken(_)) + ) + }) + }) + .ok_or_err_msg("Unable to decode IBC token")?; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0).unwrap(), + ); + // Required for the packet's receiver to get funds + let post_entry = acc + .post + .entry(receiver_addr(packet_data.receiver.to_string())) + .or_insert(ValueSum::zero()); + // Enable funds to be received by the receiver in the + // IBC packet + *post_entry = + checked!(post_entry + &delta).map_err(native_vp::Error::new)?; + Ok(()) + } + + // Apply the given write acknowledge to the changed balances structure + fn apply_write_ack( + &self, + acc: &mut ChangedBalances, + ibc_event: &Event, + msg: Packet, + packet_data: PacketData, + keys_changed: &BTreeSet, + ) -> Result<()> { + // Ensure that the event corresponds to the current changes + // to storage + let ack_key = storage::ack_key( + &msg.port_id_on_a, + &msg.chan_id_on_a, + msg.seq_on_a, + ); + if !keys_changed.contains(&ack_key) { + // Otherwise ignore this event + return Ok(()); + } + let acknowledgement = ibc_event + .raw_read_attribute::>() + .ok_or_err_msg( + "packet_ack attribute missing from write_acknowledgement", + )?; + let acknowledgement: AcknowledgementStatus = + serde_json::from_slice(acknowledgement.as_ref()) + .wrap_err("Decoding acknowledment failed")?; + // If the transfer was a failure, then enable funds to + // be withdrawn from the IBC internal address + if acknowledgement.is_successful() { + // Mirror how the IBC token is derived in + // gen_ibc_shielded_transfer in the non-refund case + let ibc_denom = self.query_ibc_denom( + packet_data.token.denom.to_string(), + Some(&Address::Internal(InternalAddress::Ibc)), + )?; + let token = namada_ibc::received_ibc_token( + ibc_denom, + &msg.port_id_on_a, + &msg.chan_id_on_a, + &msg.port_id_on_b, + &msg.chan_id_on_b, + ) + .into_storage_result() + .map_err(Error::NativeVpError)?; + let delta = ValueSum::from_pair( + token.clone(), + Amount::from_uint(Uint(*packet_data.token.amount), 0).unwrap(), + ); + // Enable funds to be taken from the IBC internal + // address and be deposited elsewhere + // Required for the IBC internal Address to release + // funds + let pre_entry = + acc.pre.entry(namada_addr(IBC)).or_insert(ValueSum::zero()); + *pre_entry = + checked!(pre_entry + &delta).map_err(native_vp::Error::new)?; + } + Ok(()) + } + + // Apply relevant IBC packets to the changed balances structure + fn apply_ibc_packet( + &self, + mut acc: ChangedBalances, + ibc_event: &Event, + keys_changed: &BTreeSet, + ) -> Result { + // Try to extract an IBC packet from this event + let Ok(msg) = ibc_events::packet_from_event_attributes( + &ibc_event.clone().into_attributes(), + ) else { + return Ok(acc); + }; + // Check if this is a Transfer packet + let Ok(packet_data) = serde_json::from_slice::(&msg.data) + else { + return Ok(acc); + }; + + // Get the packet commitment from post-storage that corresponds + // to this event + let addr = MaybeIbcAddress::Ibc(packet_data.receiver.to_string()); + acc.decoder + .insert(receiver_addr(packet_data.receiver.to_string()), addr); + + match ibc_event.kind().sub_domain() { + // This event is emitted on the sender + SEND_PACKET_EVENT => { + self.apply_send_packet( + &mut acc, + msg, + packet_data, + keys_changed, + )?; + } + // This event is emitted on the receiver + WRITE_ACK_EVENT => { + self.apply_write_ack( + &mut acc, + ibc_event, + msg, + packet_data, + keys_changed, + )?; + } + // Ignore all other IBC events + _ => {} + } + Result::<_>::Ok(acc) + } + + // Apply the balance change to the changed balances structure + fn apply_balance_change( + &self, + mut result: ChangedBalances, + [token, counterpart]: [&Address; 2], + ) -> Result { + let denom = read_denom(&self.ctx.pre(), token)?.ok_or_err_msg( + "No denomination found in storage for the given token", + )?; + unepoched_tokens(token, denom, &mut result.tokens)?; + let counterpart_balance_key = balance_key(token, counterpart); + let pre_balance: Amount = self + .ctx + .read_pre(&counterpart_balance_key)? + .unwrap_or_default(); + let post_balance: Amount = self + .ctx + .read_post(&counterpart_balance_key)? + .unwrap_or_default(); + // Make it possible to decode IBC tokens + result.ibc_denoms.insert( + self.query_ibc_denom(token.to_string(), Some(counterpart)) + .map_err(native_vp::Error::new)?, + token.clone(), + ); + // Public keys must be the hash of the sources/targets + let address_hash = TransparentAddress(<[u8; 20]>::from( + ripemd::Ripemd160::digest(sha2::Sha256::digest( + &MaybeIbcAddress::Address(counterpart.clone()) + .serialize_to_vec(), + )), + )); + // Enable the decoding of these counterpart addresses + result.decoder.insert( + address_hash, + MaybeIbcAddress::Address(counterpart.clone()), + ); + let pre_entry = + result.pre.entry(address_hash).or_insert(ValueSum::zero()); + let post_entry = + result.post.entry(address_hash).or_insert(ValueSum::zero()); + *pre_entry = checked!( + pre_entry + &ValueSum::from_pair((*token).clone(), pre_balance) + ) + .map_err(native_vp::Error::new)?; + *post_entry = checked!( + post_entry + &ValueSum::from_pair((*token).clone(), post_balance) + ) + .map_err(native_vp::Error::new)?; + Result::<_>::Ok(result) + } + // Check that transfer is pinned correctly and record the balance changes fn validate_state_and_get_transfer_data( &self, @@ -343,260 +603,24 @@ where let mut counterparts_balances = keys_changed.iter().filter_map(is_any_token_balance_key); - let mut changed_balances = counterparts_balances.try_fold( - ChangedBalances::default(), - |mut result, [token, counterpart]| { - let denom = read_denom(&self.ctx.pre(), token)?.ok_or_err_msg( - "No denomination found in storage for the given token", - )?; - unepoched_tokens(token, denom, &mut result.tokens)?; - let counterpart_balance_key = balance_key(token, counterpart); - let pre_balance: Amount = self - .ctx - .read_pre(&counterpart_balance_key)? - .unwrap_or_default(); - let post_balance: Amount = self - .ctx - .read_post(&counterpart_balance_key)? - .unwrap_or_default(); - // Make it possible to decode IBC tokens - result.ibc_denoms.insert( - self.query_ibc_denom(token.to_string(), Some(counterpart)) - .map_err(native_vp::Error::new)?, - token.clone(), - ); - // Public keys must be the hash of the sources/targets - let address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &MaybeIbcAddress::Address(counterpart.clone()) - .serialize_to_vec(), - )), - )); - // Enable the decoding of these counterpart addresses - result.decoder.insert( - address_hash, - MaybeIbcAddress::Address(counterpart.clone()), - ); - let pre_entry = - result.pre.entry(address_hash).or_insert(ValueSum::zero()); - let post_entry = - result.post.entry(address_hash).or_insert(ValueSum::zero()); - *pre_entry = checked!( - pre_entry - + &ValueSum::from_pair((*token).clone(), pre_balance) - ) - .map_err(native_vp::Error::new)?; - *post_entry = checked!( - post_entry - + &ValueSum::from_pair((*token).clone(), post_balance) - ) - .map_err(native_vp::Error::new)?; - Result::<_>::Ok(result) - }, - )?; - + // Apply the balance changes to the changed balances structure + let mut changed_balances = counterparts_balances + .try_fold(ChangedBalances::default(), |acc, account| { + self.apply_balance_change(acc, account) + })?; let ibc_addr = MaybeIbcAddress::Address(IBC); - // Public keys must be the hash of the sources/targets - let ibc_addr_hash = - TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( - sha2::Sha256::digest(&ibc_addr.serialize_to_vec()), - ))); // Enable decoding the IBC address hash - changed_balances.decoder.insert(ibc_addr_hash, ibc_addr); + changed_balances.decoder.insert(namada_addr(IBC), ibc_addr); // Extract the IBC events - let ibc_events: BTreeSet<_> = self - .ctx - .state - .write_log() - .get_events_of::() - .collect(); - - changed_balances - .post - .entry(ibc_addr_hash) - .or_insert(ValueSum::zero()); - // Required for the IBC internal Address to release funds - changed_balances - .pre - .entry(ibc_addr_hash) - .or_insert(ValueSum::zero()); - + let mut ibc_events = + self.ctx.state.write_log().get_events_of::(); // Go through the IBC events and note the balance chages they imply - for ibc_event in ibc_events { - // Try to extract an IBC packet from this event - let Ok(msg) = ibc_events::packet_from_event_attributes( - &ibc_event.clone().into_attributes(), - ) else { - continue; - }; - // Check if this is a Transfer packet - let Ok(packet_data) = - serde_json::from_slice::(&msg.data) - else { - continue; - }; - - // Get the packet commitment from post-storage that corresponds - // to this event - let address = - MaybeIbcAddress::Ibc(packet_data.receiver.to_string()); - // Public keys must be the hash of the sources/targets - let address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &address.serialize_to_vec(), - )), - )); - changed_balances.decoder.insert(address_hash, address); - changed_balances - .pre - .entry(address_hash) - .or_insert(ValueSum::zero()); - - match ibc_event.kind().sub_domain() { - // This event is emitted on the sender - SEND_PACKET_EVENT => { - // Ensure that the event corresponds to the current changes - // to storage - let commitment_key = storage::commitment_key( - &msg.port_id_on_a, - &msg.chan_id_on_a, - msg.seq_on_a, - ); - if !keys_changed.contains(&commitment_key) { - // Otherwise ignore this event - continue; - } - let Some(storage_commitment): Option = - self.ctx - .read_bytes_post(&commitment_key)? - .map(Into::into) - else { - // Ignore this event if it does not exist - continue; - }; - // Check that the packet commitment in storage is the same - // as that derived from this event - let packet_commitment = VpValidationContext::<'a, 'a, S, CA>::compute_packet_commitment( - &msg.data, - &msg.timeout_height_on_b, - &msg.timeout_timestamp_on_b, - ); - if packet_commitment != storage_commitment { - // Ignore this event if the commitments are not equal - continue; - } - // Since IBC denominations are derived from Addresses - // when sending, we have to do a reverse look-up of the - // relevant token Address - let token = changed_balances - .ibc_denoms - .get(&packet_data.token.denom.to_string()) - .cloned() - // If the reverse lookup failed, then guess the Address - // that might have yielded the IBC denom. However, - // guessing an IBC token address cannot possibly be - // correct due to the structure of query_ibc_denom - .or_else(|| { - Address::decode(packet_data.token.denom.to_string()) - .ok() - .filter(|x| { - !matches!( - x, - Address::Internal( - InternalAddress::IbcToken(_) - ) - ) - }) - }) - .ok_or_err_msg("Unable to decode IBC token")?; - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0) - .unwrap(), - ); - // Move the funds from the IBC internal address to a - // specific receiver - let ibc_post_entry = changed_balances - .post - .entry(ibc_addr_hash) - .or_insert(ValueSum::zero()); - *ibc_post_entry = checked!(ibc_post_entry - &delta) - .map_err(native_vp::Error::new)?; - // Required for the packet's receiver to get funds - let post_entry = changed_balances - .post - .entry(address_hash) - .or_insert(ValueSum::zero()); - // Enable funds to be received by the receiver in the - // IBC packet - *post_entry = checked!(post_entry + &delta) - .map_err(native_vp::Error::new)?; - } - // This event is emitted on the receiver - WRITE_ACK_EVENT => { - // Ensure that the event corresponds to the current changes - // to storage - let ack_key = storage::ack_key( - &msg.port_id_on_a, - &msg.chan_id_on_a, - msg.seq_on_a, - ); - if !keys_changed.contains(&ack_key) { - // Otherwise ignore this event - continue; - } - let acknowledgement = ibc_event - .raw_read_attribute::>() - .ok_or_err_msg( - "packet_ack attribute missing from \ - write_acknowledgement", - )?; - let acknowledgement: AcknowledgementStatus = - serde_json::from_slice(acknowledgement.as_ref()) - .wrap_err("Decoding acknowledment failed")?; - // If the transfer was a failure, then enable funds to - // be withdrawn from the IBC internal address - if acknowledgement.is_successful() { - // Mirror how the IBC token is derived in - // gen_ibc_shielded_transfer in the non-refund case - let ibc_denom = self.query_ibc_denom( - &packet_data.token.denom.to_string(), - Some(&Address::Internal(InternalAddress::Ibc)), - )?; - let token = namada_ibc::received_ibc_token( - ibc_denom, - &msg.port_id_on_a, - &msg.chan_id_on_a, - &msg.port_id_on_b, - &msg.chan_id_on_b, - ) - .into_storage_result() - .map_err(Error::NativeVpError)?; - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint( - Uint(*packet_data.token.amount), - 0, - ) - .unwrap(), - ); - // Enable funds to be taken from the IBC internal - // address and be deposited elsewhere - // Required for the IBC internal Address to release - // funds - let pre_entry = changed_balances - .pre - .entry(ibc_addr_hash) - .or_insert(ValueSum::zero()); - *pre_entry = checked!(pre_entry + &delta) - .map_err(native_vp::Error::new)?; - } - } - // Ignore all other IBC events - _ => {} - } - } + let changed_balances = + ibc_events.try_fold(changed_balances, |acc, ibc_event| { + // Apply all IBC packets to the changed balances structure + self.apply_ibc_packet(acc, ibc_event, keys_changed) + })?; Ok(changed_balances) } @@ -690,9 +714,7 @@ where // Ensure that this transaction is authorized by all involved parties for signer in signers { - if let Some(MaybeIbcAddress::Address(Address::Internal( - InternalAddress::Ibc, - ))) = changed_balances.decoder.get(&signer) + if let Some(MaybeIbcAddress::Address(IBC)) = changed_balances.decoder.get(&signer) { // If the IBC address is a signatory, then it means that either // Tx - Transaction(s) causes a decrease in the IBC balance or diff --git a/crates/sdk/src/rpc.rs b/crates/sdk/src/rpc.rs index bf4dea33ae..1433041036 100644 --- a/crates/sdk/src/rpc.rs +++ b/crates/sdk/src/rpc.rs @@ -1159,24 +1159,26 @@ pub async fn validate_amount( InputAmount::Unvalidated(amt) => amt.canonical(), InputAmount::Validated(amt) => return Ok(amt), }; - let token = + let base_token = if let Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) = token { extract_base_token(context, ibc_token_hash.clone(), None) .await - .ok_or(Error::from(QueryError::General(format!( - "cannot extract base token for {token}" - ))))? } else { - token.clone() + Some(token.clone()) }; - let denom = match convert_response::>( - RPC.vp() - .token() - .denomination(context.client(), &token) - .await, - )? { + let denom = if let Some(token) = base_token { + convert_response::>( + RPC.vp() + .token() + .denomination(context.client(), &token) + .await, + )? + } else { + None + }; + let denom = match denom { Some(denom) => Ok(denom), None => { if force { diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 02236e6f0b..7266316b8c 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -151,7 +151,7 @@ fn run_ledger_ibc() -> Result<()> { // Transfer 50000 received over IBC on Chain B let token = format!("{port_id_b}/{channel_id_b}/nam"); - transfer_on_chain(&test_b, BERTHA, ALBERT, token, 50000, BERTHA_KEY)?; + transfer_on_chain(&test_b, BERTHA, ALBERT, token, 50000, BERTHA_KEY, true)?; check_balances_after_non_ibc(&port_id_b, &channel_id_b, &test_b)?; // Transfer 50000 back from the origin-specific account on Chain B to Chain @@ -225,6 +225,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, None, false, @@ -234,7 +235,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { // Transfer 50000 received over IBC on Chain B let token = format!("{port_id_b}/{channel_id_b}/nam"); - transfer_on_chain(&test_b, BERTHA, ALBERT, token, 50000, BERTHA_KEY)?; + transfer_on_chain(&test_b, BERTHA, ALBERT, token, 50000, BERTHA_KEY, true)?; check_balances_after_non_ibc(&port_id_b, &channel_id_b, &test_b)?; // Transfer 50000 back from the origin-specific account on Chain B to Chain @@ -253,6 +254,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { BERTHA_KEY, &port_id_b, &channel_id_b, + true, None, None, false, @@ -268,6 +270,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { BTC, 100, ALBERT_KEY, + false, )?; shielded_sync(&test_a, AA_VIEWING_KEY)?; // Shieded transfer from Chain A to Chain B @@ -280,6 +283,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, None, false, @@ -297,6 +301,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, None, false, @@ -319,6 +324,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, Some(Duration::new(10, 0)), None, false, @@ -384,6 +390,7 @@ fn ibc_namada_gaia() -> Result<()> { ALBERT_KEY, &port_id_namada, &channel_id_namada, + false, None, None, false, @@ -393,7 +400,7 @@ fn ibc_namada_gaia() -> Result<()> { // Check the received token on Gaia let token_addr = find_address(&test, APFEL)?; let ibc_denom = format!("{port_id_gaia}/{channel_id_gaia}/{token_addr}"); - check_gaia_balance(&test_gaia, GAIA_USER, &ibc_denom, 200)?; + check_gaia_balance(&test_gaia, GAIA_USER, &ibc_denom, 200000000)?; // Transfer back from Gaia to Namada let receiver = find_address(&test, ALBERT)?.to_string(); @@ -402,7 +409,7 @@ fn ibc_namada_gaia() -> Result<()> { GAIA_USER, receiver, get_gaia_denom_hash(ibc_denom), - 100, + 100000000, &port_id_gaia, &channel_id_gaia, )?; @@ -439,6 +446,7 @@ fn ibc_namada_gaia() -> Result<()> { ALBERT_KEY, &port_id_namada, &channel_id_namada, + true, None, None, false, @@ -471,6 +479,7 @@ fn ibc_namada_gaia() -> Result<()> { &ibc_denom, 50, ALBERT_KEY, + true, )?; check_balance(&test, AA_VIEWING_KEY, &ibc_denom, 50)?; check_balance(&test, AB_VIEWING_KEY, &ibc_denom, 50)?; @@ -485,6 +494,7 @@ fn ibc_namada_gaia() -> Result<()> { BERTHA_KEY, &port_id_namada, &channel_id_namada, + true, None, None, false, @@ -541,6 +551,7 @@ fn pgf_over_ibc_with_hermes() -> Result<()> { NAM, 100, ALBERT_KEY, + false, )?; // Proposal on Chain A @@ -641,6 +652,7 @@ fn proposal_ibc_token_inflation() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, None, false, @@ -708,6 +720,7 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, None, false, @@ -723,6 +736,7 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, // expect an error of the throughput limit Some( @@ -749,6 +763,7 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, None, None, false, @@ -773,6 +788,7 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, + false, Some(Duration::new(20, 0)), None, false, @@ -1539,6 +1555,7 @@ fn transfer_token( ALBERT_KEY, port_id_a, channel_id_a, + false, None, None, false, @@ -1604,21 +1621,6 @@ fn try_invalid_transfers( std::env::set_var(ENV_VAR_CHAIN_ID, test_b.net.chain_id.to_string()); let receiver = find_address(test_b, BERTHA)?; - // invalid amount - transfer( - test_a, - ALBERT, - receiver.to_string(), - NAM, - 10.1, - ALBERT_KEY, - port_id_a, - channel_id_a, - None, - Some("The amount for the IBC transfer should be an integer"), - false, - )?; - // invalid port let nam_addr = find_address(test_a, NAM)?; transfer( @@ -1630,6 +1632,7 @@ fn try_invalid_transfers( ALBERT_KEY, &"port".parse().unwrap(), channel_id_a, + false, None, // the IBC denom can't be parsed when using an invalid port Some(&format!("Invalid IBC denom: {nam_addr}")), @@ -1646,6 +1649,7 @@ fn try_invalid_transfers( ALBERT_KEY, port_id_a, &"channel-42".parse().unwrap(), + false, None, Some("IBC token transfer error: context error: `ICS04 Channel error"), false, @@ -1661,10 +1665,12 @@ fn transfer_on_chain( token: impl AsRef, amount: u64, signer: impl AsRef, + force: bool, ) -> Result<()> { std::env::set_var(ENV_VAR_CHAIN_ID, test.net.chain_id.to_string()); let rpc = get_actor_rpc(test, Who::Validator(0)); - let tx_args = [ + let amount = amount.to_string(); + let mut tx_args = vec![ "transfer", "--source", sender.as_ref(), @@ -1673,12 +1679,15 @@ fn transfer_on_chain( "--token", token.as_ref(), "--amount", - &amount.to_string(), + &amount, "--signing-keys", signer.as_ref(), "--node", &rpc, ]; + if force { + tx_args.push("--force"); + } let mut client = run!(test, Bin::Client, tx_args, Some(120))?; client.exp_string(TX_APPLIED_SUCCESS)?; client.assert_success(); @@ -1710,6 +1719,7 @@ fn transfer_back( BERTHA_KEY, port_id_b, channel_id_b, + true, None, None, false, @@ -1783,6 +1793,7 @@ fn transfer_timeout( ALBERT_KEY, port_id_a, channel_id_a, + false, Some(Duration::new(5, 0)), None, false, @@ -1917,6 +1928,7 @@ fn transfer( signer: impl AsRef, port_id: &PortId, channel_id: &ChannelId, + force: bool, timeout_sec: Option, expected_err: Option<&str>, wait_reveal_pk: bool, @@ -1946,6 +1958,9 @@ fn transfer( "--node", &rpc, ]; + if force { + tx_args.push("--force"); + } let timeout = timeout_sec.unwrap_or_default().as_secs().to_string(); if timeout_sec.is_some() { diff --git a/crates/tests/src/vm_host_env/ibc.rs b/crates/tests/src/vm_host_env/ibc.rs index 003cbc3c60..d84aa6cd5b 100644 --- a/crates/tests/src/vm_host_env/ibc.rs +++ b/crates/tests/src/vm_host_env/ibc.rs @@ -89,7 +89,7 @@ use namada_tx_prelude::BorshSerializeExt; use crate::tx::*; const ADDRESS: Address = Address::Internal(InternalAddress::Ibc); -pub const ANY_DENOMINATION: u8 = 4; +pub const ANY_DENOMINATION: u8 = token::NATIVE_MAX_DECIMAL_PLACES; const COMMITMENT_PREFIX: &[u8] = b"ibc"; pub struct TestIbcVp<'a> { diff --git a/crates/tests/src/vm_host_env/mod.rs b/crates/tests/src/vm_host_env/mod.rs index da322d3fa0..3740ba6ee7 100644 --- a/crates/tests/src/vm_host_env/mod.rs +++ b/crates/tests/src/vm_host_env/mod.rs @@ -1283,7 +1283,7 @@ mod tests { let denom = format!("{}/{}/{}", port_id, channel_id, token); let ibc_token = ibc_storage::ibc_token(&denom); let balance_key = token::storage_key::balance_key(&ibc_token, &sender); - let init_bal = Amount::from_u64(100); + let init_bal = Amount::native_whole(100); writes.insert(balance_key.clone(), init_bal.serialize_to_vec()); let minted_key = token::storage_key::minted_balance_key(&ibc_token); writes.insert(minted_key.clone(), init_bal.serialize_to_vec()); @@ -1293,7 +1293,7 @@ mod tests { Address::Internal(InternalAddress::Ibc).serialize_to_vec(), ); let mint_amount_key = ibc_storage::mint_amount_key(&ibc_token); - let init_bal = Amount::from_u64(100); + let init_bal = Amount::native_whole(100); writes.insert(mint_amount_key, init_bal.serialize_to_vec()); writes.insert(minted_key.clone(), init_bal.serialize_to_vec()); writes.into_iter().for_each(|(key, val)| { @@ -1431,11 +1431,11 @@ mod tests { let key = ibc::balance_key_with_ibc_prefix(denom, &receiver); let balance: Option = tx_host_env::with(|env| env.state.read(&key).expect("read error")); - assert_eq!(balance, Some(Amount::from_u64(100))); + assert_eq!(balance, Some(Amount::native_whole(100))); let minted: Option = tx_host_env::with(|env| { env.state.read(&minted_key).expect("read error") }); - assert_eq!(minted, Some(Amount::from_u64(100))); + assert_eq!(minted, Some(Amount::native_whole(100))); } #[test] @@ -1646,7 +1646,7 @@ mod tests { denom, &address::Address::Internal(address::InternalAddress::Ibc), ); - let val = Amount::from_u64(100); + let val = Amount::native_whole(100); tx_host_env::with(|env| { env.state.write(&escrow_key, val).expect("write error"); }); @@ -1705,7 +1705,7 @@ mod tests { let key = ibc::balance_key_with_ibc_prefix(denom, &receiver); let balance: Option = tx_host_env::with(|env| env.state.read(&key).expect("read error")); - assert_eq!(balance, Some(Amount::from_u64(100))); + assert_eq!(balance, Some(Amount::native_whole(100))); let escrow: Option = tx_host_env::with(|env| { env.state.read(&escrow_key).expect("read error") }); diff --git a/wasm/checksums.json b/wasm/checksums.json index c4c13d0d75..9e2ecbf8a3 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -7,7 +7,7 @@ "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.47fe67380d405e03d8679e377597a896af1cd7c9ef300ae040dabbd81676aa8c.wasm", "tx_claim_rewards.wasm": "tx_claim_rewards.35d701950d32f690360340e93bb2572770786f79d981d07c4f96d16bbbc94cfa.wasm", "tx_deactivate_validator.wasm": "tx_deactivate_validator.d0efd18607dc18870590a504cc63d8c24c606894b932efda5ee0913f3666cec8.wasm", - "tx_ibc.wasm": "tx_ibc.2186350118f45fb09ce3c98cff777fc6864d8c32eb0ca86c25103597ba5d0b81.wasm", + "tx_ibc.wasm": "tx_ibc.2689804a893046f0fc0f63354c7592b66d2c65d6a4f31e8efbc11ef9b9a2237a.wasm", "tx_init_account.wasm": "tx_init_account.36b2792c03d9a4ca35de5e61ca59a3cb9695e1dbffd5860ac90feddb07671e9a.wasm", "tx_init_proposal.wasm": "tx_init_proposal.2de4c2cf0b3362e4171ffbf10617991b5a414eb901fe0adab9bec49b229d5b5c.wasm", "tx_reactivate_validator.wasm": "tx_reactivate_validator.2d612d040562276a3117a7a697223be7ddea4523df5c7facbc04b9abb2100f20.wasm", From b55f5bcf698cb2b9232820d7588018e015d6d1e4 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Tue, 11 Jun 2024 12:50:54 +0200 Subject: [PATCH 06/39] Centralized the construction of TransparentAddresses to ensure that encodings are consistent. --- Cargo.lock | 2 +- crates/core/Cargo.toml | 1 + crates/core/src/masp.rs | 41 +++++++--- crates/namada/src/ledger/native_vp/masp.rs | 72 +++++------------- crates/sdk/Cargo.toml | 1 - crates/sdk/src/lib.rs | 20 +---- crates/sdk/src/masp.rs | 46 ++++------- crates/sdk/src/rpc.rs | 3 +- wasm/Cargo.lock | 2 +- wasm/checksums.json | 48 ++++++------ wasm_for_tests/Cargo.lock | 2 +- wasm_for_tests/tx_fail.wasm | Bin 225906 -> 225940 bytes wasm_for_tests/tx_infinite_guest_gas.wasm | Bin 224631 -> 224664 bytes wasm_for_tests/tx_infinite_host_gas.wasm | Bin 248481 -> 248514 bytes wasm_for_tests/tx_invalid_data.wasm | Bin 257916 -> 257921 bytes wasm_for_tests/tx_memory_limit.wasm | Bin 258647 -> 258646 bytes wasm_for_tests/tx_no_op.wasm | Bin 224694 -> 224727 bytes wasm_for_tests/tx_proposal_code.wasm | Bin 294642 -> 294675 bytes .../tx_proposal_ibc_token_inflation.wasm | Bin 310163 -> 310209 bytes wasm_for_tests/tx_proposal_masp_reward.wasm | Bin 283537 -> 283569 bytes wasm_for_tests/tx_read_storage_key.wasm | Bin 286779 -> 286782 bytes wasm_for_tests/tx_write.wasm | Bin 289821 -> 289838 bytes wasm_for_tests/vp_always_false.wasm | Bin 260698 -> 260734 bytes wasm_for_tests/vp_always_true.wasm | Bin 260211 -> 260247 bytes wasm_for_tests/vp_eval.wasm | Bin 294458 -> 294637 bytes wasm_for_tests/vp_infinite_guest_gas.wasm | Bin 259950 -> 259944 bytes wasm_for_tests/vp_infinite_host_gas.wasm | Bin 263251 -> 263245 bytes wasm_for_tests/vp_memory_limit.wasm | Bin 294349 -> 294372 bytes wasm_for_tests/vp_read_storage_key.wasm | Bin 300078 -> 300057 bytes 29 files changed, 95 insertions(+), 143 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a9d914fe1..3dd5b9b05b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4615,6 +4615,7 @@ dependencies = [ "prost-types 0.12.3", "rand 0.8.5", "rand_core 0.6.4", + "ripemd", "serde 1.0.193", "serde_json", "sha2 0.9.9", @@ -5008,7 +5009,6 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "regex", - "ripemd", "serde 1.0.193", "serde_json", "sha2 0.9.9", diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index d84d5cec88..c647dc1c90 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -61,6 +61,7 @@ proptest = {workspace = true, optional = true} prost-types.workspace = true rand = {version = "0.8", optional = true} rand_core = {version = "0.6", optional = true} +ripemd.workspace = true serde.workspace = true serde_json.workspace = true sha2.workspace = true diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index 5b3c234945..fde643d214 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -7,9 +7,11 @@ use std::str::FromStr; use borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; use borsh_ext::BorshSerializeExt; use masp_primitives::asset_type::AssetType; +use masp_primitives::transaction::TransparentAddress; use namada_macros::BorshDeserializer; #[cfg(feature = "migrations")] use namada_migrations::*; +use ripemd::Digest as RipemdDigest; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; @@ -401,9 +403,9 @@ impl TransferSource { } /// Get the contained MaybeIbcAddress, if any - pub fn maybe_ibc_address(&self) -> Option { + pub fn t_addr_data(&self) -> Option { match self { - Self::Address(x) => Some(MaybeIbcAddress::Address(x.clone())), + Self::Address(x) => Some(TAddrData::Addr(x.clone())), _ => None, } } @@ -418,20 +420,20 @@ impl Display for TransferSource { } } -/// Represents either a Namada address or some IBC address +/// Represents the pre-image to a TransparentAddress #[derive(Debug, Clone, BorshDeserialize, BorshSerialize, BorshDeserializer)] -pub enum MaybeIbcAddress { +pub enum TAddrData { /// A transparent address - Address(Address), + Addr(Address), /// An IBC address Ibc(String), } -impl MaybeIbcAddress { +impl TAddrData { /// Get the transparent address that this target would effectively go to pub fn effective_address(&self) -> Address { match self { - Self::Address(x) => x.clone(), + Self::Addr(x) => x.clone(), // An IBC signer address effectively means that assets are // associated with the IBC internal address Self::Ibc(_) => IBC, @@ -449,10 +451,27 @@ impl MaybeIbcAddress { /// Get the contained Address, if any pub fn address(&self) -> Option

{ match self { - Self::Address(x) => Some(x.clone()), + Self::Addr(x) => Some(x.clone()), _ => None, } } + + /// Convert transparent address data into a transparent address + pub fn taddress(&self) -> TransparentAddress { + TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( + sha2::Sha256::digest(&self.serialize_to_vec()), + ))) + } +} + +/// Convert a receiver string to a TransparentAddress +pub fn ibc_taddr(receiver: String) -> TransparentAddress { + TAddrData::Ibc(receiver).taddress() +} + +/// Convert a Namada Address to a TransparentAddress +pub fn addr_taddr(addr: Address) -> TransparentAddress { + TAddrData::Addr(addr).taddress() } /// Represents a target for the funds of a transfer @@ -497,10 +516,10 @@ impl TransferTarget { } /// Get the contained MaybeIbcAddress, if any - pub fn maybe_ibc_address(&self) -> Option { + pub fn t_addr_data(&self) -> Option { match self { - Self::Address(x) => Some(MaybeIbcAddress::Address(x.clone())), - Self::Ibc(x) => Some(MaybeIbcAddress::Ibc(x.clone())), + Self::Address(x) => Some(TAddrData::Addr(x.clone())), + Self::Ibc(x) => Some(TAddrData::Ibc(x.clone())), _ => None, } } diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 91fc67ca4d..df41353834 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -4,7 +4,6 @@ use std::cmp::Ordering; use std::collections::{BTreeMap, BTreeSet}; use borsh::BorshDeserialize; -use borsh_ext::BorshSerializeExt; use masp_primitives::asset_type::AssetType; use masp_primitives::merkle_tree::CommitmentTree; use masp_primitives::sapling::Node; @@ -14,26 +13,23 @@ use masp_primitives::transaction::components::{ }; use masp_primitives::transaction::{Transaction, TransparentAddress}; use namada_core::address::Address; -use namada_core::address::InternalAddress::Masp; use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::ibc::core::channel::types::packet::Packet; -use namada_core::masp::encode_asset_type; +use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; use namada_ibc::event::{IbcEvent, PacketAck}; use namada_ibc::{event as ibc_events, IbcCommonContext}; use namada_proof_of_stake::Epoch; -use namada_sdk::masp::{verify_shielded_tx, MaybeIbcAddress}; +use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; use namada_token::read_denom; use namada_tx::BatchedTxRef; use namada_vp_env::VpEnv; -use ripemd::Digest as RipemdDigest; -use sha2::Digest as Sha2Digest; use thiserror::Error; use token::storage_key::{ balance_key, is_any_token_balance_key, is_masp_key, is_masp_nullifier_key, @@ -42,7 +38,7 @@ use token::storage_key::{ }; use token::Amount; -use crate::address::{InternalAddress, IBC}; +use crate::address::{InternalAddress, IBC, MASP}; use crate::events::Event; use crate::ledger::ibc::storage; use crate::ledger::ibc::storage::{ @@ -62,24 +58,6 @@ use crate::vm::WasmCacheAccess; const SEND_PACKET_EVENT: &str = "send_packet"; const WRITE_ACK_EVENT: &str = "write_acknowledgement"; -/// Convert a receiver string to a TransparentAddress -fn receiver_addr(receiver: String) -> TransparentAddress { - let ibc_addr = MaybeIbcAddress::Ibc(receiver); - // Public keys must be the hash of the sources/targets - TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( - sha2::Sha256::digest(&ibc_addr.serialize_to_vec()), - ))) -} - -/// Convert a Namada Address to a TransparentAddress -fn namada_addr(addr: Address) -> TransparentAddress { - let addr = MaybeIbcAddress::Address(addr); - // Public keys must be the hash of the sources/targets - TransparentAddress(<[u8; 20]>::from(ripemd::Ripemd160::digest( - sha2::Sha256::digest(&addr.serialize_to_vec()), - ))) -} - #[allow(missing_docs)] #[derive(Error, Debug)] pub enum Error { @@ -108,7 +86,7 @@ where #[derive(Default, Debug, Clone)] struct ChangedBalances { tokens: BTreeMap, - decoder: BTreeMap, + decoder: BTreeMap, ibc_denoms: BTreeMap, pre: BTreeMap>, post: BTreeMap>, @@ -420,7 +398,7 @@ where // Required for the packet's receiver to get funds let post_entry = acc .post - .entry(receiver_addr(packet_data.receiver.to_string())) + .entry(ibc_taddr(packet_data.receiver.to_string())) .or_insert(ValueSum::zero()); // Enable funds to be received by the receiver in the // IBC packet @@ -484,7 +462,7 @@ where // Required for the IBC internal Address to release // funds let pre_entry = - acc.pre.entry(namada_addr(IBC)).or_insert(ValueSum::zero()); + acc.pre.entry(addr_taddr(IBC)).or_insert(ValueSum::zero()); *pre_entry = checked!(pre_entry + &delta).map_err(native_vp::Error::new)?; } @@ -512,9 +490,9 @@ where // Get the packet commitment from post-storage that corresponds // to this event - let addr = MaybeIbcAddress::Ibc(packet_data.receiver.to_string()); + let addr = TAddrData::Ibc(packet_data.receiver.to_string()); acc.decoder - .insert(receiver_addr(packet_data.receiver.to_string()), addr); + .insert(ibc_taddr(packet_data.receiver.to_string()), addr); match ibc_event.kind().sub_domain() { // This event is emitted on the sender @@ -568,17 +546,11 @@ where token.clone(), ); // Public keys must be the hash of the sources/targets - let address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &MaybeIbcAddress::Address(counterpart.clone()) - .serialize_to_vec(), - )), - )); + let address_hash = addr_taddr(counterpart.clone()); // Enable the decoding of these counterpart addresses - result.decoder.insert( - address_hash, - MaybeIbcAddress::Address(counterpart.clone()), - ); + result + .decoder + .insert(address_hash, TAddrData::Addr(counterpart.clone())); let pre_entry = result.pre.entry(address_hash).or_insert(ValueSum::zero()); let post_entry = @@ -608,9 +580,9 @@ where .try_fold(ChangedBalances::default(), |acc, account| { self.apply_balance_change(acc, account) })?; - let ibc_addr = MaybeIbcAddress::Address(IBC); + let ibc_addr = TAddrData::Addr(IBC); // Enable decoding the IBC address hash - changed_balances.decoder.insert(namada_addr(IBC), ibc_addr); + changed_balances.decoder.insert(addr_taddr(IBC), ibc_addr); // Extract the IBC events let mut ibc_events = @@ -651,12 +623,7 @@ where let mut changed_balances = self.validate_state_and_get_transfer_data(keys_changed)?; - let masp_address_hash = TransparentAddress(<[u8; 20]>::from( - ripemd::Ripemd160::digest(sha2::Sha256::digest( - &MaybeIbcAddress::Address(Address::Internal(Masp)) - .serialize_to_vec(), - )), - )); + let masp_address_hash = addr_taddr(MASP); verify_sapling_balancing_value( changed_balances .pre @@ -714,7 +681,8 @@ where // Ensure that this transaction is authorized by all involved parties for signer in signers { - if let Some(MaybeIbcAddress::Address(IBC)) = changed_balances.decoder.get(&signer) + if let Some(TAddrData::Addr(IBC)) = + changed_balances.decoder.get(&signer) { // If the IBC address is a signatory, then it means that either // Tx - Transaction(s) causes a decrease in the IBC balance or @@ -730,7 +698,7 @@ where // Transaction(s). if let Some(transp_bundle) = shielded_tx.transparent_bundle() { for vout in transp_bundle.vout.iter() { - if let Some(MaybeIbcAddress::Ibc(_)) = + if let Some(TAddrData::Ibc(_)) = changed_balances.decoder.get(&vout.address) { let error = native_vp::Error::new_const( @@ -743,10 +711,10 @@ where } } } - } else if let Some(MaybeIbcAddress::Ibc(_)) = + } else if let Some(TAddrData::Ibc(_)) = changed_balances.decoder.get(&signer) { - } else if let Some(MaybeIbcAddress::Address(signer)) = + } else if let Some(TAddrData::Addr(signer)) = changed_balances.decoder.get(&signer) { // Otherwise the signer must be decodable so that we can diff --git a/crates/sdk/Cargo.toml b/crates/sdk/Cargo.toml index d681124f8e..6497eea6b6 100644 --- a/crates/sdk/Cargo.toml +++ b/crates/sdk/Cargo.toml @@ -120,7 +120,6 @@ prost.workspace = true rand = { workspace = true, optional = true } rand_core = { workspace = true, optional = true } regex.workspace = true -ripemd.workspace = true serde.workspace = true serde_json.workspace = true sha2.workspace = true diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index e9b543e763..b504a32797 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -798,10 +798,8 @@ where /// Tests and strategies for transactions #[cfg(any(test, feature = "testing"))] pub mod testing { - use borsh_ext::BorshSerializeExt; use governance::ProposalType; use ibc::primitives::proto::Any; - use masp_primitives::transaction::TransparentAddress; use namada_account::{InitAccount, UpdateAccount}; use namada_core::address::testing::{ arb_established_address, arb_non_internal_address, @@ -810,7 +808,7 @@ pub mod testing { use namada_core::eth_bridge_pool::PendingTransfer; use namada_core::hash::testing::arb_hash; use namada_core::key::testing::arb_common_keypair; - use namada_core::masp::MaybeIbcAddress; + use namada_core::masp::addr_taddr; use namada_core::token::testing::{arb_denominated_amount, arb_transfer}; use namada_core::token::Transfer; use namada_governance::storage::proposal::testing::{ @@ -827,8 +825,6 @@ pub mod testing { use proptest::prelude::{Just, Strategy}; use proptest::{arbitrary, collection, option, prop_compose, prop_oneof}; use prost::Message; - use ripemd::Digest as RipemdDigest; - use sha2::Digest; use super::*; use crate::account::tests::{arb_init_account, arb_update_account}; @@ -1040,16 +1036,6 @@ pub mod testing { } } - // Encode the given Address into TransparentAddress - fn encode_address(source: &Address) -> TransparentAddress { - let hash = ripemd::Ripemd160::digest(sha2::Sha256::digest( - MaybeIbcAddress::Address(source.clone()) - .serialize_to_vec() - .as_ref(), - )); - TransparentAddress(hash.into()) - } - // Maximum number of notes to include in a transaction const MAX_ASSETS: usize = 2; @@ -1072,8 +1058,8 @@ pub mod testing { code_hash in arb_hash(), (masp_tx_type, (shielded_transfer, asset_types)) in prop_oneof![ (Just(MaspTxType::Shielded), arb_shielded_transfer(0..MAX_ASSETS)), - (Just(MaspTxType::Shielding), arb_shielding_transfer(encode_address(&transfer.source), 1)), - (Just(MaspTxType::Deshielding), arb_deshielding_transfer(encode_address(&transfer.target), 1)), + (Just(MaspTxType::Shielding), arb_shielding_transfer(addr_taddr(transfer.source.clone()), 1)), + (Just(MaspTxType::Deshielding), arb_deshielding_transfer(addr_taddr(transfer.target.clone()), 1)), ], mut transfer in Just(transfer), ) -> (Tx, TxData) { diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index ec06d10dd5..7afb6cd0de 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -8,7 +8,6 @@ use std::ops::Deref; use std::path::PathBuf; use borsh::{BorshDeserialize, BorshSerialize}; -use borsh_ext::BorshSerializeExt; use lazy_static::lazy_static; use masp_primitives::asset_type::AssetType; #[cfg(feature = "mainnet")] @@ -41,8 +40,7 @@ use masp_primitives::transaction::fees::fixed::FeeRule; use masp_primitives::transaction::sighash::{signature_hash, SignableInput}; use masp_primitives::transaction::txid::TxIdDigester; use masp_primitives::transaction::{ - Authorization, Authorized, Transaction, TransactionData, - TransparentAddress, Unauthorized, + Authorization, Authorized, Transaction, TransactionData, Unauthorized, }; use masp_primitives::zip32::{ExtendedFullViewingKey, ExtendedSpendingKey}; use masp_proofs::bellman::groth16::PreparedVerifyingKey; @@ -55,7 +53,7 @@ use namada_core::collections::{HashMap, HashSet}; use namada_core::dec::Dec; pub use namada_core::masp::{ encode_asset_type, AssetData, BalanceOwner, ExtendedViewingKey, - MaybeIbcAddress, PaymentAddress, TransferSource, TransferTarget, + PaymentAddress, TAddrData, TransferSource, TransferTarget, }; use namada_core::storage::{BlockHeight, Epoch, TxIndex}; use namada_core::time::{DateTimeUtc, DurationSecs}; @@ -71,8 +69,6 @@ use namada_state::StorageError; use namada_token::{self as token, Denomination, MaspDigitPos, Transfer}; use namada_tx::{IndexedTx, Tx, TxCommitments}; use rand_core::{CryptoRng, OsRng, RngCore}; -use ripemd::Digest as RipemdDigest; -use sha2::Digest; use thiserror::Error; use crate::error::{Error, QueryError}; @@ -1719,19 +1715,15 @@ impl ShieldedContext { // We add a dummy UTXO to our transaction, but only the source of // the parent Transfer object is used to validate fund // availability - let source_enc = source - .maybe_ibc_address() + let script = source + .t_addr_data() .ok_or_else(|| { Error::Other( "source address should be transparent".to_string(), ) })? - .serialize_to_vec(); + .taddress(); - let hash = ripemd::Ripemd160::digest(sha2::Sha256::digest( - source_enc.as_ref(), - )); - let script = TransparentAddress(hash.into()); for (digit, asset_type) in MaspDigitPos::iter().zip(asset_types.iter()) { @@ -1758,18 +1750,6 @@ impl ShieldedContext { .decode_sum(context.client(), value_balance) .await; - // If we are sending to a transparent output, then we will need to embed - // the transparent target address into the shielded transaction so that - // it can be signed - let transparent_target_hash = - if let Some(target) = target.maybe_ibc_address() { - let target_enc = target.serialize_to_vec(); - Some(ripemd::Ripemd160::digest(sha2::Sha256::digest( - target_enc.as_ref(), - ))) - } else { - None - }; // This indicates how many more assets need to be sent to the receiver // in order to satisfy the requested transfer amount. let mut rem_amount = amount.amount().raw_amount().0; @@ -1809,21 +1789,20 @@ impl ShieldedContext { memo.clone(), ) .map_err(builder::Error::SaplingBuild)?; - } else { + } else if let Some(t_addr_data) = target.t_addr_data() { // If there is a transparent output - let hash = transparent_target_hash - .expect( - "transparent target hash should have been \ - computed already", - ) - .into(); builder .add_transparent_output( - &TransparentAddress(hash), + &t_addr_data.taddress(), *asset_type, contr, ) .map_err(builder::Error::TransparentBuild)?; + } else { + unreachable!( + "transaction target must be a payment address or \ + Namada address or IBC address" + ) } // Lower what is required of the remaining contribution *rem_amount -= contr; @@ -2214,6 +2193,7 @@ pub mod testing { use masp_primitives::sapling::redjubjub::Signature; use masp_primitives::sapling::{ProofGenerationKey, Rseed}; use masp_primitives::transaction::components::GROTH_PROOF_SIZE; + use masp_primitives::transaction::TransparentAddress; use masp_proofs::bellman::groth16::Proof; use proptest::prelude::*; use proptest::sample::SizeRange; diff --git a/crates/sdk/src/rpc.rs b/crates/sdk/src/rpc.rs index 1433041036..d54a0e0e36 100644 --- a/crates/sdk/src/rpc.rs +++ b/crates/sdk/src/rpc.rs @@ -1163,8 +1163,7 @@ pub async fn validate_amount( if let Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) = token { - extract_base_token(context, ibc_token_hash.clone(), None) - .await + extract_base_token(context, ibc_token_hash.clone(), None).await } else { Some(token.clone()) }; diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 2a00208e8a..7b8d4ebacf 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -3701,6 +3701,7 @@ dependencies = [ "prost-types", "rand 0.8.5", "rand_core 0.6.4", + "ripemd", "serde", "serde_json", "sha2 0.9.9", @@ -3960,7 +3961,6 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "regex", - "ripemd", "serde", "serde_json", "sha2 0.9.9", diff --git a/wasm/checksums.json b/wasm/checksums.json index 9e2ecbf8a3..af7ed1e305 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,26 +1,26 @@ { - "tx_become_validator.wasm": "tx_become_validator.e469768e9320dbefb6030fd74505ff7907010d45c6088db17c31c0fcd6284d64.wasm", - "tx_bond.wasm": "tx_bond.202c875f22180d112277488b9659430a288dcc4f4e4c057460ea6bb506755dac.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.ac228e264479ea683c641a1eb9216c354cb46cb9d14be6fdbdbe190e7686a58c.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.06e1998944d6b17b57e174f67065317b6551a81999025e5346de80f4d4e450fc.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.283e9b69ee32eb565483a63810bca0fcf59ddfcc2861fc3658dbb2d1eba64a43.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.47fe67380d405e03d8679e377597a896af1cd7c9ef300ae040dabbd81676aa8c.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.35d701950d32f690360340e93bb2572770786f79d981d07c4f96d16bbbc94cfa.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.d0efd18607dc18870590a504cc63d8c24c606894b932efda5ee0913f3666cec8.wasm", - "tx_ibc.wasm": "tx_ibc.2689804a893046f0fc0f63354c7592b66d2c65d6a4f31e8efbc11ef9b9a2237a.wasm", - "tx_init_account.wasm": "tx_init_account.36b2792c03d9a4ca35de5e61ca59a3cb9695e1dbffd5860ac90feddb07671e9a.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.2de4c2cf0b3362e4171ffbf10617991b5a414eb901fe0adab9bec49b229d5b5c.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.2d612d040562276a3117a7a697223be7ddea4523df5c7facbc04b9abb2100f20.wasm", - "tx_redelegate.wasm": "tx_redelegate.846d500717cb4a08165d23641b75ce30a4be10ac918c4d3db81371c69e3b2063.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.1a8ec5b775088f32a7b68e8976b98dc88bd183170608b1bfe169f005d873dd9f.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.d935ed0cd9e11a3d1e54b0a4ed7f6560588ee494a34e021637483bced6107e0e.wasm", - "tx_transfer.wasm": "tx_transfer.7e957ccff54cbeef7993e578151b52fa06ddd0b69cab3cb6e64923ba9c6e2b58.wasm", - "tx_unbond.wasm": "tx_unbond.2ead8660f57ba7010f5599a30eee2c7879df6fb491fe75ee22e4a7cb7dab8d3a.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.a54af40b27b2fa8f5422411959b1664828b3efe8e72b05cb5c3eac055530c53c.wasm", - "tx_update_account.wasm": "tx_update_account.410b49c7c28dd003086b96e61469b5dd3485aa838334ed7f1b067f1aa0f6959e.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.e5d73f1bdbead96fd7f1c8dc388bf6458931bf05317b1a556a2f6ffac7b2868f.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.0f4caa64515acaaa218f909bc2f79c93369ee7fb51c3b8bd12680359dc4294e2.wasm", - "tx_withdraw.wasm": "tx_withdraw.c26f34fee02e29aef365fc1612e0d077072dc53f2faec409950f1c992d7c1dc6.wasm", - "vp_implicit.wasm": "vp_implicit.7ed6fb6bc160bdfdd4d837df505890adbb0134c34fd16b184215deb2fc57002c.wasm", - "vp_user.wasm": "vp_user.8aad829f98629a7185360bd86adca3b2f8f750675238e2d00da8e09457c2df11.wasm" + "tx_become_validator.wasm": "tx_become_validator.120563617e8f5cacfb4d6e62b87c2fe800545a0de7ec648457f499503ab43441.wasm", + "tx_bond.wasm": "tx_bond.3e7bfd88145c04337bed2b94ee33532bd85641b5311a48d177163dea4f358bab.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.09e12de9ba9faf0b4e79c2d58b78d7a8d308f00a9c284f9995c1b1cb4f0f5f81.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.2ed6abf06cc472ef2713d9679488591c0183d383cad34093055b8e0a5c7ae538.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.2f9e67db1dc811bea9cedc4322664cb682a09cb81097af60dd87fcace029410f.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.ff460c34ebaf828f7027d59175aa5c245d5b64c16b4d6b13230c93bf1321d48a.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.1fd9f3a2c4c8c3443534d652e59edca768c62d0bddc5d2b5b1ab12e0e8af3b25.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.4e2286f741de4ec50932ca079f513bb40c1d106e2f36297025bafe79f447e640.wasm", + "tx_ibc.wasm": "tx_ibc.cb1972468e22acd1aee392d7917046e5f2f74378d9c2b1f6c7058dac98df6df3.wasm", + "tx_init_account.wasm": "tx_init_account.5df2c6444016af2243d040039ee2cbfcfe743b8ba4b7a0a5fcd99bc7057a6b18.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.2d2010d9091ad8900aa443b0cb498a88611335ffcf7cee691e5875ece092305b.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.234a06e499658498dd785f1c66519f17839c83299f882a59b696e6f2fadd4c54.wasm", + "tx_redelegate.wasm": "tx_redelegate.8232fd4abd3a222327acd32d0b1d4fa861dd6cfedb4c0fbfbe699b39094b1b15.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.c7dda40b09fdc29c9367657c378ac4415351d688fc2b69bfdf84a06835eb71ae.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.28fd22f041f38da21796fde50cb76d35f4661bcd569e0e49e9f8ca49c57d9dd8.wasm", + "tx_transfer.wasm": "tx_transfer.466af88a669f8474cbef15bcea910c4a6ec9d7ac84617f8cf808e29b9cf0b013.wasm", + "tx_unbond.wasm": "tx_unbond.64d5051e458cd70c659aa78175c9a319240585245946eed651134f6ff3721f53.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.c4de22ad413eb84f907a37ade57b1b2f5c782e9588b2bed23f792fabc9839d45.wasm", + "tx_update_account.wasm": "tx_update_account.bc0bd503056c7cca31a10ff4c67db4b87a82656e24c586fb8f12566df8d62875.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.553e76cab200d0f872de7e33d9dac0fd2696db7e00406eb15f890ec98311232b.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.98d2698516c7d7f598174c1fd7cb3742b9dbd44a41a0e12157e1d9c483b063de.wasm", + "tx_withdraw.wasm": "tx_withdraw.793ce3fc2586807d433d14e4c5ba6955a569cb5be2bb836bddd467c23ee8299b.wasm", + "vp_implicit.wasm": "vp_implicit.4307e550eca544cd8d224378d1ab97fbc84477176ebf18a5cb5e387aadff1564.wasm", + "vp_user.wasm": "vp_user.cca2ca1add22bd25ae05fa35d5c4a4ed627b95a403f1e6466a9779574a220b00.wasm" } \ No newline at end of file diff --git a/wasm_for_tests/Cargo.lock b/wasm_for_tests/Cargo.lock index 59aa30e730..159c1bb94a 100644 --- a/wasm_for_tests/Cargo.lock +++ b/wasm_for_tests/Cargo.lock @@ -3675,6 +3675,7 @@ dependencies = [ "prost-types", "rand 0.8.5", "rand_core 0.6.4", + "ripemd", "serde", "serde_json", "sha2 0.9.9", @@ -3913,7 +3914,6 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "regex", - "ripemd", "serde", "serde_json", "sha2 0.9.9", diff --git a/wasm_for_tests/tx_fail.wasm b/wasm_for_tests/tx_fail.wasm index 3bcad70e672db3c5ee795d1e9163706f9831d0a4..117d3d75a92f6dbd1941548501ae564b0abd140b 100755 GIT binary patch delta 20092 zcma)k2Vhji^M7XVF6|QXLOKcLF0>F@0Hq1Y1L>iN0uk^F76gM|zZ5}4B>{p&DF&W8 zp(Yfi2%$tckYXs(g&;*b0a1#Spfsuf&+fZB0^jocfBo{_?ab`#%i z--4H?lF^e=jRHClWVQL>e?In={5&7t3@B6^=$P)WZkys)wh&$p-`idq|J*EY;kiMt(>u5b?(N?->`O&i7 zvPzV(56!d$`d_xxs-0Y?M$JvswpYc<-Fqag7Vk}qwslPDiG zv~k9CTkA5PNU#J9aF90MxN3_tD*Db#RLmW=MA5`y(+hpl5`~X;1T1_cEE%w86lk1r z)wd008uk6^&?#epUmV>q#`!&@AB;@@IpNnl6~a*=T2;7aGz#dNK35`w{Opq19s;t6 zo@}8|0=JsLv18rMW(WW?g`)h!!+N3wWA}rtlCd%PIm$Nf2ERsAjNWB30Y6iwFBwLQ zkZ$yakrUE}zBGzMTGCfWCGCsn4Ans*QIz=V_?a=HHF{d;CBA8zLfIX_75U2NL0{7; zfX)M&jlZ<%lw(W|tw3XqrJ=5fX(q2~mMlLf{6a6LG;OT$LD@u_Zp_7Vtg*YSK{Jg$ zVTm-$$O>x}I?1e|-?ybXYz{wdl5r|5Dbn-~zopPvisa+)1uE015dIu|p=WrjsOb{w zW7lSzZ!`r4+NZ|q@J5ttl!U(!zF2i2MDR-kHV5J^8p9=mA~?AfX`FqStj6GoR<{Gl(K5mjRDcG(@JA^bfd6*Q?5h-elY1wnAC`hX^4*L67v>q zH(W7Ec%F?J8nMHz0l4T9(wKf}TE3B1t~R=Ldbz&n)_djp!Thhq_Mx4|rr7bc%V-yu z08_sc*O+!23*rXR9wWNE6O@h1e@s6aYsy!qy~e5Xr>d<}yrbQgF-u`jluVoLGk&Yk z5jE?@>$Kk(7T-MLzT4s!M-X&_289;wXJc3VGvNFvz9JnkDmqdi$sos%(5b$2`G3*l zp7VWMft12%;*2&vPv}PnjhhLdhaGyXHG2QBqG;xfG?rHEUw)y9tLc;D+bS6TRSo8I z+Jl7MVbKm5bt>J2jjL8}8|LZzZ1VQKF{bhhz;3VHL==oM8aT@v2~{RUEPdRVGBGN^ z#G9+kq+g6aRagBR9y12;)e@T$8~qcj1+p|okT3kOV0vN*(JuvytFh>?qyGe&|V`RO0;GbV_ z5G^#~pLv-M8yP9(jLFYbb@yI&^9W<#GvnQ+vgjFB>8+|cm}=m&EyNd6*cfBSv)$Ys z10su*1*F;{Bf0)KI%BM^fAqhwnBSlUoi)xkc*pHXkDIsvUGj|qSe&wr2@Oxfs zWgS*WsKbI;*M{NqdDD7y&e+nlB3(4jH|+v_8#dcXmkjazb9gp;zCNDAo^Ky+u1aCf zP)D#+!wlmH(*7_GJYSbCqgNu7KRB9KEme9Qr7Ol~&HKY3e>NXLSB+kJA;x7~i%E3N zSlpti-xbp;#^|<@hP7pDDls~=%miIg%MY+*w0~h%HMMG~L6#^otM{KQ~Gd6S@*9HN0|GUMPG;r;?IKIR@aFB zG(K-r%i}di+H`>9Rcf1B+Aq0nYv^;T?W-8kP1?1jzl@A_!x0(WZa3uLoJ2CtH%7Ie zfmyR$hXJTJw!`-x?x`tNsQ{)M?)A*9KUa~f=z_)8>qQ8yqFWvBxdj?!ypd|0}ayhzdjC?sc z{D$d>SX48eRy$VEGTJF)ZPDmF&>xoBWj4r9Q zD8ookt%m2K)Hr%juq|~fVP&4s^SSD|<_e_#@mAj|>Ba80if%{?I`o;h zWSed%re#WVVs3=7<-Dl41^L+Rx`%wv%~It05?NVK)DMr&+jX_>KU?NEV z`F2X!nJ+MI$tZ^seMFSwW%?@Qkl1Pm@GOO=K^By?ZJ_r^t?F-_*c zqT~p0*!3F)Qm-?{5ARLFNbESQ3C%V>8`dFej-+#1-4lb4!>VIN*7A(Y!=fRqZTK!w z7Yzq>LGb$t1W@vbB>L9qHNqL-jou2zjp%Bj1;&vNA7Vgd1ywi1#|=KL!ViTwittErsBDCrnBMqN>8|YHH%LJ;g3WOUXK}OlL^&=vz|pW*JdF+E(n;tF3hWn4XP~p)Fl07#d|PI%E}npQt;Nww*wH!7OmS3 zU(8v*8P8rDY9@Rq+dvCGHGO2%v(r<=?_Kh@eZJ9UW28~Ip(kzRz5!H$rgC}!MHrno ze()ru;K9aFKiX3evaK75y%~Jz9cpImK5Q>ow!NNz`W~f=MbERk^|JSXYS7(5cxXim zjWY6AJk0W7ZNCSsNwD^B;AjbsegbTdmfqwuF2Sb-8u&P~MS3@|DR`}DvK7LW91JIf z&$h!8vHnjz+&6u%ioK8w70D{Nrw%9{(|P#hDLRu{ z*7v{*-Stx+vn(z}3PxVi3?W4mI+%E2c@n1Q0pbx6b_GOgp#!PyHFo~;&uC9;#frQX zveS{M7!NWJu^&WNB#;4BN0q`BDy)nTJ&f~9VT;YWrsS&GQ%9oGy_^-?`p~oT z_x0nwjK0ULrOLgnlCu}>F7`U^rnW&C1v&BA%3 z>(%z)HtT9KQjNV=qx~*PT4WJdt~wh0k9uy7L5L)=LZ`s)qTF81x2_@e*?&6$&l|T>DYu~G9lJo!ymEIKLW_NO8^+v}GC5RKpdMCjl7s}2 zF(@dCCKfcj*PZCL@%eoxc&xY|TjjQ@V9^mdRI@a6SQABa?T&;6BL>kEW#-_c{cZet zzq=>i1vokln_9Px)CYazOj@}j`?R>dVA8VhjTM?+xa@p}1zFX>2gwNeZ4V1Wypi*? zLiE{PCRyCh-hZGC-xWm6pMaio^0?wFB3F_W^xA$TA0b7ny>BV z%Vt%;mgZ};m7=Mbr(3BpC=Xdlr)wN#BUqgq+bD%{dAyD4&@EnTqvkZ4@7gFC-NQ9} zX(DLW`YO^Bz7zwRTfS7&Z?ufxv_Ck>kKV84F-7)QkW87i8((zYpjC!o`f=HT-*6T;n+g2!<7fazZ)3qv={4Mk?Z>&Hs0~;1ksUl>C zAH)MoHVC;duuT>nU*>Q=9h+4Ns*dfs+Z`&m`!7=6tns!~<@+Led>3-Sh= zK^QhC)=9e6oL7woz!CvTV0gxLC5bKxD0rkMjzn_#AGK&|ZMTnLO7+#hP_;bqx7Fht z7~}*zVbVRr@wMTzIoz-|hEfjqtBt`h-?geXMUqX82AQWT#cU7rNp+U6F)vy`Pe&{kDR&??xN7FQoF2=2W5V97RG{enfM~F0?s3w>cfA0{%d!Oq$IPbr|nE zuF?V~n#V_ z^fAP2Kt?O>T8akE?RA&UhGabA;gX@kMu!X~Jw$nrK|A^6D-;#8(_KB!6Qn{~P-#0k zxF^k{eXbQfDbbI1^0C*bT#({pUrU10{dur2g>(4plnw0HuhTQtc08$&sX~HP^S}$C zgcTz1;EV52CV%n<-Gsw_^d`)_pEtfqW9b05=to2FTGfxM z#6~CpSohufSztvhK}v5lGUYAkXSQuI`^H4c+y>}PK&N`p(t4_<+rB0jlcDAoK-M-} zkj;48l+Z#|-DHB_+FnlXPq86pMYSOelkVf5{i#cg3jZ*k!36U%h!p^#AaChU4d@rw zz5digP!YeBM$gdCoRx+n+wB}WkX}dWy@8Yr+}8ssiFUL84#n~1fmF7o>5qYqvW{T% zw^<6nHgJ%)iwx$3LWQq_RSic7Xl% zzk`WphYMX86xIU#=>Zz!V7;HSD2VP46V0g9COEqjmVC3>1Q8-Zfl z&!&EK?gB$`pY|@dRc^{Vr z4)9;^lM}OD#0XfF4)OaRP$QgXuK0j@JnNYfw}I;{A{);z^5T z<0JzX;|KqaS_4!RQ0T@mn{sxa?|=TL7;8#{06UU1g7ZK^|0wF52%;_zvLOId1wXIqI03g977D4#v`B zOY?Anxy@`(w(vVo{*;^u^Ok=~FNomtlCP&0Bgtt+m$=PDYE741lP6M9AYI@-jF@9T zpJ!^|yrAR|;HRmoPB~nPFytf%K6;U#&q1njiI?TTi2J$zG=zQ^UF)XNXM(14>zP2# zu(>Ql(Wn`~Q;{LOc2W{t%XHlvTz!#9f-K8 zl=5{1>DKp<{;J)MTdrT{lOI*Nt#H`?KpO3*-H|11H|Y0I6~b<@dd_LQwPM!3p@^Er zvI~6d|K;$d__nN)sAt_Vt91Q_Y9blU_y&R(^Gfq|?ixnb3M0FIT7hAOqb}XX`ymTpr(j5L_DZLE_)$(at>?3LV z1YBIHFP2;3ZrCocVQ|0#qxob$@>*5(C{onB%aAIq=BmpnDfAO{7H4zdnvCk!as2vn zO7Vha3Mdbt#_dJNZEg_Nq8yRV`h^cTmkrloX)e_Bmx7$6N@^f6M=)h;MDkt?i0 z;`kT8y9Vj>4bERfwL9^6hoB*mJPR=ho8zV(z#B>3$Bsy@6h(HN1TT z{C++Ey@B4t>)nmiFy?#dRfx*5U1gpIAp@4DL2LMjjW}~z?K-uQ<`7t96r#V)6q0`_ zgiY^q?@ja%y6alE34<2nddp^Ho}cpcEtttN`OFp|$8+2+BnY!{qlEO*#NBjUXk`#OU}b0p!|PD@P) z4#qByvkdB--9;6}!_n-wn}&uc;t;!@XEwl}?#8{$FS+F&s^_`$r-qEL_9c(ogYat% z|F8!!)LriI6Fo;`T;qSjbW^=hb(zpZr}89!-i~=@vp?2&EVC*GDM>8yQuOQ9ZnR9-|@d z%M(Js;A7scJA%9>pU)hlZsDFgVICCL-+Wj5V=X&=F&iHj9^?qHg79OR$fE{DYQr=U?e8<#XM0)B&YY z=P0UrzT^eM9k}>{C?0XsayKLgk(39%1Mqw05Dz1h zHQ-*z8bt%R7gFr0g}T6^v1Y$f)Ibl@y9Ovl_78<})x!VUYNx={9Yd zTa$$f=EZnvixeDKJy2W5g=jF{(_o=pvdO{q=x{Ha3kv4Nc-dqJDUCr3Htr_ZD42;s z176x<1qW8I>!me&N?~GkpuEKBJgG}?ntsj)0uKHifw@P(EY-ak0g4gN0ty|w>UT8gycAPJzI(VX0bgZ^Sk~%FYnO!JhE8NvhD%pi5l?-bC zoywFFaJ_JEA!Zj(<7RDO-L-KF#jDR#Xa^60DYdMQSYU`5scS3$O?3CJY)zjX0p2ZJ zr##X^lU#V7BFajcZ0?%aAqFdMbO8&=cRca}RjsB{02Ps&!b_1nDtd*-fL_VFE>Lf$ zM?4d?u#`Pyb<$S2+FZo)NsC>RFJUosT#*vv?8u_2&|Nho`;3M_N&xxTAC%Ni389^m zwDS1RG$ihOc~x@baAv1QG!#1hgefFTC+>rC$ID2#i+Pm!T6P(JU}jYqRm$_Eer8rB zbW;iVIJn}8%&9BPXn@3-zIJ{zwIHb+jq2_o1>Mhn70 zjeX>ND_PC_s}L@0PR(TjlqXDhSk1fhcEO*QV9UK{2{nkp84U6ib>&CjA*;!2KlpzO zo>EAWak`_vypaT+82DE6QYwnrmekgB#&tvm8@R`tq9IOZvfmUv@VfA(s6iWCQ~s3a zLYw&NU-S-My>3t<@47)v`GXtOhW&0*0z&7co8&;a+TkXhL8;~~h zm)D^dqU}Vngb<(D^c|mL8PeABueYew_4wuFM2?UsvMdO}GP&t(L>3$QjoX9^@|=I0 za6_I)+`;^^O%3Tqa`Y$v zD8%Pr*v+E&eqs?{gq?LOcvU}j8$A0qoW<}aQnI?Lq(MMWy%W`SaWmy_%{Y~o6O z@;22N-WVw25F8&56#Won>vl2MSt_;(SFw#-3blBK<9i{--N9cxnTxAJu;@tK_YLt3 z&NK7Mh>vNbt3rr)6}EMKq@nK=WfUL3C+u8YR>afPufjyL|9s0n4G#T%n5cpiu`^*} zMEPhRfrB#j2@@iFWF*=;`O%NvzL1EFGb_S5DNKa_XI_!KBwT!egVBZ$Lkt-GD@4aja^YT@>g6z7Oy|^cqCH06ymDyOJNisd)G}RvloK^6 z%=0lyLvvzA|K)S_I8@K%)Hu;0{3*OVC&*`49GnuPJ5GG$jW5j|EE#Vvat$gk(vaYq zmtwhmyy!`b`7>du#?{kAEU%9j&Bf``k!p+s{XUBuIm9$%^#>dn6Zvd)iaHn}A2~%i z?&1{H&EMC+>YW7XCOk1gypNK#B0jY{!qY2?=V+?ya79rT3oc)*B&x!_Lo16#D6Ok3 zYKD1pY|r$kP33!)#XoQ@p=TA*qOy6pU8c0^myV9gz^zuf1_wLwP#E4+Mckop`1`7& z5@a}CRg6F>H4%~@;Xf0V47I9>NTQ|ODoN3#C4pus|C*#|KCZ54)>aqM1dscSWD7y>sq2E&31iO3x=R+yuP*=fLG;Y^_rZF@jH!ICW{Z@v9;=ms$pNL zFW!X8o$*wIaX=k01^Byl#2CuskL!x5I1|z8iM^2ebUoN{f$LE{;UqYU^I1_L>`OO~ z9F=J8KpZfJyFM#&fdAuJaUa_bry7eWepFxhLPFmLVkAJL8;CEUeq=)>cGretGsr>b z@UqJ;#jb55#qLZauzQLus}x!2bCS%p_&Ep(ci7cLG`8hS>A0wgNN`neDzND_)%9{S zK^FTiC3cL%fkdjWE}GKR1+#S_Xcy~VX%7m4-;?|M^=$)|CAJ5d)K zEM41)+IWp=hhECzZ%_(b=N|d!7(L@$A*O_Be4!nDJ%?l3qo;HD)%KzhUfdqQb-bg! z7>;2!Iz?3VTl1TwpU#8&ps>(gP?(%j1up4;ZZWHHg%s~^znqI^byXwlaiM1U=~5^x z69*^CIqI&vwAC!}?i5iAI^9hX6~#37h}C9OIquX^lnwKkO)7Lji7}0bb`+Jpn&Pk$ z_AEgxx`Ds#D9S^(ogGD7ZI31J!6fiGm<2buZF9%0A^RawjF69yv>aaeqDc13`rXu_ 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 YvXhps2PZ<^YT#c>{OiQ8eyBD0AGaK6W&i*H delta 19725 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�VHMTFKk(Xid)r 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 diff --git a/wasm_for_tests/tx_infinite_host_gas.wasm b/wasm_for_tests/tx_infinite_host_gas.wasm index 4bdd870571bd06217a1b2548b9ce74083b8a0615..f64a16841ac1ea6ddf023b254264182b5902c8ef 100755 GIT binary patch delta 24572 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 KzWYzD{r>@@OFLWu diff --git a/wasm_for_tests/tx_memory_limit.wasm b/wasm_for_tests/tx_memory_limit.wasm index d94ec7c768d71c1effbeffd89231655d31af0f37..5e283dfe2194f9bee143cade11a56c4010f8bf76 100755 GIT binary patch delta 38755 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

HY7a_m65zEHgNJ9AEuHrL5v zk;zPZT3y}70@_v77L@%9QGIzXRQUy>W|);BR2mZ|u$M=u6#26_9w@o4<_AU%jz6u%PIr3Ot25-;qEx z;OLT6Ngiw&rJx%Yh+-d}&E74l;mhYUgvCGgiL5_**a^i}E8X^LBX20KneLJe)$JXG8d$D0!;ORgs)4oXLZp zU}VPGynB9N%-94JuZE8yocU(!af>eFIXDOUb~`l1iQtaW^^ zUYH0~58fsDhWl}>&Q&bhI(cVzGA$6$Hrryc%*k64`twd+4QpZkE};5EG z`cy1*;ZUCvx+KvT3z?sZ11=r~#k=6*X{bCD2H4Ux+>=C$AdbWeXhqvZj)S5iJCP5< zy2}1UUIVW`5_vapxLp+(%3N`{3XdTY%ImkYYB~KLTeVETD^l0MLFA2MZPov%-%+A+ z5>G}g8A-f@-L-t7MAWsw7}>S_tgf{*NmX_*3GH4hv}$|}TPN06gW3H;#3sYeek|Tj z=1<`ZOTgU#@=ywIS#ce48B5r>X98KYISlhjx z0+hL;Zz^vYVIKnCyOVU*Wn87VZWa}$az=)9Lv{WrTPZ5m;Mn>tYS!Q}NNit&ufXBbNERm$v1igpEz?ys=?FdNYkKr{k4Iqa^L@mAykULgs5#p;_d{FRVsS~t>Etj*g z(9)_lUj-0#dR3&SLsZ8^&vgC*`$l}3j`~iB3+a3SyCz!K!B}uZjIG1R;B}=AZ*1*# zbvPaNURMTVfFbOfXjYfgUe|tgdB*^G)<2OWo$vOuv#9%JiCgV1y5k5vTn)GdBULU}E6Erzj)NaDtWb9DDDIBqQ+PITLS+-O<@%`i-cypG20<}H8E$@M)Wvv~5A#9(N1vlodQ#-@Z&n)`5Gxuid@C&UQaSZb40t>|cE*v)u(G`{nA@+T(LGBw;dWmyS zu}}gh{}&$cCn9bjcZMxGNxYP2@sMYg6J3Tu`HDp06Feb9-YLg3>3`Zl(VfnZ;N26a ze=*?08sm%+uF}B%eBQGW_E%`MF$Akw`f73a2_A)e9E@3qywr6X3q{aVJW^y1;mv%q zAe9`wk(e-qSDCPa`UWu4c_NMOX=KK|d)jE@yw^yC!RApe_M)g9croX_Mhv%8RRJSS zpHEN<#-ZONnI|&CZ>$AJlP;|NmjijkDa;=K{u@MyB1Y;vH6eG5-L$s1Xa8RgjG z0aNiQ9!D^#Px10FofIBA)I#m6;Xx&CEGgqj`47*=KvXu(e?G;Nddpo*w0QY!)pDh5Q9y|Sx9ezZTuzJ$j(f0jB#eGr0>ka6`Cef?8H`Xvu>iLgQ38Tt<; zXVYOZZH&_k_kCdLQ&j89dqUA)>B>`FNpSX@@cqf#0TCElb$K9~eqz3e7_IAZ{xpWs z>5rpZofO+1=TQ+mq?N*AYD1i()r?rRVeOQ-`Z)ai6T;^So)~^=veFOf5IT&!oKHd7 zY0(l&+CY}4?xeww!JafKzd{0ht4dMb(0Z@{-DI=O*?}EnJW)LQ7<`zSV&`MLg-GZI zSKzmabb&$y9n78NzQXKeAlV+=!lUmg`n?-p%h)CHeh>ZwyD0J=f&soHl@|d@IfdSf zyKZoaB;5ClR=P?-u6{|}eTYXy*%`%%7{C>fQC-TuC~7^-BPQ6{v*_jzy7N@GYfzYw z?oQb(VUX@lDX~kTEOOmc5bWlMyQMIYHmxgUkECXKNE3;e^;2^Z*7ZpLQvze{g%ZW! zM|n(Rn_CJu3c72f`kDKy82$>(o#G&s{^(I|+VMto8d&1J@QEd76!zYHc%*e*nBo_; z6`jj)VN2Ti-aIR81r466h&wA+H0{H2U6aV|!;@><`kCgHG#CCqsQL3^83<+yCrEkRx7$&=e8Hg8=;?`^RXN>{c!5uMx$DfaEl zoxv*l$qjULD|tGSTiMBqk;**aX~lD87X&HDwc@$*H&T?*Aq$c(e(novp(4vz!j#s6 zEP%BNU~x-TK-S1ZvPe`CC&S~BuFMO%KWYL(D`t!#7vIR!7ZFk`G^<`>az7pd{^$4O zPq^=9fG)_p8GvDz2Z_t$+^1b+-#TxPBl(tCp7{JrQ?fW8#rcfjkOLygnqrG^HST}%I z2JN2?K*T3kRD6s#vF<`5HOQ%C`4axzOLQ2-Yj>A!2Uk9)1O6ub0P0TCuJxCVRP}v@1{dUP&zwXNU2WKzVT_YQxR|tW;Gy1^+)+ zynG6<6Gg$(h+Rw+6;IPNq9`dFfeGx7nLM07sm?b0S65*&2d?|Va_F7mJVlHc!JCVi z5xgCCWMk&CKgUs#1e$X|7GZh1Yd1tZ z{49^MF5C?!`RBp<;X-Ikh;yC=9mV3?XEDRvC0#m&70(&CGF&8&=0CDo!v8r;^*#{0 zp2I9@mU!hk*d@=eTB7pv+=!cFjT(d=2nu97-eZ`Za($L~_IbXttQ5YI#gH+))xVN{ z83Tgmh%PVi4mcMgUO*R`BX+%jwSwEC&R8h(9P#p4Og|5a{ILirtrwq+g^+F+Req6I z#PRu}xR)sIKL=Z@!S6X@;mbTFUeaYS#N$C#PqLMmRk>*51GBzdoO>BMI7ieO$0K4t zP)#7tCNjExPXf=-U~-p>A>;T=0NxrWQ765^=Y|NY$yenr1k7~x_lpj^0-`aQ`~6j( z=<^W)=u3+dUgPUIH2vrVgf_N_(g}QAgneMZ4&m;dT?|;W=;a(lDPS_TQNz!9?2w}=4~VO~BF<0fK(qfqReh@P7#N+!ZL?m3VT`QQ3O3^<}bE3cz? zdJ>{4?tt1~lQ1(qCK4v|w{SFI?PP9Xo_%97m_AvwpTesIPnP~VSPH8Fe;pCISEnG> zII-xjDUeg@$D~zq3TrrN?+s2Ic_bBMq*VKHJ{HCsV9gIjz2D%Uv$Ff#+;P6zQ+bR3 zaDA_sI~CKJE8@~r%;|p<`ZP=srihoO@wmvTYM$c0zHS$YX@A;W&JoLdhXR5!f z@GLqhpTV1bU&cLXVC%oT8;C8o2dy_W`wr`1- zo;Dcpws_%9bfFK$);D>tU^&C1<3F6@tll`okoXoK!xv35M{kG_>)zr60U0!t_s6o_ zh?)F3wpg5^(+51_LdwP33W-%6urr z6|wXkMAf>S#lSXxKF{Ru$}98ajL#vyoi7dT-}CtbgmC5w^v+%4bAb@+yP`!tj~12l z5yz3g2k`xqMaz61B{t>r7uj2))&iaov66Hm(YH;YTv0GK!*M9aimVv2fDZ=D=L`5e zklFuj-ZWhPDHPlh=#>8BtWXPb&D;EGpZ(Mk5JfM@=i#E>LW%#wh0ubJ#Ic2lZRHBz zMTk7VC0<*^(?Z;V?0hMlMRaCh`y%w^Tyc64I@tyhyO?JssmrnaVCLm71El7>O_(_MUK!;PRF?%G^*-N(f$zxsh~DiH0n52d^#1^ZM4=e} z0m!$Kc7K3DtWaEZC$+*?_vJ9Pg<{Nd{t7JojpaN!&9Z31`(%UREmh0o-1~3;?W%?IGndQOy1HIO4(8DGK9t9fu*Li zwv>y?uWR8e(10(g2n%1i;z$v19x_D^!gcfw@*U-L!qhuA^X9Msk8OrKm@87Yz%$4d z9k$3do?%;f?87!K9xCWTi$5LrOt342Y-|#V3!Wq*0x#8FT8|T3_yoT&b`|Ik?L;T(? zQ}+5>w;m$ph)g-|j~@Huc0L=edtrxMy;`<|w@z_4fDFN`FEKaKPs(|dB;Dc|*H4L{ zoiI)E74P%Gl{<&WtF$-=mXl;Me)-_n!kysRb@2&-pA=_z!mOSUm5X_8yt0bX3r>h9 z@fC8N1~Uu)iaoMkv7#7b;t8?!Ff8I<#V~&-MBFak1g}ST@$_)J$l5qtUw6^)w|EzZ zzxBfSj3@h)d`_6wi{j(>IAVRsoMMj;QTQpAxKt7Gec5lHV#xptS7F&lTAX#;n6dgc zRba0sFH&D(`e(crTKmaoupuX9l()91w3}BBv3V)E`-N&{z1=*?-F$@0NlRSW`b{x> zH;?IjLUBLM>j)Nb+R01R@|*+%6uQj;+`Nbsr0X{=HkL|LCUsNZ7@5LHV5#@Xy&RY7 z%X-%fzdeW^xzU%nJkdMQ^|ReK&SKl4s!&y8;CfZje-DpsJjL?v9{^CEY>HM8*)U27 zP|XsBd$51ug!pm~Pj@%HL^gt&b#wlgJk)m(>GBX%mHIi{i<6@5=e$PQ^|m$-fEayE zk~9NwF*ZqVCV2pS_PIxO*k`7)RCP(csk;7p8ABw$;l>l;M&Vv1td?K!$Rt~eRPhm& zVf7J`Yl#K=>K8nzwk;v$MoPJslaM4+-Ux~*9@={33m)s{h>FK4Ww`f++!7G8*CU^1 zA-1w~+$-}T;f7(Ba;iMyIb=CStluknzJD)z;t6qMFTCLsB7C2GHQNW)*;fZE-9b|n z0?FIw_sLTE3Vg>to?h8*8V>y{Z6vYLwuRU)`ABv^O#c#dg|EfYFR_9yxf&2&HW(34 z?=t;sQGGvVA1A~!`!Nq(FPa@dKP|Qtv}8Z*(t3dxI5NS88G<;B5nO3k*m6gZ~JwJ-eK2k*bA*`WVMM}ytfYb9Mr_3@WS39Dp zA}Pyb;<67a<=4L^HSxzpAXDr-j1j)}VQCJ*gH$p7u(XLVcKz8`BJv22i;)~g0Ki3j z`#OyHTpF8gNGsRn*TC%GNx_e*9m`USsyNqrRI|H zagWDto9QbTOpvbMEL!>%<_8!Fw;jU<(e*-VQcjt6rBtwf%VFf7vJXMQB6lK=o_f{_?ZGrxItz-&WUa!CtG}Tupp(nLhQ%{cNQ8aEpO2N^5CN9Q z65tGiF?sJB-ZEKD@+vtis!1Nn=SX69RVb9_a<7-@QJZ%WkDfrd${n7eS+g&$bT(2( z=*L9hNod&`3eVIQeNQ6(H%Y~4Cdnp4rtl0@jHc)$_FkC_ycnBo z{yfbe_x^z>Qe>?D){~4DXMksgc;O5m4wv)X83ZAOsQ(>Yt3omCJN|UE{G&7oau8pf zzUuEwVlm7cyUMP7$7k~`IU;x()^O*2&&Ocv1?KzV!g-d5IA&sKGza&H6y45ZUVBA+ zaTZ8_5PzRVw=ERWCHw;!~dmT+z#HeVHwEHJs&wDd*Q+-#y z0HO-SvtR$(#BncUZxxyvVh(fe0%nl~qUS{n9e;^& z7t!f+#r%t$CX6R8!t;4uR4C<1*54-yMi7lG9{zkn4*oug$SeiKE-|VUf;=OZ)7KgC zO({aaXN2n#`qFgK?GjXAx_Idlgfm^NyTscjTYf3FR7x7q5Em|hG4OXl;AVn2kS*t} zv6p#+5GigL-$S5sewO{s5_};#RQn1fxLZ7N12Ov@$+8Qf!S6N6$T@yD*pSbxAZPJh5eJbDcS=s~gg z8voz=6DC6YnK$&ELBjS&sNDD&p@cl~#LxT!DC~G0tX(gjzs}zYQ#&Z>`UDD+6;{qR z8iBy%89tw--{cwLY7ZXt zrm8EP)W_+HB0~DzU??2RHQ`J1HQGj8!A=(jg-!P8h-H0U>|4WiR;{my&&{6f6N09*49gyDSuKuqEn zk@5$BxqQZ+KhObZixGcf!6HXQ-R91^IaCm&-N3daj4>|HlaWCxMI8y#?+_#wzr^s{ ze6inbSuR??BZB|pA+a)(*hR}xq?Zb%n)PM=g;2;{tD@2b$}5bf!+OvB#h2TESvCo& z$WtYf|CTFZqyEOu_gpdMZ|LAJV$0tge}qM}{)dnB+e-^bMm+W^ZvBV1^1C2E!|>^I z2fIgd#il#_1NZI{2pP!Hld<1%)LjIhKM}j{a)GVR{qMm9e=Nq`L(p*cJYB0|&stR* znEvs+R@xiL+OH+C+<7;(#(=KQ@K?>}ir<-b0AcmdxVA1@jw0%B_EMh=Gw%LD^abmM zMKd%lfvLaXL$h2oT+w16h=?UWhxTzv*3!SPRsL_VXhXb{a_yb#YT13)z9dEHUP#Xx%i>U;jAjrNfNK1kG9|+Rk#MLN$ zb*)Ba+pJ2D1$;-mOXykxb?nW$HWFaT!C>WIqD!zw2K4D*jST3jVC^k*&?c3U_pumQ zSzC-fLw72Jb1*LkPH*NhD{4uNt`16da+PNK;6;eS`>Z;ZcqVO?8){4JJxsh(uY+z5Fb0 zglp-b#TB82*>^&RT7Sbl5#>(C;4d4Ij`fJp!ZE-Pi_l!qrfCsc2RjZ%5vm)Q&K0_Y zE_UCgVUPawqxgqP;fBOWtqESeBehg)@SGT_HG>d#MrvVQtaUL&s>+CF2+?rbKHG!BsdJt?k6Vx%?O{R{k{zsl^U)G)8+ET9y>6T}P9`; zFl;#v>rduk?kjhCk%;$*>xr5H`s-AIB;FQ}RDoH@72~UDQ6M9~iq;~{-Br{uL*gbf z^;-6h>-a$f`Jq3iB%+|ETaz_sFBs)^m5|5b-`=>Oa5Xvy9?q`!T%7IN|gs|%SQ6EStc_*nTYmY*UuGH6_L}2Hk23kh_lO%jYURn=1W4{bE27lI6 zHUoYmggwk?hsCjO(i?(jr6J~1+(3&6Ic+N#ZtbU10occKxq-yoqajAU9pZXJ(EWq( zZ=^K|oF@$tHa<8xTGXSF*4X;vTkVSJ%cjPFAGJ_rrH1`ZfL4iiLuCXdds_> zXs;2dB_V(@H=1g*Gi~KS4(--MhMP8-qW>(rg#3-6A6uTT%LKYft|~snu4Y<@9pT66 z!8EVd8D8yezS!vS?Jw2lpJp0OgVUR9_={g+P;)p*UkTA1gTp>?y06wK>`RiM+K5k_ zpm^TC$zpH@&O8;g)B;3@ep(m~P7Le^BfL+{XaSQrPZYM$GWY@7BM>^jrIw!TZUQgU zSP%Bnp#`qrm?(BN)PRY;`bRUkYd z@Ur+TQ=0;S90R?7o>*XLUGXY4w1o)@94fk-c0b7-@uV?(8O|PZoY+e4rlp84vox3Y zW%3Y2oo-OQpjKKXAc$|JMRk-2(3$A4SC-d9vM24adp9+R{*cCf>?3gBM%uGdzF1bk zpRAsTOQ5xSVriC^CU$nwDu|0z%MCHG4Ql+pl@<`N2%97>ILG>x=Mei%2-nYBG zmK3R?lwGdRFjWG5TMi-bOy0tNS3t8y&TH{Phee{yiPF zpsLo4pga=Q!%0xIAg*}U zc(Jv!Ru{QHch+hsIYx*&U9?aLvuzixX6k)JTDE|yub8UsCHw!U)QZ~OG^hBkl~z&g z=>j+84{@@K?17JU)iSCo$`HH!cekLfe~_uJzpblQrM)dUTSsv)ro5PHcu3(dDJ3Np z4=G^M@EdjGjN1Q=eD4QHU{*IdQmpQ#&BUayS$FLdtf~Id9RtQZ5z#}dVLKyGTWoW} zP~D>kM7CEv+XJR`o_M{7Hn7q@Vo{v;8`9M@ArZy z^|v^v0RHNw#YR~N=Zqucvnkk%oyhWs{Pc)s#9&nv7&pXH3F@dZAV!7` z;}>NqxB+p2YGB-|P*JpXBUTLs#pHOhRP?AlCnm-o`@8qOnSt?~_K!Dj?tbsP-~G1x zefNSBl;uW*>k}<5K`@NO)d@NW0YoaH61Y;3=s@6A+01(}6cYMBAkP?~1D-90ri#O9 z1rfdQG7+tRiHKg1M6^@A$P2v6hoga#56qP$LNI{8c=sckHO#baW5J7!lmGkJ3#;bSd)HoUl zE7syT2$UN8?xPuF@q=6N*gG?yI%10J=Tl!DfCMa|zK$P&llK7HShmKa9jV0b%?GN&o*U@C{rV)l(!P7 zf4e)6geFr;L$B`4hCh2_=!C73HK zYXSzBEul!hx{NkL3p9HZ|A+MLlVK-rAB&XSc>V?^|V6dD9>*_Hw}tCBxY z0gblutrW~+Ay+J;9zJyvdicu>%0~8aTfonK&H3vfGgWfUI@*M~x_?YZjr?#4y$7w{ z#HCVrwJe4B;JB?JNW4OK-DJ@gc zqFGmu4^U86bWfW1iptehZ8ROA0J!iCE0M3Ik}t;AoJxJVwRN44OsI|jnL!zyQH>4I z(9c}>GT_hT)-AwkI`sRsp)U6~@`H5D_*#U)eMSChrnViFV4AU=GA~RgKuS*6)Vx zhDbra@MAD<5w-cYi;_F!zQyAB@(?~bRe7D`7+>AaO-!Q#GzS(eR`)iug9m&n*&=am zEND-coixY2g`yeVz%&QizSN!62z&P2Y}hYbc9GrfZUtdebh1two(JXwOIA6D=R^O3 z<0?uEXc1ml3L$j8fghmX>4nIlM{N`TEBTN+YAiygBB1k19#TXTdb+O>#uCu35%zsx zR649z*72FnN|4VRSk>k#E-#{|P-I|7x&`+2)?)e%UJb>d2Q?f}A~F2Z5=y~V?ClbY zg7PbTH*iiKNA8B6qLx3}O&Q}`b^g(>A4NQWCO)|9);oA{*l-+&VE%=;tR=d#6V8It zv-89~wAFZ)ukN9dp{{hnezmX8h_kn0s$j0;@V#Ixp78g3X`@oK8P}l%@y31N?@QRR zkA4-b*#P^A+eL98sayyBfe-KPqdB;?WAuIiaS6xohmIwi8~4-bAdNXeX3g>)NI>Kd zFU63raB3-FKa;;JrM{-01&nFq@dMu(R0hJB$)n0BwClGbNkSLC?01`Zeh~$k-1jky zY4{iCltJ~A$6d>5itcRzFL2n~3l(Tvhp1KMlHk;p)64+Zq5V)!L}Y58mtXq~noh|l z*)b=x56}SAntlKb$!T^RfMiw2=7S)<=egz}1*>AWlgAyRfdd+4CxuKJhFQZB2y!vW z8n>$X=KGH3m1DpwI)4d2yT5U#L)52}Eb04ivirkaA+rFK>6`|n=UxUm3WO0*e%Z{h+@vGTwjn{RSVB|iHG=lV)eOK?w> zM=6w>{!B6Wzw$KxM<0>@5ue0;j{+_{@l&`^i$G#VyZD`-%Z##6_bN}J8C8@FBz2-n z=9kHPsy)e#)iOEK=}CU`m@7F41&wFO!eft<8LiDc?rF4NjVu^BEz* zW-UDDlq@aV{^FFY@=*4)ZSguGFFt*dk>x9!lDzk2d0XFYlJ4(&VZ8PoPUnOsr_9DkdKoRcXP+H25x z8HrC2!Z*$X;WhK(EOft8iH}d00gp|5`RbWU7Yo1lIQ!m;JArb zUZhFw_-)r^sLs0=$zOq%@yXxmU1L5^zC_X3C@8r^pW-#@GMX&lIhP@J6>#xoFtpeC z4qobYw9mFB@a`CPg(kiFm7t-Xi&VVtRgoOUaeG78Am@=QgkzTWg%t{ zGTqn^KpJ*26z)Hgf;g-Jp#6yFHBcH9YBw8zh#os%`GR1#^Tc`Z zIy3-yC)}VL9XO^5`Nuawqxj63*o1uuB`t{y?$GRRX-Q^7w83C##ACvfmQ>wBgA;hi zG&M}AOvFht>N`qnB0ry|4(!kynZx+SG!<-OlxkvA3r*lj)6@t*S2b6S2E$OUpRT^9 zbV=q%)74-e9H|atpBd^3XMCjkSWz06^Se{kBEOIoX2b8$VyJ?ax&Kp$*Q=t`DeI3T zelX%o@dV>>g%5d!k9dWhUg1+-;qzYM%LsSF^Q{H<5G r)hqniEBqgXyBW-$9{nIQI9Jb56Z@F|Jl9wUW)kre}7``-tNxM&d$!x&dl!K`CGyFZv}4| zNWMPa-rhDF9_9#YWG%&1^gEv-}2AH z8^9hi%WSRHCvWo=?P&@&&uNJhlLlvMi?#Q)BlIynwU3U{m-H3=hu-{=exhCU8!hp; zt^KKaFZbxzf54!=Pj1(CXvOsUEb8%CHoZ;VuZo@8YFb5mXa^mjr5>Nq2|7vN(@pxB z7K>$KxwuX%#1C|hexZdPIpPK#7q{q&I46FkAH;he{@;sh;y=QnJ6YaJ{(NR9q^vM|+88(qB6HVi(U7$_=YG@}zylnWV8{@{ri;;$po$Mmr@J-h< zCAhzN#-mne^)rC{WrZ-qZsZGRsmvG^PxAGmK1EiLKZn~%pQ>s{sP<%2WB^LfG$(qV z;%b4K?svsDO8*py(L`6TrD8^=dEF}|%xWpn-|m?xVx29SDc)79@0Xwfekd?}(se84 ztH6Aa6_B1NZ2CNNoOdj(GvD!MI$+lJse|VLpCtmU-YAUUCs2cdrJ;| zWTlNFTY9|AK;0`gMbK^+GjkHauj@)6M_*SEd=JPrwtDX$}sE#`FDv zMl{X56fl}*^UV}d&CF+Cb3)*2G|&7!Fx7>XoLJigH8Y=14mIZn)dawvpjtHFycYC0 znP&6gQMABZA3T`eG5z!uT4+A1cOW)1^)|G~JgP5$^c_WwPomiFW8i1Txb_f9A7eX2 zNfr6qQ8w2{J{R~{69vUZ-s$?g=8BNIp!IY}D4thCUZeNSffc?41r0;vD;AsuM~q~^ z=KG`rb3RhnCgG_sHphgvqgj0VClPHHhK{BsW~;Dalx?mHv(r*nc8K|F*psx(ObhQD zv0Ty^0GU?E@XSH;3(ei(!)UGEA`HNT9W z6u!a2q`DH0_6t1I^;~mQ%wP1rIlSUx`oQ#vjibe8jo3t5Zg!8Yis#taG}>t9$99a( zcG0oR+r?r6l3nOTwpp!GUvzy!rNrP(5-h$VRDzK~`X+OGrCNcTRn>}yhdl<;^K+#% z+F~}V+#Ju>D)++kMCIzV)%>+`Ej+7KX^dx|D$7E*$y$)QNPDD_eNRf}Hq+bQn)1xf z_GT5gy2$A(*)qT$2K|G-E*16d=5l*=+GHNVbF=xA{VeS;569KS^F~}Oa0kRMM4PMP zXW&`4>J_h@svYy2swv?YF3D!B41eR=eQP=ls#d9zbBfrbjQ}ZHx;?}oeY>pbukSJ! zRg0q!&E3^rrrl=U>K$p1Ij*|h-AEcLDKc!gbnbjz}C4nP+v; zxRHVJG!l$OljOMOnFpJMqni&BGibk=krYO|%y*JjqlIQQYYcGJxqMNIrrr4BTS=ue z*B)q4dR!pJCEu3r9OC`5kpP>&zdcwM21|bB`@}^`eIH@hb&JeMdj!bbTeES?c@p04 zlcWJij&LqU_<-uE9g9a3WE=l&TBIa5@SG*V&4ZzKGdnpA;(sQ2G-SMOtYoU_u%rP zbGJdIt}g9bV2P7N2&s-S!lfWdWTYRFng066@})-4)>ssHf!%?P#bLbVl*Q26^rLyt zGz=mtFvm9fmiFd7-ncH&F*CDC!haW~ysw(nB*>h2pRd#d^ZS?9<{$I-h5>6hyPlwym-}7fL$JZY>hbTdf9% zemz<8SQt5!j%O~&K5q_7&7ceBwbTZ9#u_h$f8&I?W=l810d*FOdak+3=p9zRBoPI9 z0j-I!yau(Yjg_W(n`HEAc$>$Egn~D3A%{pCP5DzAs%e&YC zoZn>vWtc6~s?#L%nY4>ZKPvQ5&dyt@&@w5DEtAcWUAv;@hg}WIGXLtD8tz(OG%Tr} zk`?)yKE>?OtsyW^=~k7dn(MozNn&nyJB*ceZ}%<#(w9j+Uh}*x$uKWQB+0Ws5ll2aFQxBp3UP^&E+r`ng2chYMFd}bPK27(`Zb5x4e3`g$n6Bc z!1Q-|jiC1=7;37XPc~CVrh$qHBU@vZCj@~Xdl zgP`8RU#;U7j6tt{ToG_+pt~I(wwr{$?~#seCo1ZfKz z*?FMH`6Ajx`iB-jWAS~0J-LhiI2b~`g&rn?~?P<)=bgo<;~3KPFNc*Ou9wi zn5QR)#^$O8SWD6}JmNedMu{Q=;+80~G=1az%#^TomUwyEy|dyx{IS>s!HsX584s^w zSZ3YuL$Z2&6=nUE*njV5)^$1!RSXY%BJ95(G7rL}U!RqX=b5Y~cm_^c^-ve#qbY4* z?Rigq1TetUE21Hsz&FJ503G40-#} zjt?~yT+VvZOuD8qqm6o!E_HdJ(gFm zQ6w=1BOX!PCL8?AmBjDA_>Y&$m{0gByEtbq7dt_?nS;PFnMz1j zEzI;-+W@dl*AA|+-=Z$mX6)RG9vaD@zzLl|G*P4?=%n8;_pklI8Py>X z4nuQxT@_5KJL?R(VK&R{NH@8#gNV;tlUswxVV+pufo_>$8y3`Z3WDJwV@^&Kvag0M zPQ#xKKBqg(#D1aTQPf+pHHu1c?ib0q22RdJ+aN3$FR&TTn#~9w#_X(?S z$lfWD^Q-|>!sd(cPu5NhBh=`|y|d_y`RKmpm|^4gbxBcT73UEklpaQ44m=b3r;=ji zl7A^Flm$!7-}W5`g8ln}An&jJng&uH9IQ@XnAHz8fPR1S&^hsC1}C#viLi zKbqZ-RihhuFCWtgK;w=#MzzhyqiI#%vE#EMLw~YrU@;@3AX|>bkLHNW)lqNG<$n;B zS9tj=f`H^+k^N)^@JDIjxCa?{zct#ju*X3 zA8<@hs!WHtu{X_jryN(jsfM?>pWz4yrd~uDjv+ct@IeL_MNy@vCd&b`+mbYR;CSdN zJx0%TW$Q9q|3`L|%#JFP?H>gVV7E<)x3vbs30bWt_SQ2Ua60CA$mV~pM4==eWH7dV zW>6;2u0n$+-cy_w(B_gAdWLFMsJNNXU4@9FV}(F0&7G5>yfc;Wsso4;I2Rtv^|zp9 zeOG?Ivp!-a_xMFSMJBjPGK8c=AOcnbog?#P7y-bW>=Z#6e8f)APjuBmbOhzH3kE>l zjYwApM5#hF=+4h6m0wgUAHM-_)ygQ9pReGp{L=U*0!TKgic1$1Sq)g|N)rT+1AMgL zOEr+AAf5T8;obdy;2b9KP?883zOs z7bSYf(_TI~KN*1|EXV^Pe#POHO&V4ER?( zgX_Bb(%;jrc=XSl^K~gTaFSF2#>BA(K?QL_3VlK|c+xbAi?9|UZ@YUDl8fgIu33-9 z&=Ou!kCO2!s7IZ=VEJPqlRs@po$-opL}|2upKFAA@9^wK^lFQRlB#xrSZQDivNI6?M+-D0inj5d`XVb6 znja8Oa4W%VGzQ)UJhL&S(7U{^F-3X5C&Bf_e4#PfoBWr$POJg&*@pygLiu%${NApzj7Z{_Ct?3o| ziubpsrlD&jiFW82Y02W@p`T>mHdKk$IuhEz8l{6gqAm5IT+VMxajln2aOq(iq7%$j z4=@XBk=PjTJweY^s9*rwJ(9Gha=$cHUoZ0l1ppJJ!*0_zaMgCyM|W*Bc_0L5_ttay z?RH?>dj7E;#eiVX_87_y+_*jEyEhw_EY8P}I@q%VWdh{w4mg{zjfZrkezcMIcBIGg z(mO%dZQ_JZRK@#!*);gtwG(v*;L=XCB+L~I6~;WxxV1(i+{RryQ(HgF+?(Mc{R)A2 z;Nbb>#r7-Y!v{K3JKD^iUBLX!+{SuMvR((Q*FC&qHp}+n2xh5~tK7~+BY&f8A&+~d zQ8Uz?lLm$^=hJCwP;RAR8ti1FE7hZQJhm&P(pKKy6&?S8uXd$bfE?S6;wzT0oTM`; z?Ib&a$zJ+8-qMX~dv8@8UCdXy(QDORZvEUvXxgZ5Fm$WXiz^Z`AYo z)XMD4gS@Clm2X|{j6Fya#lgt3t)IE-mGWfV#1pE%weOg@^AC0V_RH}8gA z70#h(-t#of$eoV!Pg7qJd|Xzxdt-yf*Y2kuXX82gjtU*shf%VJTVOqnuRM({$1LtV zGm_5J7u;$T6zCU@VWZGLx3M08sdjyzg!_?)ji%w?RN-hKoafm70{w`v1}}e!rr=e5 zEX{WXfnbSy8LL$-mx=A+o}$v`)bQt_I~}x6a2yT7EJ<}qM*%+=OSPzgYrTxQ_POKD zmoW`7zUC{`1xk9xk0nqe zO9r_W6s$g%UZ>A^#$0;Cdf7Q)9>jGsXU(JM=rsQ{kDB~{C!R4Mu$wt|zS2M6Td!)S zN&7oD|{v=01 z4kdWg9WGu+G2-4N4#=fVNbbp{hIE^Yb15?9whK9^@&J{$8J=A$Zkb2zc*%PD9d63} z4Pb8uf3X2;(q!)YKD~t3C-1{B`h!zGpw#XbAu^Wf>WOZlwK8BeIQyl6doHLlAl8T| z?t_8@A5diP(iq6{<&^j4%9m_Z_??Wl+Ok@3vPNZDP0Dsb1SfB#m|7N-tx^k(^~}dO zT78jAkYw@wNjzpFb&pmSC1xhjK!F2HWyooIZX-3Jsg96Mm_FjcBu?K#4QLWC+d|o3 zPr_Cjiq!P2lp+iFZiO9lm%raib&{tj#{1#WLLh8VE9Gks!49S?g}o#@_B|lMt+q*d z=O?z&aJPiW9)YoU_!J7GOAn)x5u;#_jIx#t=k2(=E_qS1l@G()nd6k3yWD3x)Mh4M z*p8KH>cSn=eWFDdl$5GdTuRW3mDC~M$W|@6q;ZRuZsf`wU`45Om<3{RPDqg4=l z_>CNt>eHO`;doXQEUqS+&CZ|hpr+9-A_^@cRKtbv!ftbwo%9aewH-TYh;;O#98@*> zw$!Au5e0|idiXsT4c_Kn4w@OL;sH?YUNC<%`DfI?R0!Ec@!o1o!R=; zSelCxOMmKF{CGa1FxmWVKAl3qY4bsfjF_Urwpd$?VlX{RrqH0{!a+Lf3pZ@_CoukI z^O;ZJYRzF-{^3z`RSnJf0K=;pXVtS|x;~fdoS?{w^PHtteio#N^!d)bTnw(O21;}n zCJPp&rC5)EP?r=q_1q7aNc1Sx#%mv*t+NgHRaHt)bMx1 zf?IA_l$3)-sS)9ZT?FxS;*C*kE=vT8jar~@_Q`+Hmye>eHaDVcC5Q|Zm1`8G5|5MF zbJcdF#agsb4i=@Q7`V#~TTy!m15s>5g1}avQsl_8v_l9CFL#^SUha+>r5RYH@T0U8 zvn|T35K6@d$7L$2x^`59cZcX{Av)SljT ztp1D&{fPOMZ(x{Y^1W}UNdPOt1Q6>BIrSm}Sc|y#MffN0@{x;hVKO=GTgswEj?>@L zbU}-Gz-1JE#wRY*1bUA)(Mim|mV&v37mN zb+6K6@KYvVg-5rSx2u%H`+K-Lfa&#v%ANWHwMFWaA5@Lst;~dL@FG6rW!IA+LWtyK_FW zTdIQr`Wik~48ve8*SbkbBNYm`MqaXuZk!0$7z+-|{#7*c<=frALX}(J$U0IwcY#b9 ziN@YCxvpNHuyQ&7CbdL(<-tvQI=I|cGmrTdS0FaA$V1=E zjen=g{Lya|;%DuIP9gH(t%J2N{`EHq#RhJ53m#D>r*;q(dHXG@R&kT$SiGm*qp{e6 zT_EY|dqSImms|L^TgsmX(sOW)^*>pLg=f+Z3l;Vx}6zMFd0$?%&4By@sRiKoWlB_IJo$!5Uv| z)=G!jBi;)%jk|-%vzPDP!HTt)lm3MFm&fD(q_f@@LO<^I3-Z=*?p-A(MR)&KIcf2i zloKBH7ZuP-ZuB>8q*eUg-;_>!xZ6EU&h>oa9(uEf8{S6?D>>^vwenjfIf1yLNabbs zDYmIR9q(!P9jUK(7J!*J_~oPLDwbjMH!KcwDpBYN++gQT1y@kYaSsqy%H%g6Q1?iO zHUEukholt688bgpvgNq^fF|Nt8Se|%B6&QC{$AF0E?)}J;zROP3y7$J`8WxoALKwG zHnSNhl@12k1bBM7SM@NuQ{iQziR6E!iAuJbpVs7E(A*h9RGSC)rpN$ogLbdo3gh%aduKj|ylgX1~ADBQ^pe1%IYJfs-4 z^58%b5$u{;8Isj#Z%Uv@1+I?+#TJnET99al2+X!1v8dXo7UwX4I9c|0p#rzY36AP6 z93b&T+--EQ7>Wv~gTbDgy zE7)LvW9Dg#nvNmjLveVr`P7#B?&yfr$X+@!S8Pe*(G^56f_T^wp8+a71#Y?YM()?L<+D6BRwR@y z+2t%b7%N(c6XzFJ60!C&RSPTt)vqAgtrO?D`9Gk}mV&}6q@czDsz(`I*GfSJSWuv= zv8aX$wq`avUS7>?P1U}oJzXzT_l}d$E0sh-Sqif+sLm-0apOz1om^SOPApS@Q7I_g znvqcD+xGsqwsT9>#U}d0>iYb%ZlHA4g|W-3%%4{-&-(&rNl+D$FrW;vXG=AR-I<3q z==;wGt@f^!s*CLw#g2JZ$`9+EQc#)`>f}G5vcD-|EslXGT)y`5!@8&x6qNhJs15!% zYICi+{EA)7Li|vR6G?d0juTwTrKD_erH-12R0B7>^d*ioK#)lkUfXh5QzY9QA4ytXg9M4X4^devxcZGa?WyM zf`|=0DQhd0g$Nl=Gt|@1@e>K6CSB&q3F33S`Xq`ty2RrWMI-u-HzkVtAy;H2c}o%} zAutU3cYHHZgjc?-^o@rxF+C1}EqUHfQ&(r4Fx8SogBaKC7nx`5Qa8kI$)~>9F(yf_ z96Nb@O{`2;`Td%rAzno_MGs6>uAeOW`WHzlHlh)t+0O4Iiw7|1u%A?wch!O}KFK$0 ziO1mTwyiCCV_ol2Ppi%cYNP8H*|QFokJ*lTb%ZB{Y>;%yg<0UN71*_!JJc1uokwW= zQ&i<4DIzgUuA45mKzbPd>DGaeFdk}%uAWQfB;?xlL```nbz)EykEtgnyU(JZ4U`iC z_d)dY4zK#qsNmv`2I4Y(%ZnO{F3FcH@5Lxqp^XBZMHNN?9HDQW`Bn}}^-CPoNJK`v z3i9ELA!4e+7_#_VZi(WFuHw0H;m|G|C|3&>Cgi(wb}1O-yK{KW zVBGmzR6a^w82F1uBE(HZ23B`0F5c;er(WdjP_D{zm$*?Cs(h3hes0)B{<6Ni#0{IT z@==O&+b+D#2d^FkRw*HiAbF2>VOlM8dfL)kUkt6q)bo zM1-BBm*500Zz@uup^BP{ge28YTuC=1aV`YzZeZ$v$0?790dcOLSVg&DmkU_7L;7XM z#z$bs($|h#&7gqoOXSSQ2DGNXCx5Aizy*U|0@29i)aIh5x7FEMJf^t_ukB1oaCt63 zaRoh?Ei;g^`YCb5rR%dfuenG;wC)OC$yO*su~b%5!j7ji+@b^u`Lc&5w`u`BVa0cp z#99S-%4so|UqCTdfN3p6+bUL224@XW3fa~dNJ^YxOBt~Iv4wcueVq#AsS8Mu-CQ2m zQq+bUv$my3t?VK$$1h!K^uoU&7(iI8*fxhfT8Ysyid+AT(a1(-wi40e+Bsg=N~A`( z?rzD(!Ys=5+zh_d6pn0Es>sDfg}MDIa&fZo;`dXa*VWDFmb|kr&ZaHnFY5|>c)>SP zGG{sk%;^E~in<~ks{2l=sLCIuiYC$6q=oC=7&jAb#w}R|hNVCLZ>>%t^GQPl2U*ud z2oQE$5#hHSFj=p2p+k8}zPrQ|aF~Ydf;e1v+-(ip+;ZCb@P)SGeb;ZF_F^DkY$s~6 zqdm-E%PXgz?2i+`oZVjF-n8YY`*pzbs(!bFJ2th0=wzJ}9*I=*jv|rY?u?>i@@zPzS#vP!WxcA6S$wo{nAix9q&jJxS_^3(!}pz^8RijitlyBa=d~U zcN6heRvpgl25Bmt^#YE8)ai~UXLIN7Vtq*&QVHC$2dHp^tE>|}(A->3=!x#m;W0g7 z4$bAoJ%yw7Tx$ez7lPtFjf}U($T^1l5ftYWAg?IOCEVt3T#%Q!jV2J5EeM@%`5q%_ z6lWn1_QZn6;HS|x$L+^qECFxZ-k4K!`IX-2@LXQjTf~AxdwPrR4V{e{*>Xw62O#95 zxzS8t;UXeilhzKl)nv&`4f~NRxn&h)x?Gxw} z;v$88MZCB3^oZlnzGAD0TIK`?>F9tAfy1%UaZuqvV-Hpp-EuAKl7xJU##; zMf2Gl2%j>C9RtO12)})hh^V}+gkBuemorG&2xozrP_x${;X`qytRHpId$qFKRFFm( zVd-do!c*caXGp=@d2XL`DrymaaxN69Pg6Md4HgLmx9*LF*DO_)gqGjjud@R5;_V~Zw`+dC5GXn249R41~Ma_ zhlxLnS3eI0v6fFik2$xFV@E>?|R4 zqs83sMe$~s>$YJb;vG=lC_g`$^P6eW4sDF+Ar+Bz7ll)IidbJcYMw9Sdm_APuc*Rl z`-Fdh8Y)=7a4x>)n=gqhF(02FfdxBfEZDu8w~ZC=!k|uj8N!{*6JCZzKA$(g3`VF| z3$E`U+I<0``1WyoS_-SH(MMJoGiN^Pr>qYoY=ncj!2X$|{~d4jSPCHykf& zhq}X9xoSpzKoFUi$0J0vl0P3WTKijf(PVUJCEH&Y(cUT}K=6>)MHu&bU0kHIyng~t zzI1v+1c89QZ-{ZoI{gO7p3ZY-h;Yt$Q`7(z>)sSNHS(>5t_HyGCIIkT9`IHPp#MY# zSbw5G*!`M98ytziO(^I}oid-|tKb~qE&Naa=X zKqSukRTcXo$7EfRD))7Z;XZc2@gb=0Sjhk&(tqKxOCV7US9|10!F zg?#m={}<#7{!h?Z{}r0QTP`C0jX}XVBC3+>OyI7cC5^5Ce6E$^wmG5>25xMQs45Dq z?*OFEz_Gf591#-g5*ayYUnq_g@bw%~eXwgZt#dfVFy4!u<6ESpOUanDTcn(3k$%*Y zz1p@SB|Xv~TciSKN_w1C@r@!YUoYk{D_~C@<+wE>wn<6w1jwDEd8_RB7$CtKZA8NJ zv4?F($iHX>Y@N6H-U<<2r5pirKS&bbAulB0v;p5=0X2A(yRB4JMy^C?{wPmbDN@{m zi}eVVB)!FaaFqzF{-W&L%Ozd2CWiDYB)blOBDr0_I3Se_B5JQHO~fL*oI}{mklGAH zpkI=RI;#{BZ>=iTEWY(%fmzK;rhKzX#I{sJgBckkZ@R(r0B5pJs3x7$9GHy-WpX50 ztF0VvvRYJkcdbaZp+=EkSgja8V>O~=u2IHPE1Qs`%)3#Z=H})d#OXQ&;$V?;07?(1 zwM>_mjXO$Xs)0`wJtX^jVVL9?%bDJ4jfe_&&rgNW$r&ECMvceRHBd4~`TaFmLXPrj zyqdZxDN=%^J1Kz>zzluc$qK7o&}Nk?;i$7#;d*?n!Zm(vDV7(M8)+_FixAyWKD$=D zgsp%s>#$-k;0^0UTcmERQ;YwUT)Fu3!CW!i^N4Jg=S&urxXXG`rIMmCAOiYWN`|BX zgLNODa8YoxCc``1uwHTf3Vjl8=2$g*7 zRyO%2l5O2=EmITXqLgGwJKL4imW6h!+e^zusF$UT_~r%?>i*P~)gw#Ieqmuy0E0@p zBD-t>TzPmCIbrTk1X&Zvg3dZ6Wx5POckn@>BFvn#Joo+bYePxd{{K>T9c502mF`2F zi^N-Ml2{ylC_vUpMU`TCr&67CV_0ATNX2HuxJ$0PNpo?%M47EFh3=v4Z7&6YAzrw# ze81f*8P`Esq?=z#zo_BCQHLWuaHDwAQ;8!hvAeht<{OsWO=2Lv+r}?!g8lRh&)Ou? zo4E9guYpcjA4d~%pUvN`>D4^88b}l=ayB=_Y_78zl3dK4@hVZemcCP45c!o|`s^3Z z+AMlBU***PYROPa#Th>`Wsi4m7nP}y&ukaZ+AS9)$nNLL!1(Ta1JrZn6hhrt$PWq5*u4{d>d+#03)f!s^K6jeDWpm-6R(#Y`@K z2?vf|-6ujlW}|y%P`@aS9g7d~wd&`~NB3d(<7=+8A2>eep8L_?dHmvju@;#x96%VT z?g2y}zINbu2+96T&WC}!z_Be~h6AQ@z0)GbaqFPCM!0D5%}3%}xbFK7E4SzNVZ=)= z^Ry$%?b&!lxjlX#!|3{qANg2R4?iTC9UoHma~3=n5P{Z5@IutbUf{-l3`^o9pOywUNM`10yKWY(Wk8*wY4wt7;f&)hd*j+xv&5xn|%{=rNdboub9s~J1_~T=6 zu6Jttj^q3P*e)9ATV`#t8h1&#y{e;=IbGkKiMxeh$G{;4nXjD0p9# zjiThKGgy@$Jp(`UBKJQd#{Z+hm+4Ef6vDRrOK}osO`rctR1M0Kwe@f1Q-*JseI=Gw zny$JLW97+Y*zm7ddjyiY|o4ub&ft`Y!lN z&b!K(cfXt$ZG5+>WVk-h(d=soq(^HU!;5! ztm<}M;PYhv;aR^Rjy|0ynT;ZLHHquX8aC$)B+WU)qBj@Y^{ zBo+BK>p%-SbGD*9!CUrt3jk$jE64*bZ~rZ7$4zreTW-AbIJ6Q<=^V(}6sb?=ul~kJ zX7Rnh#gNLbT?Zv0PJUS*=7Ft}&pDbF;h299x*W3B_<{I>roZElaPYhxb+qIX$(*b9 z2qiPl^C;4u1@LF2A-L!W7upkqvo+6aS_1UJJDTCj+#` zAs?%d3Dk=Fs90E_R!!>cX4tnc^Z5tohf;WAp!Os})#n1W9SEk)3DO!uj~x!uig0#m zO)$E90;is|Xs=HtYJc}q9HAv}XoS`PqTL}v zYs-)OXkEBhq}H>fhu0#t51c7q_a|}8;(3pA{b)Cwd%$cnAexWv95A* ztIDdV1E&URF%OlT>9N`?baG)OtuKV($x7NF2+pobT6>;aL+efF_(BcsIczqyNq{V! z=W2;s3Up@gM6D1DON}J0MYK9gAw2}+to)9ak#kwj{8(t}HRy4#$K2#nmy{2OtNTprX=dlZ%4YpC_*zVpk_GPcb*S4!z?=Q_^p{%iTFY*tsBHCIaM19)U#8ydY~ac zRqOBEo%S#gU;zyt@XA0!T|>Ks*&otc+k@NjCtHInzpty@M)Sf~g{pMYn$R}K6P>i) z0?CbCWRkCT(Z*qF4NB9Z5@yPk(!b1Ci@uOUQ8w!{UYe$T42AbhSFPDY72eja+FCJv zl6hc%Wqz$2x^aTv>8AB@TQd17w1NN&){Fbyv~#>{IQC}#=&qUWJ$J-B!ogViP4!&I z(jFKN$lr*kA+NtbrlsQdarwK?^DdYq$3FwK_h^p7#GuGxt9k#cPIYA6bJm*cu=CDjAwK z-qw+Q!CS9U9Dn$X778Qr@rBP}c~e)o zoc2t-D%4L&X~p7)r8X=cpSnQI6}Qd}tcF+<@}Gk?F68K8+Nnwk+{jm#$i30h1^G*N zB4N+rT6fdbe+T&sc!baA*=$>Vcq4L+EPO}Eey+Mp^2WqT#}_sd`Bcg!83 z?G6-2M{?S0+G7=tj?`^W+HAIS_zS|{(UFcVuW9>-bN$O&12(?Jm4#1lYjt`2B`t#I zU($L7x@w#vo2@>NEYcE0)+kPS1LYfvFhcpG_=_SWj*->v~C7W@e^M{;VY*b@lNwZT@br+;O7(6-0qDKf-VrIYL)iDr0Ce$^6&! zNuK(H9HdW{iNGkENORbl2iqKE0Lop9_q{CQBI62`*&R0Hnr)~)(;VV++W*G@&7MK; z*;$`M5$15;Off#w{LQy|ghfYipu;CcB)I7?Q~gSpJqTKDK_yUN_^0buDnNnxBP%F9 zMc8!H%b%n$vSN34<x|OI%2|<4%p*|8{prv&}Y8~{>0bMo62G#bPq6*h=Qkp1dejn6?=9uMzSJ6E4 zL~xpiIC2vg8&aQ_4-(<#)`%eU^^hb$%?YVYADAD9JZsL1j543Aq?@UsEs4#H(0;VQ z%nz+j3(YXSB`q?a)0@(V<`R7w@*9T5;n^cBi58oq!>UDE8jO+TpCT^$c~p2`*l1c} z)-3rI+9?s9Eb=dyRl{Rwso65Tx%q5JDRV!_aE14#WoBf=%k;kaZiIuf%%u_IX}Osk z*&}L&erhL5P2yz4(JH{VIkFGJtMK=dUxzSx|t(g=v2pmq1X-ezN6EW>EkYZzd&<6AM z*m|_l+!Q-Da2TBs zOixEFxy+G{vb4?o5YO%AA;)>zZ7yPT{i2SH7Z+#;p1Mo?JyAb}#p+!~t1Jset)z zY`i(Dd@f8}$rfQ8L zlpEEajz4N~kRoE_P>{GI93>s$E#mdh%qG>V(h+lbb*UU&{U<0#MvV%1uCI{*+(&D? zi8dQQH672BPyHTRtpCltnu(P>2C`_c#~G2b*OMGNdi^scE=_Fjp&5=Tx$8E-I={PwIZRP&)5Aq>ZFH(AZLhV!QUAb2yEx;eHwPcDl)E@ zNOwdzLiA(imipzY{+C{su;{j6gVLSB=skZUQ%l!Rn&RoM|LW#kbo1wm?qc0sX{j5H zzeBGh9tf-WHr~c<;jV+<`S^X{^S&6p`cKJQy03B98b6Yk~SH^X}6%=(Jg; zL3^5IzTTi-X^(i%7al;8;(saHPYo*jER=Y8>hH07fo%wNEO+4?Wy&jqGhPiH&)=kLy6V`2v(KVuYNeT+G zuNv^KW|-HSRDsbh*|ZYPG#fR2Cc@KFzMpJqfiGGbXD*9~=B-&G#5~rtHEeTuvqrGZ z&oq0ER-2oe#nKw{XtSnrW@!F2Y-o$-ZD5V(G(Sd{%$_Y$V2vlVXbfw7q{RSOav=R>hPSGSXQNglBL8-CfL0X;paC2lZBJ@7~ou#jR>*Tv}V zeO-4_zB#;GIQn2>w}zPWKj~JX#A2y`LB3Gr?EBq9p%vM_J@!(VM-_Cb2{BUTzIg7X zipwOh6RKU*KTFt-!R(A^pnH2idjz zm5>7@t^doa`hotkdWiwAp~~9>y1+rp8(;)nlU*&+M4FlZR%x^03nSg4(Tq&HR4~o$ z0DSgB6WL#142U($yx7$(V*qLC00Af%pZ?-Rns1hT>B5sy%pKSS?Kd4b)ZN(yEnJ83 z*k~RZm@GcXoZBnP{Ci-oRMFg*XGs-(Zcr)I8#8DmT(Db%QfOgz%;0Jiy-4bUB-{}J z%d3z%!t_OEpY&?YZz}z@@^M)RS z0qOI~(|9g=r4F87ywWDZ3Jt=YVUA#@4tLxUq-UAchCPMJG;ctpIeJ)S_pd$pwZi;y z*vmlG;nhK~F0NN|Fk!v<+6>qj-{B2?R!BO{o5Nzve#2Y9;;bD$0Z^4+AA_lE&Ff1l zsMsP%fRhw4!R`!_?@YTh2H~K7N-8UujCYjMSD8ac)P}8EF`{%GD;|k;#OUgmBrr_3 zXvU1{{uSy7cmL9ibph%6+U&<8ZV_zTFC(jZ6sFdww$QoEQ9YC%-b9Mc`lEYeKrR?9 z9np)UN5S+x`{wKa(hP}lqxsF7A40K4jTwY`-;LSpLA&Fv^5WV!rIOWO2sU3C?q`;G z+cW$%V+!U-&A5(8@>2FoZx14`&LRs14`4ShnfdP=#^_u5?(otZEQK(p1f)C47!KW& zhX3nEv(Zd_ZwPF{%J-UvZ<5f)KQvtF-c~fS$$a=;d9muenVga49RR3oM4-9^*l3Q< zs7DjcZ5itVHl3ILSap3~_JGWe1kZZ=*n8eeo`IKDLRQ*0E)Mg>SL3QjthaR0$Kf}@ zX%BSxV*ZD}H9i@|4aZlDw0x{m%Ev13vc`_D=61JB8FohsysQJ`55ZZ_m{1ANjT2Jw z{C>j97?0sDF);%%FbRit*fAi=It2~^vLv? zxt|`JhiCqGSNWfrQLzuDJyFiS$B~}kcBCy|9Dcdi)y^M_sLO~o{*-ThSN3bO9toPx zv`ZL}&gQv^av9|0+&Zw#nmHWLk!C-dll_(1OwgX}`1x%J3OSH_!bTkCa#2={fR!0J zTTGK(64-@=d1!gGKSYo982!4LxZo1~WIkRnflis33sd55SOdBo%%g)GniL3L4!eHQ zJiKr)X1L0W`qTRCnTu9wbiu5-v=yH3EUkzZ*DkH>x9V#t`?ja9M9 z_W$xE@%!)W_+?H)orYNzQGZaDGr;XC!quCbbqqW^2P&SIE|2y9WGoQb0=w~YLqv00 zGYX*J%>3n5L2>Ac=x{Y(28P)jHYh0>+8fZ*dMgIPcxA2FAL`}@OkfE`|CQ$?Xwl}l zl^F=r#H!ACc3IT{@!!f-EfK!`vT6vP-B-T^jXkis6G}tY^ecDBYCqg&?An%t{;A|Z z-&kTQj|m#%Wjg71&3S8naxZ6)lsHseE@w<%>%?riWo;>-Jhj%KyQaRb75&b8TZ-iD zx7U>;+H0;@-;(Z|Kd+xx+1+D?U9QZyQOK4In^VJ|T!HhhukhoN;_0~iQoU3W;z_XY zS(OPi3dB|Oj+)ajc>LuE3et~QX+w7};b6VQKsT*7p>}Z&*;~uZu^UT=TyVohq$BHs zxqaiLC(EC`~EpqBp0q?TyF ztI|iT-&kut<~v&|(>-(jmiCa>A6uHz@8;7VRizWz=^w>Qflb=lf*$azB}HR1Xj?nl zt3*K$%n!EpMxXt*tu01NUzt=w^MMxqSZ&`r52^paC>(=z+G;mS<*nPlZ^q0@Xs#Gfy3e zK~p~+I1cFHM**FE>tjtryT2VOOJA9>hh+rO{_q8HK9ggcQnK0Rlg7xO`bmqj7i8}$ z<*jWAK|dmiQ8_hiN-PL>fB)nukeYJjBl^)ie?)rXkB(&0_vYK5I^mNp`Lu$#o@vfn zRNDOI(~0ySiw1Mc(XRBfY5&X_ktZ8*!licl$|YQwQT=DL-e<3Y=nbDeRisPp))0v* zm0m~K0z)yV;uPVM2G)sVZlsA zM(z|@aKr3R#A=DQyemt{ZvabLKX zRv*y1X_^K4*`qf=YlFwJ^hb8L$AbgtG3VInGup#be6WJQhuiv6mE^0k#s6X>Wl`WN zPV=KE-s(%w(?=ZWM@jT4SM;Nq-jwUSAC>bHnPYc_QWv6ee0w`J=6$6o(6vmbn*JG? zvhToPmfbVjyQ5pdx`Xi0C#Yhi5jo>wrHAViJ=wa<*8i0qBeP?QWCzAbWwA|6wlzTm z?@nlv(G_T1onvXH9rU@bBvLquv19pu61FrZ^0-peFXJC2b743T1Hs6QQ_Tt^$A+}- zDa@BCndi;PRPmY0_tXJI0h|Yq70+AHvc4xj$6dci0m^)pWq|^b7c^5y(gYTs3i7gK zo?I;O5(McYM{;4HP#?#89P~srZDf{|l}_iwG$qpTeRm;qZu~NVbp4=2O)uEqJ^Vc*Y2WV1zin zI-Q^y{8M#uMp@ICU%@mcXQmmPRD*`oGM-(7D&e)i2DJ{byof+yxyYRe@=-HHifESXqkm{+Vj2L18{A4P;-~5WFY~)~s5&j?Ep;fyZ;1rg zm-6Rz$dUR#>bkK8A#Q_b*-lR6M%{Gjedx?(QbGM z-jhoGz*byc8tAt`QL&6C*Ci+9x4te_j8S>XzQzL@ZfK*@hZr|8?0xlR{7YR*3~^&7 zOAxN8dUTS!X#P{58qyXn|1@N~n16U0+uK=uwgFY3EZ5%+=mnzXJfIQv#{8Aj2%Fa{ zcw1vi#_Mcj>Op&4SoRMT=%ac~Xe3?WkD5^3@O6?zOwuy?lMlOonjbZxL|X5{W|Tp6 zgr9Fl-Do3kYevo{DHTObL!^V&qRJqy2DT3$Zs`=*f#OE%_$B9-*1kt+|1=$P>y%CfANPo=+eD> zzXgp4$XhMxYkzliyq9lWrz9TTifYqV-rS0w#fw@~6m8>})>O)GizEXwZq%AO(oUY) znifZRB5PsH(TsbmCGwrzs0}qMVL6V|>_mJgMvLOhT_}=WZKx4#=lgBY2iv(;TlIR~ zdTq5{H?3FYb`*ml(7YYh2V`bDNO1)pZl`+Uhj!5YJ^WOAszDq0#rBj&J9u?_aQhK| z)t+Vm^2H969A6-3l3}8Bq2K`7peP%7c?YWEw?lEXl+Sgb(PcdW`RoPY!YFHGEtK52 zB#150n72r#_VVzKX!HwS*^#Q0y5ez;WVe&PM}kUU$x80!TOFYyUZ-e6Cz@1{s@R#H zqy0RgGZ@>?M?2H2V6)CM7~=*PbqIIIqJ|Cs zbGAsrcJh=iRGMz^rYgiQd#0 z>fNR{t#>mQ@Tru83Ls}F^x{MyxHC|L74#6cK4Hx5X+8{A_U4T6vk4Fke?uGO#7&sekI z*{{7hCjRR4%%8Hnl#8MM4Cr2PVns!RGCh2 z;u{!9U%6g+17plbjU;p9HYcwiN#)RF-bi{6Y&$5AOli+J z)Qo+?Q!YEq76=(5N|RGn-7(}0xuWDJq$5cB6@GaP)rF^~uHzGF zEzxx~tHnHNR)Y0hW9C42xAVw3G?32n z#W|Fka^-)ILdkF7N1~7!^5yPxq4L{#;ap{ZzP4VGrb@xoMDidL9dyQAx2+8CF;#Em zn-uM*VvfLLt}LBu_;aC zz+EpBjwneN9yR3?C9ca$XfkE|tstx(1LkB+_vFBbL7g0Uzup|+R8Fn_kGqzF0k%x{ zN{MXMg7DO_+H@e>3zVhEP+5^Rq+EGiEH z@s+g{Co;$JUu$U#lAG31EqcUP)=_lWBM)*=We1gyWNC$-w224Av-rwT1Sfpwa4M6Shp~0N`~+z+$?Dj9PGbhwFrpS8A|YIeCsBP z?phdwlCG2&WbDb85>%+%GPclKEx4tkvaBX$yC8xSHd9<>s}rnJ3yt;60eXuUIZH|D zjvdDXHdDt~ z+o-xM+`Nq{h`+{i>+KZJzip$El`Oq0fx`pA=y)p?fNh>2Zwh`eQoT*B;3#mCa=TQ;)#uU|zM;Eth>Bc&lW0ktQOkiox4Jq>x8+ir; zej^8^`ulDIaV{tZ&R8lIANb%-svGMeBF`d1HJpbX!AGp`q7M+it=UEWWrP#p0_6|6 ziVL!O$jx0eJy@*{!1nvX5uV7GEda5blKoUKLb8>1!{7ghc{ddOAz#={Z^f%3`0Cz< zRopJA{)dO{LFhG^r|iK7Sf+h@zvWD4T})#<&gfOqMA$==%H+eHK77`GXVi2P&zRk^X@@ZyglDgAFBKOcoB57J|+D zpRg!3G%wx<1+Z}jii#mdu>|JRl0FahR-1_V;X!%m%Y|lp=mRyy(4f=^^uj`TURabA zgGH$k<%L}UZFJ*}Q&KNV1d5HypfBU|f66r~c6TiCPJE~UjL zS||pK(n12 zRV#hIn-dGGl|Mm;-gtBj1&EcuIz_F^dQ{co1d`Af6j4Ov>+`wUX>uf}G3XE&p~bC$ zK9@63V|{4>e{hx-CV%G;>QeFvK!~-wE>zK$l zFHvgHBGs}$+^H|*8kd3aLvC>yvC3lJbs6EzL~i&UO`s25hrgq#f|hdot0+9j2d>h) zw1l7jo?7`ow*1h6+T^gY5mcyRZxA@DxOjvwe5gexO{KyY=CSF4ok z!4HUd0Mq;@l{@+;YKGMQpHz(>t;|{1;jLAalYF=ub!&u&t^GM?50 z96k>0cBbnaRNv&=oj5%1Yxp~YVLQv*qN=pZ_3SN($IFYqw=vVN=fpcy zp@Kqz(8yPET+jr=N&|*8qJm4-4_HX76zmX%wgVh7$K9*@|L5j84mT%X$bNSz~+_2*}3d5?- z(cfq=5LCa1U}qvvy+@7Xw@G;<`#9`%#8&JG$>7}wwg-~R=4V2vhwp(?okHgp9*)AS@pW1n|W#A~_k-7NjeR>&vQS}eh-NrrtfE4%e$A6Ghw{%7| zh@<(4`EUJ!X?Gn5JU~C+;M51?C~5T`c5G!NY)|$DO@kj`Bpl?M53tO4kmDXAw%f(& z59z$0g|GxSzKOhbyzr6If-fHZU$vm>W2pt)`!VIxYA*LDZKgGR_D@QukGb(*7-^gM zz+d3zV=ntQT3F2^|E9(z)<{WU`A?+rtiLItt~_?@;|Lg{Z*mtvm^j$wuWwW$!*+0l z69Xhg=qi#!DI|_kF8L4kb|&&G|4_$h&k51%ho#Cmjp?5#m2sW}gcy`~%%aA-#}%j}fR#ZddhIyBritEklTT@) z2Hlx&7jMuV9%&bK=@xIXi)a)bwTmRW;rhWYaM<8DSN9c7U>ipGiUkPngZxAv+UpwP zC;W)=c!aSofCk}6*OA$8#C5@I>+b6qMS5K$iB z{6J9|uizl{svjgOVKK)QEE0Kqkf?@|>>%+XR&8RCm9SOG9hWY!=71Q&F2f~9h$9sE z_jBi95f$ngI+;?sXmnJtNV5=b1$~1;M18ELtPBwg%6wr-34In!#-Di#+!|qs2zTR5 ztPcix-%v3C6%L0&K0EnwsCcuKw_ZPIkVr$cj{feE9E|hpHfIQ`%+*C{Ec@-!#T%gt z7MCZce_>HmFHG#A&-k}6Q8UzYUR+vKU;Q(#T~gG;A{=(Sr$NkejHgo^8ZF+#Yi2Zv%;Q!uVr7}rO5iw=05oOXmtKr-&w(2w z%(x-numhp7A{EG5#)@`yi08!u=V87TD>_pS8*ySJUamON1!Y0;Vg$-E<3-y5b%DlV z)6YmMB7#H(Z7Zd!RlqZRFJ8PF@r~*r6}1cF>_yquw>&yQl#ee`a?L7n6KZzunZ#cw zh#2wkTfUPZ5*$TU^R|qP|ff0Q6`PR49RU3r4po$9ZNFgYkq<9h`q5metqT{Sp zmj^n;4El-hIYb4#lAMAQJ%-8V3@kW@Bhn09M$(tLzH|y4Rk?(%P?*8X{C8;#rFq=8 zjMx|PogCuEWM8Ku2JDjl9mkc0Z+3}&%83+!S1l)+(^vdPIgGV={Bt=`MeM%7vE@ZV z_-R>NnJKjdW7N(skZ1PXmf^Asng(ar?Hh`%^nVS^(Gp%smGnw*Spal)rtBDj&OcO8TgkHJe zGQ2)b#PRg%K!ziy%OYa<6jqJAN6pU%OD)B%4E>Vpg&HuukbB9R;woL`-)oAtNEx+6 zbjDS8Te&!6iijL>%Qbh-0>n(hu<~<}?}5xw`I*)tOriYih4N9?3qKn%83;j+2eX9} z`TDhr?#6a2AQX6k@;%j18KwGFrrL$*-Ky?6Ou>m+57zT4$Et=>Z~K|>1~4J{r5ir_ z_wMG_sXT9q7dB7jqtqzjg$^*0aGu922vvY$9OwR?KPpV!>>$N6iVE=TR(Vzl zTJWODSNSM4p7OS7b)L7x3o9?#fS2HO95c=*p$kp`JHtSib_P|HdT_GvRc1ZuhRiYjoSi0=$TptG5u}n^3*e=%eCGwYQNOm2)j-7dA@{*@T z#ny@leRjcgr-+teqk9FAc zYdqacA{c*4MJ2=5l86V=8X9M?xtrZkE9=_c`)GcLY;aCA^ z1)$E7ZZ}tQMY3f>@s{^W6xdc*je>9mqVfxb34^WZ*EeQzqq-uVM>ZDg zNN`6()Z^-ga8|;$D+2U7!j9K8%MG#x2FOgfY`BCee|b)%BvcoJeX=BWUTTPx5bM4O z0m6a1B0Saw*Y*~dYl6AyHur5Jy5r?)0>!!Iy4D2lJ56^XiX(S4*Nr3ZlEWWs((kkLPFZQAzIK0*<+g+vE9O3(Un6xnfI9>v#FJmZG(Fns^9OnlMul(28xI$R*T}4L1GNw>!_9DoI!B>R&w}Y(EzH^X|U+xzRK<; z4~q-Fo~!J9aIk0s#TMyGu^Xj})UYD5fG@j)C#6GS7xKw;F%XJgbBGw>GgApjULNIx zLqs=}Mhz7`pxmzxg@-qbza9!c7IN$>aO-FB+E*~t*Ynv|Fm5(*sbPqIH@dnH6AdZc zbNjNcWf39!jlA|%@n%G^0=X5pk!!vN6fK{X3UA1sd93gs&dE=E6I(Gzy=vv-6LM((A z-SG`*^hVBnL)7q@r#Q~ZK-H6Ph)RXiB}a;LI4pO4q`<{G_8%oiBb7Nyd;m(KMnkek zT+fUaB?-ANy$QWp%`@H<>yb(wBdUaZSE$yh0lx`Xxq0*$EDNpTuf~WbWmhTfk}E>$ zmjN$4^G#=fJY*N_#6y*E!?(l(7^6e)g1&Zdix3df^KJ1avd+E@UZ(S~cN8HT-Vss6 zv!{yyKK3p~1oMyY0_+<1eNTZsd{2SZ&Jb8D&sX?Dqp?sEj)N8kt|cd6%V0z%YUJ~c zOjTpjSXqM)kA;am@Aq-a_7AQ^h<8W9~FX^Qmd#FscF2 z;YB;U5ZWWt724i26xy*ffVLR)ltR!mW-91%vlMijS>iEW;TE&8fOf?-cDCq%;~=iQ zIfAsnzZDCy4u}3FUz~?wz-!|^!0O)L9M3Z4dXB{m5pYI`)@0YoE0HAlTPyO4@HvS z)KiOhx)Wtc1i!chL+LnwumoCioG&ba1{~+`rO3R^&6bK@@de>9C^Xi| zYR0u=vhq@1zD$JU>mQuARK!Gi?$6`+c?E5OBUQ`A?Vk%=W3veNJzf;P@-k?#RlN{? zsEix`s#8Vb6^=rAPpmZI{}15a=LJ|(3)m`X_L>DCrDO{1!^G(D0EMM;gdM%HRS7e-97j~skc%Y`6U!++B;YfpS@fp$nMy(T*TD(c86@v z8jx6K&cP0@L-)3N+gZ3(JBDPsK7IZQEN>s@xD~)QX)MzUbk=e1jHEPIR^gNtqPmwW z%mJ2GfvXcMM0`>Ke#Mpay`@NwoRAVd!T97;C7`OlQnk}&rPWT2m8zYwD@FBc9?tRg z0*iDn=hiUENkV>#7$hG{^3 z){8WdF>Jkv_Q{p)^Xze=G;dz7@Elt&D)uSh6SDPK6U#bS!%i+TSI}-dQ(;12KG1z? zDXsu|f>I){R3vo1NJR~4Y&vf!ZiouXGX7QOZG|_Z%x#b|3K}i24EHSCQkX<(;cnx6 zlb6H-^LX~(B>oTRYek_4EB?VzRzxA>QgtocJK?lc=_33;z~^f63zJfyLpzGEL#55~Hfw#=lUr>7wy@idc)w^D3*#od>)mnP{zxQZik|$D=+tA4+h|#~QCb|24RlCSi=tIP@>)C4mMNGCFxuSn z5AF|Og&oA*#4l9lbag^|WeZt63 zcHe#s#YZc+_fD}A)1|yvUnq9szPp534g2gB9o|8U+o7a-}4Ix5Eahh83zzLTxQ3|qNd|3kH6Ey5G{k{ zLTwBJOe6CrId)6x^LWI^Vhw=f4q`3pvg`GOB8(8%^TZr@v&<)=v;@}|IUBhw9l@f<&ph>06}@czR7EerN8z>Qaf73xto!p3VMRY5!J`1- z{(eLl4&3Ni8r*giZb}|svg!tXh9Ei5)%`QL#@;Wq#W-R-Uufe+xhUDiCvvefe1sbx zL;KtLrDKp1PM048`MdepF$iQg|8@+MXCA+Q978{k?;RJH-JgWu#V17d8voDVgy4E7 z5uNPf(I*j({pnhGQiKv>we_EiWmqF?eF`7f{D_UyqJGp)OZ*u5&M0XB9M0H4?DWq$ zEz-i&kpy%|Zs~MKEIyO=Ctp2{;k}cC^AM-(a+S?P^osMi5PO`f!xxCTpcDUjAQHIg z8E6E%=AVHMpxfimi6(gUIVZ+gsmg5sN-V+6xD{WC&v9V$wXa3#kjau1{TKO^>#)ne z7E2OmDDvX0Txl|c)xLifTVA~W3->%PYKPyjI54i4l4fdaT)KY4wemc6p3u~-3*uqG zdAZqTBtez#d?T6$+*ip+D;e(U^et%fE>UbPDUpC-EK#h!h?PCi*y6I-OEX;b9eBqQ zN#%TT5{msWUwjm&J{gBEBcV=Cd8xKjZ^*X7^m(qsR|Kv-A9szoE;a}Zi=~nJNWaP(9$2d_bsKR<8LV~&A%mPqTgP zyy!VZJH-kB;4|0u9)q^zhZ5@)x!PKRG#!l`b-gfh>!yOYj@*2a5MUm=Zr-!!>Azze z@eJqujs=vdeEoN^6Vut!`{D&;ia)^Y9&Y@Hh^*^gEObN^d~no*Pg3!|yI-yCqJrL? z#MA!}!?5J=_z$_{!0`{T=X!=aJwQya)NdHfLXU^yB0fa4G$Pj3;gR^0=pMKIQ^b{5 zM@vBP`FMH8wdg?;^q^#@q{ZCQFIn_5+8h7OAPd$>%v`0hpz3wYUVjzYZkuR;#XQK^n-PmvT~S~1CFgv zu5h)I+Q9<;YlLg%W8KGbjJ)^McS&rl=&$Inboiquwt zGHjo8V~)~lTC-O(j*Zgl<9C-Rttrkap(m`F9aF~5Xl+xGR8OuOt95o~`Ke`7hu{No znq2tq7q4~Vi?Qfn_wVKbnqDd&;jrZs6#3w+lzLq+g;|z%R7ucc+zggo;ODJZ_(R81 z6gdi7y0K>3%7iCr!ZgfciHXpKJRX&(^??$cOVnEMpQW{N(6fv(_!#szT)r$yzHv<| ztNCk4&Pvg$;H1Za6iqHbUP;kj#7T;ar8Nip*3_l~U`|b~4ghj%YGp7weyypc3XV_G zy23dao}>+g9-mKwrhUhIN@>+$E`KhiHynfaJ8oZBb8<|o777!clB)G8sEnfka-UCbNN(hXsaiHx zBmvzEuMKszx>%U}zOE(&m#+ldpw5Yu<#(%T9WcqAtft)t*n#R=e{NerTZrF3RM2V# zD>ftxw}t)#m#e7taC){CXJgSvHuoo%4mMh`LIrKM=G3@|~BYxNz za@fVK(zF5KePfzdLpmjCT2J>juHC@O3;4CmUfam+4DAX=detV{KAbK7xrx?^9;|)3 zspgB1@-%3zrD7ZCjn*2zl=Xm*x0Oj2?X)-3W=J}c@s$tj7>)dd=E?s+i}aatODxbj zhl61S%cSQ?*rHiyd2c)IDD2qS_FDZX+ObpZp^4LZWCso3;Nk5Zv~FIvBu6d6U?~QZ zM0`i>0yb=Z@2G9_Zc}6BMA9Qa-o4Saw-ZJNhR~!JFm_5ltEJ)hPxAK&>vyXc}xO!RNHo(A`Bd0VC|Fzti^Kc{eRKF7?H9=su=Atskby)m)=L6!9W= z?5|D79Coq4Hnq4WzcE0o3QkrI(5_lS?`O$dz6wO$6sq>oi!k)(_~#e3HvIHU+I8H$ zE;CRo9j$IHJF#2u`Gys?LLzWWw$DKA#bi~ee<^hg^AM)Ih-7@m0Sl$6#%5u;?|EUmLAGQ?l1k-S(W# zX1jpD5d8HT>N-1G`*;wKyP}m5^M>%cD>z1xH-xWW(JK1Dt+18hU#@6nxxrN}gfIVr zsnGw57NwyoCtcCH1bYykCY$Xk&i-C2ADQrqZfgyIHu!6cKl!^I&&t>8@ZImVVO(Rb z7Qub4YArL$4byE^QMwj?QTX$uHy2B9FP3%{OYbk1K3XjOInpKZ=fQu-D$np{d{L~z zSH;p7i>0p?OaD|XeWO_VPO!+}_N6VYB}z*zZK$=i{J%5zy_ZDw_xt^QC#>Dm-tISirRK8{VSkIkoKRe65 zXV=-sH`woN8@tQqTOTNo6!%5eH@bG~(YecJB}e&#ee?xu+ipCYz}j5pTa=|NlYPZ< z*eWXzp~%hZ8pognBQTC_&xRu|B>gjU-?|?m}~qu zew}Yso+%sHZ0j5=S?5`oTNhfFSu?FmtxK$nty$KM)^*nP)?&La`R=r4F~-MemN?!* zT-vB(Q&LhaJV`v%ie^oHE#g--jp=-Z?wzcU8Wzn5>7E+Xc(U%5tfmTZZvhi0E)|R& z*63=o(1*$5KwZ;wc_FyL(M&)NRntUM@pGWY)bWPu7Q|AG?rtaOZ*N5{cFi(aJvvSx zH{#qE@k!&1gYJoeCT3r6%`J{cI4~RD9?c`C3s8{lmS71KM58`bbJHV|aUZFN~|+Z$MggeZp{^;4_3x zq37RZ#5K-8 zl9AEezfzD(^E~7D1rMi!O!ohX%{7z~KcJ_dN<{PYAB|IWL)kndB%mpqZ1f5k$L1SX z0tT>&M$15rEikD|2^_)}8u@`;ODqyJ`4sckJoQ}9WLz_iOU1*C;X$vnX~uz|WVXPl z96XRMHs%K>u_eaO!QI0%B?CdlC=Hj-G#|}dzdv>_1hUjl;&OIBAIYRP}tmxfRH z0xHb^W%QnDwk@rj8dYU8
D2HF= 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 D`gzg? delta 26345 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�OoY|vd7hX}rZSiLA6$5ZV&WoFQ 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 VXYClfsRX}o@jEw$Kb~&w{9mk7Fem^3 diff --git a/wasm_for_tests/vp_infinite_guest_gas.wasm b/wasm_for_tests/vp_infinite_guest_gas.wasm index 9a3d9c49217da47e84107e611c1c8871606bffab..cc5d961568e01053f64bcc1ca439e73f6382d62d 100755 GIT binary patch delta 25868 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� z93l1+j&K#UDjYs@C8uzHYc1UGfTSuw-^+n*K*Bz*)JFRN_Qaw#+FPO4H@JhOM)8+B zW*SGf#dr?!t8KNLh^Dn}r*$l80Y$-KPLq>j4|7CG9f~0?_L0{NA7qSeX{VJAaG^tB zB#m#j(|$sV*YOv%-@%_kUxj!+Bju0wT1v!8H}l##6z*0Ie@XP{4%%W6ozzh)UG0CT z#RSQ;m>>v~+?FkoI>{*=m3Z#%sBJ|?_SjBZZQQnY!p?AvA9m7ag}X?$3}AbJ#e`)q zVV1`8!I!j8uy$I%ti6l%u>m)+E0vQvYiaS{OKRoUBCcPRs_LF4t?rMV^P$ezF^_Rj z7p;o;9&bE!(aMHdiBIvCM7q+RKI!6-$#@8h12Va`i&h@~Z(bLz5^f={K=&=-S6+cI z&gapupl&{|c}1&%+fT3jA2KpTv12Xa z^{;AoL!J{+-qb^jYwu=D;bf^8qu7hk!4e_q3)Cj2@0R>jvxgT*G7-bK2h|kI<>x-+ zt9e2An%?X&T)B-F!S#A-A0te#zNfYkx52Mz^B|`ouWO$al>?lqByx(6t|o|Az7D&0 zqI2XMT4j7%$+@PNhVQ8C=DoeO??aDR0%vT1)q{_{>$7>@n_6klr%T+)R9UXHsdI0F zS|0ioL{`YGtANJE^Fz{?Y z%0%knU9pT`a?21peI5tDbxQ_PJ;0 zbI+Tfd*1!r^Fcfp#h)Ahc2z&}S;5ig8k~IY`TTRwSDt(R<+egA{E-+R~IulL)7`u3@7f4k3cdwqLTqodKZ yb!W^|)MvU^542{1@R%0GX~(p1XYI?{&&7ftyrX*+c~|#}#b1SYxx#&|$^Qq7n26~B delta 26035 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

3Z=Mahn436}Se#FLlFI zJnNd$O^g$Pn-#b$z?Hg-!B5Zi1d7|Sh^L6%c73Tr!0(?Gq`r^JKyI&AWdQp16UO83J0dYtR^5^<%otuapZDHI0Yle1Zk z0yziS9A0js{J zudAvrnSzyK*}X$bbvh2(zymqXeR>xqYnnrng(FXH9v~b^R^Q%=to6N%^oor@3r+PZ zC6e%tNNAu&0Oq`;3_&3f97WCCsd{v)H-ux%C+>4b5^ z0N0Lk>!Q0Mn|z-c=ZY7l!5hftZE2WZ*?ch#mJ>_%yP|9zF9n54=(@LJK9W?P5w-dQ zO;)KI(Z27hwkDwww6*5lB9h*&*pw`&@#WAy!XG#>eZ)XauQ7eFww>h*eMD0{Rq3l1 z%dLH-m7V&Y=_Rcx!5@BLMk{k^s5JeaBng7ai)k+=^(KeyN%sLk69+ zc}#}q&JZ2ab@)j_E@Gn1F-fUt9|?qfJP-Scq%E)$d`+X zaoa+aTuL)pLA#yc^mUYTMCx1A0_oe>F?t?Cci(x=NV}t~BT3&fb+CxU;v6+tG>ukB z@|2;cW@!Y=c#mSRh%2eqTvev5Ta;07PWI@~3;657qFJ2`*{M8|roO9UJ)oJK$fV+( zMmb`1wVd1WYD>7D&!s;`^tVCYqPfGzqJqP697{NYym7iwnB+c^7%J1IUw$m+6mzA^ zl+IKg+7sb`$UGQ6EYTiHBj0?I+kod}a_=Ps5-P8^&f_aUtE{}tCHxP{VcnZiNRHhm~6WynB4Zc&5}6PY-(0slXmR}B*pHg$00)J0^l zyVikUuV11-_8TrbbHsEJ#(jokiJr$N_;^`yR9D$D>s%Cz7WqL&cLlCXM6#V8AoBh zP+n~9F=7Iqei);?*vn&-7u#wqe1(nt(O6N|9iWFj5umRChC4tH!+~lYS*t(BVqu)k zaha$)n_Ffg5Sz_rCe(f_Z^}dlZ7W~Qgh;otbDa3v8@9(fV!dJeFXP}XWwHNwkhYbL z@mMXkao6#1qOS8gZzAIIipeXNWQ-4ogo--z2NcUEmWl#8;(GDDSDH1yxBSb(S;LXMeoDiTNv0 zD`K<7w{gC-G{?Cm)AY@*Q(qy2hJGu}5_bYu$_-&75vC+HM>GliNj*j(c{DgjboS)8 zP%~Va^D;8Ob$T|^1vk0&*NB^L@!qeocwFPlUt>`|!Ncaj4Zp^#=7>>vsy`PReT`?# z6}u2X_x?ugM!;9=Td}NUfixP{2dwhTBi1)AUXXNzq2q_&igZD@T|*X#sy15VTDC+i z6qsDEY?%M!E@W}P;r3&sr61wz9c^r^ zsv~>-=$h;FM)3_b_MBa|v`i|*vY#Z;`99VWW{995UcR}NFV#lhEU!{5<&{#0%OlO( zH;Gi|QMdf(C*d%&{O!)9T5~%_Kf%$PG5&|S-e%Dw(Q~FxDWF@*tF8G`LCfb;+cAX? zY!+Rh>y@@(tKk-}+oE*+=oXP}SCdaPlKpW^wU$jOtd`&)bm!qP4CUc4D=_-q3+v zSg7yvjKZ)95D?RJA=TjW~!cQW(x_ilw zE_z513%+$oP<^WmX<0I~_jSuPX~|c6Y9;^eEJr_NhK++b$gzNL9fXc$xhnq*8DlMI zeF&2Hk_R4w04MUyLn2O+{M{ju8mNw|8b0=^JbMz&3zWWwUI^BCs7cj$-!CF8!rISP zUWVJ%aGx0UJ1mx1lJIT>-aITeJ{HdH0`xnV9Y-(?7I2*-qEbCKyR{)%BgckM2#7{n zBl%56l2Z1;amsX?#VME`lI8?h9#B-D8sOeXFj*FG<`MV=$Bu}hl8a?WMU-Eylc6wJJkQG$FReKw54+%AH9?K8{OIHpjdbNJr@SD4 zcS}6zwD=k|Q%{QyJgE?BW&N&J^dpr45KEzujL0sFePd7-)$y<$<;bCb#gcOML(BE`v1dhdUU5+j zqwQSl5)QQO;1icnvcpyHGR!^gbY=X3-7h=qwzk3S^VIf|fl&8gxlT4yNcTqHz`NCiB!vyW&Di6fx zEFK||xc33pw4eCo1JUhqRU9~#Rpmjq)!hD}$ir!=B@cv?lOJLA+|RE+!a1=0{N*F~ zd^=q`9wGh6C$5Rc*jP|!qHEq1?a=73o3O(>dHzkY6WD`pi5^T>VL12m^sC~j5XFb& z;i>=+$FGW)y%c02P%k1WM%ZgmY2;ZE*(4a?MK9&t^)9R823@sYWKsb4r9;}sxOZ9EAwi>rrL$p(H zc%XxadRt~Pl=6LNEv=gyv1wNC2 zQG3AIrL^|AT`Yy~7Chw2iTK#^NgkG{4MHGvGf``km@bVHI6^)Ixd!Pd;1X$Um!BEZ zPjdIt8onyUGfQiqdA|-6;=rEwWm&$Gt2nd-Z-M3r_7=SA(8l2K!g+`GbQ#Y#fn-X; zT~UsgOi?%jWg0{u#*LlYMmVe@NgE~(59d>o8SOt9qQA;$a)+!+veq3VH9lFJRAPY~czGhhj(3F@aFw!J%TVj9xo&x_7|za{ zIQ^1cRtv$a9`nm;vmlg~<+PT#O)RI$P0vN;w2n}&2j#R55pKsB=ieO0^-C7tub0=R zqWfFrHB+Q#aAt~DzO?c&U}~}1YfJKX_({8un{oLMS!W^tl%i!K@zK44Hl|#0<6$j; z^20jvRar%*%$4ADS4Ay4K*fmmzcrp9vkuKFYKgotPW#5KI6R`H*2t|f{JZu0vA#6% zS1)SV1*iAHS)(qMwFtbr*SE6Pnm1I|&Lb$Fm#USCnJ(7}XA$=eK1?L?Y^PJTxBOM1 zp2KacX!w9F_o|}FwKBhowhz^_s%lYQjKx*8=6E~(@2c7Wo1D95qM1GN~;XxSo10E1z#1e^TTKG zhV|^HG#R^Ge@c5D4u9ubS~X1dk+rlIGRCc?HGz_Z*VbnF-ju!*H>jmW18q-jEfK-! z<=R@+D8;wT(gmc5by9co%hXy;!m!oG%p5x~Wl*m}?n7k8%%^r;VkuI!aXgFob9Ski6x4{P3p2c4oT3c-CT{N_o38N&cq^}^zz)u+{651>Pi=((* zW33YeGpDhZ61H24Jt;w@w&b~!-F&>UR@t4_N~4`D|&(V8N|@JbU%c^`8VRNu#! zo4|nV;qa#5YY#VUs@2Br!=~EIe@$zZZ>BZI@|)I7s~f*Zxyc~zWl3Q-N0dSG52sP~ z^2TQ1Y&V~7hQ_C}e{-z>oE0|LD&l5up(UV?loqfV`*>puZ7gnWT54wz)>LbyJ^O+u zG%t48#1Z8Tb(D5Ss+3dlLn-cKD3(|qC5_u7teT#f&I0478pfC<6q%Qe^1t0P>agVNNGI%pf@Ir5HL9o+hN)Sl%oZ)p|z zP)DtQq?<6D-H@!>EmpfckC7S2L!Q?@!A!dMy!IYuOWF(Cd*Zv{eDnovbmCaauly>+ zzkWBJ(>q}){Fyg)(yEEE>3pq|Rw2SV0hMTJq5J$(YGaK1W&rITo?&&XVh55=P(VkSdUbJ@e8I-AGqQnsWG! zF4{++>R1;nQVY5FE7}e3=Puo9$$h$Nr7C&$ri<%fyb&dJP&P>VY)PM8-_9$$YECgd zgHN}DA^D@L_A#RS-rcnCa7%hsn+cWM^s4rW6Kf{;nC6!hA~#U+Gs_P=g~)HoD zcCTp%X@V=MyH=F~4@ec4vx4uxsy)TyU)PSq$$Ynmwk=E*L08tmoe6|uPG{o{t(^B0 zC7zR0?r(4K=Wjq*|NG<=A9(}TsesG9scqug9ko!t`6i6l1sny?>SB3W+)=B*!{5?+ zdfv_Vd}m+kOBpWNQ;P>y?Veb6W^r0igaWg8T2HNVIrrXC8RdsdkAc+Es9VbGc2&Ok zA1}RBdmDu1@Mmvhq!;p>w_#isa@}6qc)NRA;jNx;%;zS>xQyP~LA!YCU5Z$X;wQUh>5AiYK03Pdu-C;`xUsp7-E69DknnH(BLF zynq8wRQTnI=i^U2|N6x9xhI}4KkpqiG=&k>VF6(I>9i-iKgqB**QZD7uL;8b$p%r44 zSS|ADOYs9eqF-sgb&dFqz7}W2V|pNNh(D?74`Pw^p?D;I6uXrd$_`p!W$QxgV(S{~ zGV5yVO6w|XnstTsD{H!SvvrHL*qO{T*1bgY_37^IbPtcAG+iILDD=AdBdzMA@buZWNrFr^; zVk;WVNlHqx*gRv!c6SXwlRj?Yi&t&Cd!lMIdCRs`cln&>uFf~1wcBoq>H__+_g-Rs zoKG2As4w%`SuVwFjZ?DRBPEjcl&CJ0bwFaX)Iqg&;fmhAStu>i=lDj`G)Z=#eyzB_ z{*7-RTCCSAo=i*3xm+tgjF##xN^}oiCNcPU0f(05o``1}(9YGjml#4b^>8(jmgt-P zL-gfpXK*85O`sKeHNT#erqA>%MJx67e$By@pZvnWK~Mh%v`TO0{~j2z*}o~R)_?Jj zM}3(98?DhB2Xv<|^@RcT0@j)ni4|GK#E)X)`n`aWLF>(WNrx5$O7fLNb*=th;8Xfa z9~88NHp~r<#N48SV`-V*HaHs3k-_a~qrNZrzTYOhsD( zl3m|fW-RT}D@N?Z^KQgXv^z7;Hl1jX-aG0M=*?dcgr{Fk`TQ_CDR{5!Ej8@TNJHH^ zMS4kG-euPSS9;mrawNFB8 z6d9&x)s6O>POW_jvU=c|X!ExDs{8d1%AccYSQ;hucVgN@$u`G~keU=bf)402VyBfk zDEs@kd23hh8%%HvzWuhzlIn4tX}>->t|lGScgIx-$dc_*WlXtRrDU`8KjWliqbt;* zLwc_YmGPWjp#`3K72@fz{-Q!fJS$YJg=fEt1(Nj#FP)P0i*F3>bdGNTn3VW1I-;+O zuS{9`rFbdXXYt=druQnv;aR+LIAAJP{uubzRGx`vwJLu!cuA1v9Bh7(;kLlY2wTa> zP#=r8xAv&8NSy-K`&SM0JR*B|t4HQ#u2>*s646qRmfOw9^JyY()$9tNL~2qlKV$YQckBZDRSF13&O9XFc{5e3_dsmJu# zI_0bV7oj_5;;T_&q%Y(Ov6`0Vgg(AbM<~MCIvJF$PpDfP&s}xv(@Fiex~YMSWxuGf z=Dr>Pm+RL@U8QrqY9;=ZI#t_ZvH5D2ILlA^<$5z(y@to2$8Yb+kri~h&lzlae*-vw*zsdfh zOG7p8AJ84$uXO;e)yuVhEAWm3 z{((graG}M*erL{V4eed5A80c!(24K1hs3uKPVnYL{ZO+2J*i=U{!!aj;MKvljo@Kk zwCzzUO_E|0vBD-FWo_;@H*Md~*%^$*%L4KdxJh*NHRz^(ygp}Wlkayi|u9Bt5l zZPy0A=#BO#>89?{Ar`)F#1GpUB=4P|1YxGea2EZ|$@8EPyCMrCaO2-t@ zu`bQc?A|eqFv$-(Re{@I)u|uczS4Oxapus@#Rvi&+vRIY&1};3Q$gvO2i_V_aDk29 zK1ypdmF{7JW@eV|=|^;5uhOfPi>s*yR}C)c(|a{T>)Br41vz<$dV`060uxX5?n19L z9hFUbwZ3oA0)1rPI9iaosP8}lC41g)q@R=5s$_Mjl-%e22SX0u_Fo2(PZ-cch}lVc z=a0hlKL)h~?QabJOi)VZo*|3K*)U=#8uXn*M}hvB#5zs_6fMarX;ZXp#3^g_F~gdO zxe`^No-?ecV|oBm5&;5G^=4+>;qUyn-kaV(0>+LS5k<2y^$~Ljq?8-gM*$lrjrmBy z+ut9>5uL~^`*9^f$1}TpGDdNZ_RZ&=;926wb$1fHVq6Ol{N1=dbU(A%cuh*|i=-vK zvkgtMHnAnIi}ccO4GPvr3=Pz~PpA&y858z6(e;|R+C_YFF-bg}8i@Cs^d7kyq@Po? z#~zZQGbbMgD?3j4oJ86+{md5$4hb2I(EO`Qc7mYFf@4mo3y-lz2NN;t!arH(Mdj6@KXxB`uNUtk$)VOsK3xtudH!?~dXFW6)86VZG4si^RSs>;bYC56MRUZu zc#(EBv;Ddu(t7P!-;Ne#im!sn?dSxIz+2u{TI=s_Scx{zjff30Cv5Cb@GIYL>g??p z_Rcpso2n4rlFsj>w(!R0`1l-l6J~(%aE*dT#nH%F{Ep1?e5X^3i)-4AJv5 z25`sjN+`MM`CmoEhgl^1B(=1ExPzA$wOF; zz(iD?(ywo;UEJK6z$SXy6c|NY=5_={7ctEVqiZ&c|G~BkoA+B80BX)(`igdhSwo6<-#ia=c zP_JF#BP0>WNQ&h2HgJzgE!9C>@8zMik|>-lP52iZp* zWdFMRC23r6G*sFX)4K?l?iCu&?e)WXy*ivp>hFd6TFt(C`kt5MJo$#fNrPdE1L)Dq zK=TR#2?tQ@-tbOENL^D1h+a=>iT_6GcC&BhyuBT%v@=+?M0yvj7+7c0tm@)z`(H@Q z^3Q>Ix~0b-Y)A7m|9x<`tg3M+7FE3u?S)ScJzS~UrYlaNLc&>=#M&~pkw0u+SZN#N z@)rqMtVW$yO}&x%(cuSF-B^6yHV>O4LjVYA2(jA-I#>y*$=XrlCF!c<-6B2p=vF`1 zngzmG(G1JB)3KJcJ#*o)p9!&1@`+?Rr~74x!Gu-J9)$QhHM=IB$FlqA`R*abR9IRY z%&NLUk3ZQiz+u$t5sjA=!VE0VoN;oB2VKte%L4<_b@lv|kol$wGkSX2u+iNCL#EEp z+;l!zn$aT{D%0Z3UoSj$3pgerz5OsqH4C)Vf{&h!E`Wzt~hi zc%zeFwu!fdlcukA+s&Z}>8IZuMjJB!ym_2xW#<0dPs32`{=2b2@#NX8GPIqOOVMEz zZNrgI+Q1p_QW-kVx$jaCH!e;8E?Q;(u{5oUqs5%sk}9Iu*OEGMiB>d_bRN@+VrU*O zX+^_Oc(kTe%HV~qX+O>9Zfz)*uJZUc)P$H1x1lyDeA`kxTF5=yqTeE(*p@!3x>(Ml zxvx9e>ZUGnykILV*$fFqxv5LdN;d;yG5^vI-lJhVY6?V2?Wig(akpcsVg|Q z9odS%u8)6v3Pc}lz>zEAPVK3JtIve?WGm(9V>QPy2Q^=o@V@rc4-}W~K<|1iG6qWH z=^ZGN(s)w`st{__MY(H_X|$$%lsHWLNhCrw)A*+jRN6@m1S;of59>&$$%W=oCwha@ zxdOKMAnQSA`iWNZHfS1HXFROx27cb1O4CNxYKmxkqaNt$H*>OtQVh=(D}2;rJh~@!b5t7+ z4G&p;1=X~ftMtN5S99lHRI2=DV+2LB*sO6%U7IylB&b_tov*N2vAaQpXHmEE++Ng8 z-C>4Is1HrVK4ddL?nV8=O=yg-S(^N{E@kT;Jww&9wtkF;6eYJygpuSUytSjhNc$42 z?b<9+KqLdGKKics3X3OTAjN~egn@>51`dR-Z|C%ZRE;+A-GP)qJ2`p~rkBBQ4nj_M zHQyaXQKeQ(~&W+al~M%BAz6`->uPK|Es!HKYBUI|M<|en!r6 zBqlKNJ*?pEeC$2yKnFN*C>Fv2{%|OzqbQ$+74%)%f-lvUF-&!N6H!?XqcO+e<6TD>A@V0y`&B8#HKBSK*_^f0K z*zAV%gtp{YDNLcBweS9ju)o@F5BY?;ixOuf5PXX#d{8m<43GPazNHKH0iRPvt4ovI zw99VV`jh5FS581W{|bLL5r*xGea%FAPhg6^Q_yd|{g)~9P=NC5$utGUfN3|89aWg}gUf$bQXEFmfB3*Ms*9pbOX|U$mQxvjBk6^u0-KZo(uKO1la^C|x@5n*oZbc(?DbdD zOvTH!q`32!6wSY`fuY&Xt-quRD004}XLO0P*V3nEVdFvTpeEb-&^mgTE^_R8YVoRm zk6Vw%?RuERXmXfgl%hIovXF-$8HE(o zAR<8wg7iX?BXT!j;PWRq-fz1goLG{KYz9~-TtI0BRnNHUP6`Qo<{%;s9>WZLjO3E~ zjQj1R)ilv=wNtDIJ>yCTs3c9`RtIP+-X0&In)H+_9i$Myrw$aL*JcGpPr2bqn#@-Z z;(TZ_pUuK@p3HuSutdJ#`G@EO6rP7^5dF>XAEt!yCIt#ikCR~4#AsH)2Rg`Cz$7PB z5fIYkLHD{|nEoV@#7$}Sm4i1~0%`w4^&POPyrO9if#fTA| zy)c-IMhxJV=?kvAWqG@5Sja8&B#Bwl+Q%$&mC9H(S3WzY#4fVUGT zV5=wb;}cYYUT}0ajiRYMFPq*=a7tWq1I%$sP!9JhC!8`xtCqD_hN4gH5KnE2eBqS5 zp%YmmQFYXSGif06g?JJTnH+wZ&c-}<(13F#6PtG1pmCa^)L6jAiBq!O{|cS) zqS<`s4wy2R{qIu6@wx${XjeeLqSZ7X>O4p7CZpEb=Bl1-RHIQ#+9#PYzX%ev;%sMu zqi#KxgcChlTsTamHPBoLIQM@9MysZ%3;5@|6f)jPqKW6R+2j~A%}CLiE$H;pm}rH+ zaMG7u2o}V=1dCS9+XX8b?3hbQ4NWfrqge|EeJj3wg}#NzEXKR=WLaH!G_<^g2Cdo^ ziwpQcAz(DU1dP@~h*RC1h)XH2!Hi~uft~KXLf|emg}BBnEO*T6r7@-8-CeNBNH{wM zT$q74>_t6V3o+XiiO~{joCZ6k=o(OEegW!yohpU?>OzjXPp!*2RTZQHF($4qDx!C& zNAJ}8)F9Xiit)^FR-##CzjL4771;l@dO)2Kr!Rg$Eohnj&I8IVh6ChnztO?SB?d|( z#lKkojFihK7e+x=K~tCV+}{yWEwhV1u&imRz4)IrU0_?W=rO7(@)TQvOFaB3bwLbu@F~K{EdIrKvp0K&_zN&|o*T7Co+Ey{$eu5Z9@SqM zm4jX&?zzO@yr7ow!qNZ0n$h<89mM&d^#;A}HXqG87V$Z3nN|JDUYmpmHQZpb2cbIx zA$6mC^RaqsGmpxMsg$-}mZ~!akex4UYiQ48iS(Rt+RC$qz;P>oDMTd{=Y^<-!c8%X zI*Ry!w(tf;T%+|o#VX#SulO6QsDq74fSai2?;PI?2NIq*cvClWUpJ9J8TJ)!0(pNY z?Z~}>MoGVq`W3r-hye)vhI)v&#s$Y!V)Yvc{I+g3G`?|O+U z#f;#|dkT@2N4Hl3xN6#V+>u6+^)8Pkco@Hc;z)!MZ(Mthk6&P39V7 zcw)zjokMXE1_8ZQTy$_qMqqS`71k(sjK8C}m<*+?UqVzw@oovx(cPRlXDFgQd#d6K zNO`tuNcp~MNV&A%f0c3=Pw*2s*X6JLL^iGE5B$YuTF15kkw^!5Mu7Mnds44JP=Am| z2a1jWITR=w1B8M^WxvgaoRL9LG#vDJVjGnZBuZls);CCO2yyI5wcCfK&PHmJj~EiQ zM+A$K!tbcTyuw@HHlgAX9pgG-;ypUWX_pojgkrhn-TBQuVK;T}7#LRW*F89=)@*y?) zrcJD*efA^-{p54Nn3;z+G~SK-M~O&m!P283z5{$C3cTOXJTKve0)gqX9tIs#p*K#NXKlv z%Zd8fX0#|L7M49P5y)&ppf72^=NjOSy$or)aAxkN+F6u`dZqK=@}e$iT3%j!Oy@Zy z26C};tr!svY4?Z`V@nvwN_cCN^UPtd$B5mO%?n~hjS|jug4AnwHJh)*ih5wXf1H?s zVtJfs0PbIl6Q2>Ho3|^9dI2*eX-zDV3N|CiA7im3^XiHsi7s>5c(H}@_ z7153kbDgTdd4%Uy6`ko2->WJ@x(dKtKE7WE?ktGbAQ;pXb1 zInw-mv%2W+{m3{S3&Y;w3~M#SKV}N27tGtTny`S=Ilm^>(@Jhp3(MjzXViiMOt;^t zCEUo*xIutD7-&WWK{m;K@ufPVHv0P36|wwnEAgS*N;xmST2~x* zoyA`9m7ePXPT_9ax77o;=sx#vAnww)+^nH!i?`HUawcdBsEQGTa znpvNXdM9L-Q7_LzO?YShgF^M_>w-^3lmJ3d5}j zx7_KCLiDB^2kyx@wRB>=V$_)3(CQjL3F{QvOFo@n7ULSW6o$Qz_ZJ!Gg~l%3(ak#9<5q+*O;d8TrDnG zh*QqRH&MH1aRDb8qLWRfj5Zf^vY`TKmY8{KBM}1OpJ*gv=^p3f%_V#jtwXSofpdnY zprj5tnQV>)bpRPsT24r_9!jC!kt~i>%yv9w-FFVQJ9?v^0af1!vCKgVgPC-rUdzsu zE41h!XjSiUR%7_IZ~0nd5gzcp1APIxciAgJLPgGi$)>T>zZn49E1eGmy( zuP*0DO+{6j!=;;vQZaKR2tqP2ND}9!&XpAfOhdm&Tw3IJnxT)*sb+DgnF#4+2F_R% zhTceSu%oX@sj07cI%0Q2CxF@2>Z&*OOKOv2GsiWWi)Mai0FGogI-wCkcye=*?79jg z%eD|B%9t^?&~W6BjjDF<8H5Iae1lCorvnC=_K23Ey7>JncWo&Wg6|Ye z7uO05;?%WCoRT0)@zIuIJ?^UtF`mZpowXFCcd)zj+jT{A<0flaJ}_K(>3atF@qjua zqTN#It)z#5-;GjyEjVw6hoSlwi_KzOS-4=Fd!;&*L`^J<4mhasN4w0e;(-*MQ6+d~ zD-q4ZTZuYhfwFsSZDB=`bQ3eGEiB&nzX|{Hf`aWIwHD=sb>8HpBtF?zyu&NoiV7Ut zPMo0MIKQ2k$2slA8~jOo(ULtohzjN{)tbD*s<`v}9YlBR6pnX56uN@lI>O(ialej; zO;++}9Ys@0;jE5`zUT9$jsjPI_*qARyFc8rlfdO4_UnulyqfEG7S8KGeo~K;VUcm8 zNL|C9bOy#R`C@1IQ1fOgc$17J87pSuteYddh;NYvxY<>Na_O$3CSdn=6;WnYWnSGC zhN5uQNSse}coXE!<-|9|R|Rc&i{ZX+fnpc9QT6C85HOEhb`!0kymPvVIK1ucChRE2 zye$%Fk$wByh$txC9?}C&7uAD$Leb~({GOQGJU-A`<-LQ4YGT3l2OGPYnx1abV#F?^p?kpb9%7UTFu#f4FNR}3G z<^TjmYxwd2#GR{frXYgL*bC@w4l`j23@Z$n3Gw{cfub2Qg1ZL_8w7uCpjcHn4hS^j z0DH^?%ALJ*ZVLf~fW&XK~GY8;jzHn&(251^`vScvKo zXH{KPH8iS@npN6SWWFwP!YD-37y0feFyR>cj22-H_Bs3Xws}Y##~mFICP&E%V9K`` zs17-0E|Y1tPu1iA5lJ^*F4> zwR~ZmxG40=+_slFnCJB=5?tW7l9 zcTYt74W2PcR0?qI_;A@4Ji=w$WA>a$upzKJ^}v4uJZILqAW((It4qIs~r1< zxQG#6d;!aq%T1<2DhBv`UO8QaaK&U%9KiLH#mC%uhVbJf$>JE`r%eO=IsST@0bgvo zU>u&Tnr>h|F&)62<_iyQF+-dMaPUk3=W)-O*qY4Yn==vS&*6*|5y^>oz{Jl?K}VxX z8vH+8Z;{+!7L0KU_nif1rtrjB;!}FSFJ?jTr?~uVu^MluX2UV;<^0*AH+Ev}Q^j0* z&bL#+_8&Q94hXx-TjzkO*ZAxl@ir=B=E8T}=U>cXuMX6E_?9lN&=0(2Atrrxo^Z#c zFU=F5psMqHEb(I;wLlz3F95`{FJt8UoWVxdi;S*DOAd-p7RgHc@&a5kK#fH?V#xD>2+PD_7JIz0@71fa@h+2mYc@B43hdJi(N9$l@PxG#I z(B>Te&pJTnaHaLw%jWQq^&+KI!5tP1uBBxobkMG!#8X|woi~Vp)&&6B*dUkyOHUa9 z(yAbQfp>^g7TW44+1`buf!G@%W2;=&b9`byvv8Q1HUqOaErUJDUdfbH4W1;o7; z;87ufI0ZxfY zS)DfKcbc1Sgn7&1MH^wUa`@w|BD@fNw_V(Q9vH z;npcq{3#Q8<|gnehevD@wd=ZIZ)2z3(pLt&ChToQ`zcNpijI;t`YK$5sS3aodx7`&*o^?zo`X`|O7-ntd(+Z?{J6^ft3A{|yEhhxp6 zLprEW;bH06N#*dAbOU6A*_NAbOt4A@61};+Dg$q+OxqBmqonG;AoU~{-zDN$*=`I`db_AFzCeE@BOJ@)RqfA@tb-L$Nc#(*pS=ow zThvh??*iQUkxtw*4OTm@H`qi2xwQTV@TEn;CA5narX5ArSrxnnyD&S~EF_I3*#~Xo zU*84^8&}*4nTOX5iW#K^7MhXN1(RFP&PW|8g8MN(qqr@{b>cP_$9Ti`Y%*1$uxWWc zxB-$H#VwX)q-ncZ*tbG44iqm&5yaixB}UrQ{qqff;Fm)7)qeLLB&;JqFkc z`F5JK_h4I@V~^Y`)>ENnR-iabi_%&|VO^YZS=D{7s+n|2hI+pWeYz<0P$%;L;=y*k zo|OLro&75G<8X&}0`AR1 zGX9C&`&D7jL(qq_T4PG=BQ(07+k=tV>k>-;h^JUBK^Y)j{{^0S2!VNB8P21flb16 zzH=q(!|H>%@QmLF`Q^L7ij_6Ml z>{D|@dqETV;@4u6+a$RI;0ZSn|1Uj*SpHiMJZnV44bNgX_$}W&Yed4Bod_sfGjJ;xjK;4Lrl)jaU;5{q+~`6aG* zPONf$qEhHvTK?%AD9_-C^P*mZOHMYM8!20`M)I$1DfO};SCN1{WRNXT-VyYVED3GX zthOMWe5zTjpT`U~^X~HkAGmPo3nH#erd;z;IF!MCAc!uiG!95@-r7Fn>&r_#=mNGe z=lI42Y%0!itBc~M<6{`kzbO6}U&C<9B~jbcq!byBoJ-iCJhuOMNt7ULE1q8#D{wlu z?27mcXF&6>;_PTA=Ux?oIQ+SPRV4Ts$5XIS+0ltuAHnKlu6+$Dubtfg8e;Jb{`WO- zcY^)sHPKm$HTVX$*t7W!1rp~QI1EX(KfD3POKg`fW*4TL@Tkw_9W)y_YODpr{I6TgZL z0?i-%fduqq-u(x5CX@NbA7Jxr<7;^NE#x5J`SMROl_;4jJ%&b4;%<*c3O(d|k8#*^ ziq$6~4R0Awj0JT0iLroc{w-#K!AJf^dK2_K{2NK6nLPC=PUkMzk35COBLe*W8IpFF zS$l4Tg=x=$ZZ@BOE?VLX{lFI@-usfl>f$zU^^(2q3#d_$^FC9u5lv^8Nwn3%U8a%$ zi0Fd*Z#Y1TGpbkrgLKKo`GHDnnmWI)qSNX5zbXT)bq)=*Npfy5?1K-XFB^t%A zLXn(>#*Tog+N3B4G11{xB^+55`41@=pPq7CMe*V-R;3LXXaC!(+?NNLx80RWkuw~F zuaCkJru=OvsC4Rb$%Lr0xUz>*4g83%EwT$rk+Y_5hXMB zicqp*g_Z0#Ph}CbD#c5wFQs_WOIe850mYChO|efYrc^9Y4H1K;=uK+ngVyEI=_eSUK;P?X;fQADLIzhlQYTo;@{0d5h>e ze-{d=WY|lEDdoxC%)RMZSE6}HNo6xq;X$R8W&vr^X4;Ik=kRqK?88ebNPQi%j|^9k zsl!G2(n?I2F1dbYTjkF_5y~^pvnlnVNj{NE zQ|@6?YM2hN8U5(;zKbKF_Q$w#l=72V^x}`B72U(|-!{Qd%PN0xcvjCJ*Ep)0@-BVD)2b=AQ6yGZszTkDR9A9gK8Dv&-Uu@e zr44FqmA3jQYT#NBp(+Z z1oFf<$2?L?8Rc3ds5j1!u0!M2a;w@(8`di+f$ph>Dst0UWfD$IPQ)tf5O$1=!z6Cm z&%{A?blo0YQOUyb9bb-DDj`yFs|1Osa9ky2khnLAyT75F^EHUFfuMY$-sL)tl zCs(Ps@+VKOo*}K^NTbFnsY)ci?{ceTk%?!kk$1k%S&g7F_xLt?bJqq+6Z6!+oIJVr z<8CdK8G-jq{nyM{%GmJcL{6-wl(MTWm45h=okzD)&VymiTPrt8I6q^;p`!dGns+x) zI?;DrtRYOub$iu@N<8uKCdyV!HN2@(joi)9jyG3QW?;H`jg{J%?x@OGVJTcGLFvTz zD?#YTmd9gRqyEM#-%=`aqppfO{mIR{LdZ{ea95=cf}~|#m9+mWn!gLsRC8eP zd?F8tEZ!}6cvq~abgtMW#BkN7eZE@jHdnWMNb_#v6^0PKej`fy|EaUwxGF z(nCe`RsMu-;=~}18@~fl%-}!YQ97b%(NED}Sd#m}=%n$@e##j1?$Tdr3x~G6KU{Dc z@9nQNg4_DLKjH1G3!9?-<)1L3Cca^FG9M4a~D8KlJ0BQ7>rsfV^^gOy>ZOdkx{ zKjKS+q4&pl`nyo!`P^rS5>b4=wC&<&^7Npr4@=B??JU!@?Y;MopB7(dMGBo-M)CJ(vUEP%ZZ>XZNV@D zq~tK=6M)PgrfdzJYgn*g>Ctdg&p<8j7To3D!<9FPFL zht&8eG!S2c1dLJ!c^HlAc^)?kg1ErHj#AE+HtMts#^*R5K$r85L@m8 z@H*m{#9i=J)5{+@*@xoaLhu#mhw=MKN*Dk0!&FNTi^Xykf5q{4ewaNkNtrm5LmnwL zxYIPH3HSLy3E_YJpuFkp1U^d^OLgw_P>B(#!@2WhC75SF#4hUeaNhk;so?f(xN0fO z`yMLg*!KseINw>K1oG)eO3U$)Qeee5ye!rY^_ugyoy{5g^+H3FQbh4V8tfo&T z^3kVI{Ximrp8y{ZZyz6TRQY(@^i!08HeYep*TdW9?M>d^-k#q2P0>NGrBnz&jkhgTWwouTVdO1OSf&cZL^g;?>uAsoQUwo#g(*nI($#%3*A78Q+Ez*sWE1KwX8oPIl*i}Nq&!i99Vk&QKSBXT` zZ1R*s^s zT1JUPJXd1C1^U!dBSG+;Qi)!lNdS?c$NPlpHL3*b*#X}A95tR+>W9<>S~WkgFRj-5 z1xC>t{r$i;;LR6-5n%DxflX+w9#nc1`0-)sR@9TyQS^4UJnTBO&j!)L5+ga zEP7%@hDrZX(62j#-U!)b)k~zb5TJEmNmSGH2EmVLvtB1;DQ(fSLmZ&-*N_-mp+|;R zz_WR1XUJ++=#9W_vUhYDh*TtKNu+MmCx^w+c70n|cS_fvhBd{rY52={&I_+ZJ9HyF z4$mLM>*E;}u{>y}><^ZP+rzbGe;-crPXKw>~|pDxT?4Wia;Xs707_SeaRP-Y@fGi9O~#`k|WfA?ZKJ zX{-ug?eSAtGW7E0BB~h{GTIfZ&V^c}=GO&kq}oesr0$ZHzUp3mXgLS%)2EkvhxY4# zmD_{oj`F|I=gyV(nM4QlYSH*Wz{(PQa@d_8lDfU z*2A-AwL%G(2LId=&a2h}9I?kW0Zjk62s*027gvK0>+9mAG*89dgdCmKWAXg1dKtj{ zRs92uKfXo^9hqPAk0!-rXOUnJbd<3NJIdQ59pQekHCldADY|8<$HxbIAC*0P)vxr< z@eVrX92f6J4j3lLC9_1dzcf$yiSr^HBTrXYkc4(&TAjb%Hl$0;k5h`aZUH_}V<5rV)%RA8?YA>lC({I(UTVG-a*_rPEl@`WL$DoZ3bZyy3@fr+F@rqv@%wtLXLH4GPMef|6ZG zhk>W`Ls#{U?ULvRy=wb9cn)m;HeJ(m+6PgZexv;>!Pi{yw>+dp7g`Jqy0dEs=yQ?DA33Uc&CF9hh}?3?Pe3*u5Z)l+KmlHgoK^9j1DAMX+a$8^6-T(IeM z{YnB{&TRLz+tl@XeAglHQhHanm$HV!bD8u~SGzW(1G%?_NhK&H3f45rXD8zw3jz?52LNZ~Foc zq?#NxIiPp!*BY&J`~4K+<{#=!{s9UMoZ0^+damiHY|?)n(2N%AH3!DhVrQR$Lj_dp zi$QM$y5*)yHit{8H5)t}GFUVCGl*Lo(npASNqXRW5&G_7?ST7}VIK;b>zpuh3Ar0; zj7Ee0-sm@h|IN`2+z2RIl1<{KXqkvz()2oGT8ag7s9=58n7%IZ0Hh=W1fc3w=Yuh? zy{Pxt*S`c~~c?48$yfHul8(WQkPeEz_d$B~B&L7{eF6g+k^n~$>d$y$? zb%%G!|ERYc;nya%1;Xnm4xpP(+ayg&tZmX#|9Pe+*;?9@H#mIs6~hqWj1JbrC)WmW zr^)->!$nP5Q-FMONr^n{B#_UUGKvZsr0G<&2VRn)ou?fED@#rPh(!7&ea^=TE(w{8 z(SiY&jsep2>mOh9*?S4rPm5RQI?sI4S`+}fIk~c=1gtW1M~LO~%9}nFA663d_z_^o}Z&FO*jL25ludZ5=>^x{xq%p!X!clfZ(6+T!I2%?dK0As<& zSjJj}mi&oa&Q9l*MNJjB!iY~Fib}~uG|BD}BihSHXIGqzpLJ!qp*kB5(L;arv-`Bi z*?xIP!ur;RMCw~tXi)BZD?Xsx`lyw+>1Vy?s$=xM9=ZCI*fLo^eWil4YCir{j;LU@nq|46tz;0s4Pzuq1*ir`` zBV=n=1bM@@wnKQgW$PF`!?z6w|0izij@ImLgF?QX3?w~#gFLitJ2F6OHM@+XT5rGa z<8rpX=lG4zFnUANJJauadiqtmrKj!)(=%4uxO=oxQ$M$(H^-M%>U$oO_LLLGDP@7$ zoShW{PFZ$Q3r@6?dP+aEvwncJmw?6cwkt4MigOpjmc7nO2wT2)F2eKOU2}k+ZTE8e zO<%Kn9;U3frv_HjustdTUvXJ%yR;N}S7a#mot|t|iF&5tzSSUM{m558Jfxg{%Ls2i zT~^nJc@~;SV-J{WO*HmsXczclPgI{7A?Z7FXmf-BX@aL;(VOorV}AxHwFr>E3uwaL zGTom6T3H0h&jKorMTr+-k#61+Gvz9paU z8v)UR^zVlAKe~Uuud^xjA)IeTIZ{Fuw(!J>K-9l8FM^2D%Y|cF))IK6ksnv>M}hb za~NXZ@tJk;Ov@ZlQuVN#nGAKaUin1lAeXUfgsu`}n1W@_=_jUp(IuyE4k+KLm&~0G z0#kECd>2{MoFGy-XCMXZM{^&*zI<`M1}$^upMT^TbWB3{24ad@9@ypqfn)k#-_*t^ z)xXVw$$a|ldn9s_boEf$@6K&M%g8>3(O_Mk)raO!g ze(EtE)t7p?szHOdBt%wcqnfsH<$mO7xmHe~J*Bra(E)pK8`#?tGi{Cb`bgboPOfOE zj#V1kZ80K2-7f3E1{-!bi1a+vbe_?VdZ~sLI-x#15&MyCe6JrEy`8)Fr%2E?ra#3~ zIxp)_8KqqMt}R%a0VOba%mA7Skb48@Yj0O-YCqR}O653zAk~BZM!!Zq!<`l~a$}D* zF1O{NG+5omvtOg~UOQx~x{95zQ8zGF8AQv1-DxhN%~Q1eb#k(u>>NY}?dCCqA*9{B z(R$sqUX_NJl|!x9sv#7P$@dST#(?}|2x&mF!BA6FeTPzK9~T{0h~uA9Fn@_iiMI0P zp~yNL961aG@8nLykOyANmxr0%9uK1kfP@aG>RyJ4@k;JEoZheGW=Zm5V5wEo7B7+5 zX1l`Cluu>J;Gc$5)9}w_zf!(3DufkO56GhL8boS2?}}jVI)eHX*a|*Af<7)Ry*?6c z2l@C&P;!ucM$sFf>tCZ_4R-T^QPh7HORH8*05pM z_HL8-?Br94^cfxI(PIb!IDa>W@+q57j-}n8Kk0Sa3}ucRNBxny;TdnxWy<8CZ({CD zUiT(2$>gVRBK4hV+kDW{L z0oP4#2pLL{dfnJGmxlP!4a0vKZ6LbMKeVNKHmvR2{L5$berYqeS( zr@{0!+yA0q&(}Yb@UjJht|`-t(TqqZGckj=Dize z1YI=8;5unkJM14-d%NJIS16P_|3%*XX&UrrH(yCJ7i#22^VQpWE!s#a5O;-5)XSTm z7!!6<4P{bNVUSOtHd;~LH5o`lkPL4MYdmClhkA9gtCtCbfMSZPoL2zh9wo_4X2`g( z0BB`l)st`+pXET7vmE8usA9J_L)WVo`2quiC^RWzYZ#sJ)#yb0i zQx4PHcs)Igz~K=OJ3$Hb_v1)wdPb^ILa9;BqS!_&%iHXMW*lsyh>Rx@P#HGQ+e%| zw322SZI05bf~N6j$EYrS%;%0#GAQqNoQ9xu@Hh#xPB(ROvyYe zlSU=DbwExBKDcECg1~<3SxB@=kR@>~<8v7aTcTiyq754-Xs6?;ONJ{=)yNQus;dUw zP^UgMW}YNpig0V%ePM1sKy{Ki;1k|Pkjo& z?Dqs2m zJk#0d8ddANz=Tn>OQ1*5>RJzVp{sU_S?g{qsGeq4qftvbAi1>YnL*HsK#zIOH42;L z9?2RbO_)tC@U!5JduDVh7~XBt#hn8Y&#; zt!D;G^(>t9`Ek%%geiNAz&_6tv}$1m2o@20q^Ud4N>K_PTS;E=BZUohH{oO$%t}Tc z7`%N(AFLL6a_ojJ7++oNfB3dX%$^G;AX=K zuCmc1>>|GAp^xY#1YCO_Q7yb~nI)siV+3n}Nq%D1?tg+n;UYhMV)lsr+pO&OH{zwQ z`P|>s4lmPr*LW%ejXew7h}@8kCe9`7ewyta1o5zQHg%IxorD)P-E6T4@jap_b&D)v zSEi*LmEl&DmL}h-I}ee0U)I*q9?Lf}fJKv_M}L)VF}fM0JGOCxxhm*JJBd zLlJLd^RP-0-_S<>&?a7?O?=KK8XyEL=_wkOcBA8i!whd6)u~(fwLlTU<2(h<2#rOa z0tW|fdXOFj-jXIibrU}+A%@Uq9^@rrCz*60CM+STGKVQn*xqLeGs&&3J$|M(+1p!G#kQ!9w-{PHf6VK=#U1cqo{zA{xEbrtF}seat^Gla znfcK2Y}gDX`igS=r;iAP9{Q9Nqy4v=1j&Or?CLn@Wkga7ON#fwYJXo5fmo`FuV_iT z40NnTf%{D0j7jYPBxj$I?Ia7deRJE8c z%yU!hjt`h4D)Ly+)TzRK=qBzQAiBCFDIiDe@NLm0)ZM%#Kum*T*D58d;WeO?=!QAA zmJ*ks3m>bdE?iMfT?h_*p)Mq#&&oiNNgH@{X|a{kI4npcQU*^65+BjFMZq8-gGU8p z@D02-ShN7dgJ4l3aGS|7q&pN1he+P)R&Ed?%3|C0N{HA*#-dPxn*~N_sE8DSUzyYu z(sYcqaFLHqOpORJs_ZF?b`0YZxI1$N7G@dF2ob7K7N0Bw0a&Y%9c4ke!RyP4fn*q- z<*@Q7m;K9&i}VHmSYEWHy^J*5KrnlzT{u*W**3{+AE0`GKet1uoA`oVtm5t!u_2u4 z5cjZ^n-DGHybhU^mEfdkQ5kjTqru;U+@qo>%VjHwnyBhhK@2Nzm}q0Sk9|Kxf~6xp zV1T_8q)*uPovk1uD<8DR^3{%hDV4vT_E^3Pl>fnDSu$9yC=#qW(t*0DBpM?%(yWqL zT=Bfc9PHu!N&Ee*32x~#;*-5NeD_rM^216{tR39HvS)GtaaBYG z?2x)w5$}{T2P@^PP0O*S&8;H#(FvX%BkGiL@4}=;mrze|c8q9*EtF5Jm?g)I6*vty za$?1YgfOUUHPI+2MWWWy!=YfiBP8+a4F0s5NTN#|6(_dQIX)RD`qBliR9#G^9Nt)6 zOvEdu1}4qrYc<50iswxB5SE?LDkiEIWl_t$0PM6t?ML~>9&}?(DDgS|p{D3eUviCj zjCqu2#ETwugujg!@8Z>?mUtO$>uZVeXp5{ZI{BDm**(;YJg&AV4;w$HwrC@!U*QY2 zMQ`6F@?b)XzaCjlsQHP@HWgtJ?uHCR6v8~1MF1;1a2GUB zayO?UWWc=e`tBL5kx*Yyv)6<{eL+p0yBGSRwE&A`^MKzP6EFq!>1I7z-6QbzrXsMq z8;K+=VX(j}QS(%9xClx!>k3+cx1*T|s_t%H>?^yRHGu$HFjIzEk5(;My}^TJ=Nx6qMw$8)0j3mjK=MJh_DknPknL=~jk=B`;ni!Bj}8Uc zS+mQ!n=anEdSgfnN``08Ls|HuUdwdKHS0zTy`#|q&93e;F^!T1hTl?)f8=H@M46yl z�$txXxo+i0BYEDi)1$a!>UZuW2DVLF4bW5KRgo3ednZyu~dNM1O}H6RRn$2xW30 zQg0du65uW<&rn*zN849P3xvF_qOOp?%y1M`X!JG`+^FPktwcP{=cHC5s>*!RdYLC< z5;;#*mlcH^LO%y?ck&V0X953)S2ZhCHn||_H+2wCSE!CPV(ORV*kbP58mrTa;oZyL zq612+F64=5#(Bk})}nQw6~80TjzOi4E#W(@MRLJ)8z~xj-3A(!#-FqiUX`n0ATxv=s@V?n@|g)L?Xy*rp}%{T3pM ztF#koeEw~vG>3E$mH1kF;V2snGpNPXhmZ8o_*+a=UwHWX$V&X;j0WO;&()H1M)wY) zxv=Tel9KpdClSXBI*9=s)ma=jPr;+vvx|6}4|WmF`1LNL9Y5-Vuu$G(4d*vkQ5o*r z6)t}z@9QdXONbwI6@AODmcCLZ^l@zr&n<+At>B^%ztK$;xha%R4x0o@RuCgFpXerV zRfz9(6SynHjk^n67Ghfuf!jh{y@zmL7YdY?KN&k$+(1&-^Xom}o;Gl14>(BcTB|i8 zo+;Q}bMQ;zI&uLyJw-UHJw;tw&)a&6XsfCQFX{=I7Oi>%M;zMAA_@QlUKSe*+fb^) zJzf#5id9{G1qdwU#=S%b=-jkkA{M1>y@Y|+h*w1dEj2d0ig1B;8YTO{qoVrNzR=Hw zoZJ_*E#w`2MHx_VrY}Oig{`qD?qrO*&e+!F`S{=<5sFyl!XPmLx$*9U&De3o zU__h5ynYBGn00(|h!_>V#x=5JI8rats>LcE2!T2d1=jm`CQ&)Y9|kF9dHD8u+|obabQhb4^NGe*P# zDqfx(sz=;a4N=w9toqWb(vBj1c#-S8DX?4S3vYr8M{&9!B8GqN?$h7yCCB*6)gj*_ zFFsJy<4Lbj2=5vrLZ9a!_jwySH;?!CQOdE`c!X#xx$k(<6sw-cBNANA z`Qs7bui+B!h?XG*R{>RPecQ1!XCCklw!m9>`a1|N*YX$dAo_yYdsp^{EZsE@@3%=GKWFi_cC?-S9qc(>F~(CtU|PByz$Pe!*N zd400k?ZX-9mctn{Ak+E$WQJh&N)}MJF5fDsYK2mdIWRJF`Q16<-*kn4ode~_ zxV6Abfd{6VW^`bUX0U;Z(3(w*<8$e|ikKO=#eVR9K zz#7QnD;ofr#r8DpUbDDwnwTA5c_q0_{P5krFT11e0)@zt{v}oR)XBTL!tME#;hLvgtI} z-wXqr#VMO%GqZTic2Op(kgItGa>;kGJzxt$o-D4qMU)Y9rtqXKA{@oRTd?M`crj|D z=D1bLAtM1yWvw{Pu4Zxe78u(suCWy{!D;TaRaBFMY~N}QGH5Ju+5~{ zzWx7Bc$V2~DX-p+JZ~1C-41(|#eZyv<;mixbn~U9gPu7&Fde=vi$6#=K|ZtEzDzes zj^2Tca1Jlrfzo{beFvhU9B#DJwEDhIF-n}A!U1!HofkSq`3RGIzfi1J7Xu}Yf0KHW zX|IUo|2oZy)Lo*gz_Mt%ON7^aR^1#8l*RZG=rVXLTiv-)h-vpa4OQ-qs{h~Kz8Nr`pCnza9c;Lk{&PUs`ie4apH&KP2B+F7I(@_*r z^g>!MnEk|K&;2#{$36jk&GWn8|gY!*l)0 z+rzEF?9WajvzJ5FpK;maA_d9bO~*y7 zEd|2SyAKY>y$1xXc|0;x)WKD!rI`XB0`vY%u^yF!Paw=PU*Vi{0v{;PJH;Bj(!c@7-P1Td zIiULj$DI?a3qBPo@_j4+a1IDNxpXeVrwiOU7Y^VekI2Oy;xK=l3#_*DmRvA$H>>Bd zliAIU&%-BO;8)Khe9z^x=Mj15a+3?9aUKCBLx$o@#KYU2SNf$+Z?~A4qU`v1S zB0~3vM&3nHiV$$$|5~iTCMWe0KKkCl$(KdrQ0oW=(yoZO8!x*f0^h9irOP5AaHlIi z$gGeEjSW>Fa_l#vYJ}Ov{06hwXC^%M8}KX1FuoBzqX;FRSVV6yoPRaT%#k1d1=woBNNrT#_elJc4GMYKZ=JwKg#0+ ztsK@&!yBTN&lH(Z(?Zm_#7`|VP>(O@@_)jncp7Ur1><7V<(s0ccsi9I z+!PCd?Ce{jwk#gLWiEpDKZ}8~nD#TW4fBlgx8;e?T)uw?o?x!wlP{74eQeD9Mbxy> zNn`(i#3p4+W7Ii9b`2$hlR6hF$SUC@gxd={bC~VyDzv4CUZ}ES{Cxp9H_6N|# zDcs?Kn2ocGuOHwvC6kqhVkJsz@sSVqS|=Zxs$b1& zz7CXZ29KHL67BVH$7je>SP*xUOs2=0)r+2rH|gR+FQo&0ys(F&)2W3wl%ZG`9Y|@~ z)ve!8&Ph4MYw5XoyYHmJ=2|w-OU76bCZ3p6o#hg;m9Z}rbu#CYGS0Q1^pg8Yd_*Ak zlO?Qbw`Q|m9%K&wB&D7EoHzfS56qz%;BX}q8Z%IOBr17kzqy^E1@j0 zN#ifPln27uT6l)nW$_P|ogM+7>qs7fSWf2v9g`ow4usFbFFsWOEjIlEXo7vt5^ zN<~**uOei>Do9xh2huE9Sx58(Uk_0h;WZ&t$qhX2b`u4cy$6OV72Ua~_IfpEf^jlT z2_R%LE{B8FP9q>fsZ1rT>=ZYPR8Au$=^LfA4q9!7Af~@@Ii1bMkSGP2qGQJJG73Ie zJH{i+Dpeq^xn-3wI=~ysD%CvAkvOoN(ugmYRUEw!m?)7pDbYc85AA-5L|o{_g#=$@ zk>nQ}_+Z7)Oqbzmw>(u0w!VEs1Z5sHMk8NtD zxbX9lsO1ScdacSz#Ea%%NfM$HAVB4#O8<QcrC1= z420|Zy^7M7qiQHq;NO?mP&VLGkhV3^@{O^srqYh+TjOrLl0m56R$HkKpewbp_~tIE zqYR^){HVGTQDUyCmRzx!G7Dho&6N58yV(rNIhXyKD^oE>YIDU&+&D&gg}&$17-a;` z7XFM;^6DLoz2lUL z;_6f$SYL_a-{O?enAvhI%OJrn;9f|*A@!?ZZQ~v!mQ6gI3)iZyyjifW<^4#RySjn} zmBxFjD;>F2g3=R6a)L4u*o|$eIJkkPj4kZqZFP~yPHDzoP5GB(QtejCIpVhUl$O@H zc_m)fNa;$~`A#EPlW&c{#tPD+iFK4S{wAgp%liVSt!?Tmy=%Eom{M`)Ponb}HxOMZ z)>tJ~ao~e8&*~mBEp0Os+~4w>)4>6}g8cLS9+DULK_ zOef_te0s`0U6k%P$>`e!YV!+E>Z0U2?#elEIsk)UN7mf@6Y6iW7S~mU`nxf{tMV?< zZ~SvNF!^^b)gAvI&hLDzyKztrmFBoca(^%a3#4@#4^{eL$^}E=wr}vu!(f4K@z=wY7`n4) zxY7tVwefIe4C>Yohj8z3)^O+bp!rF@#ijYEmq!H ztZWo3A1GEnR;+v)<??qV&yBv%GZjOZx$=(7c2i-to#J!(h?;% jM*npIaMUkKoYCPIWmibRA@DH=f7kK%+w1IWv$gy`Tg!NE diff --git a/wasm_for_tests/vp_memory_limit.wasm b/wasm_for_tests/vp_memory_limit.wasm index d5ce074e53d01ea0ab8d59d8370c1830610b21fa..6306d6fce895220f53f6412f90c2c40c46d2b2f2 100755 GIT binary patch delta 22686 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 delta 22676 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 diff --git a/wasm_for_tests/vp_read_storage_key.wasm b/wasm_for_tests/vp_read_storage_key.wasm index 02b3f2e645e8e626464c26bd301881e08a766ad2..e0e4b18d2c7c06cad7666f5fd7ac1ec6d866c62e 100755 GIT binary patch delta 42157 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 Date: Tue, 11 Jun 2024 18:23:25 +0200 Subject: [PATCH 07/39] Handle the is_sender_chain_source case in the MASP VP. --- crates/namada/src/ledger/native_vp/masp.rs | 14 +++++++++++ crates/tests/src/e2e/ibc_tests.rs | 27 +++++++++++----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index df41353834..56b801dec4 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -16,6 +16,7 @@ use namada_core::address::Address; use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; +use namada_core::ibc::apps::transfer::types::is_sender_chain_source; use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::ibc::core::channel::types::packet::Packet; use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr}; @@ -404,6 +405,19 @@ where // IBC packet *post_entry = checked!(post_entry + &delta).map_err(native_vp::Error::new)?; + + // If there is a transfer to the IBC account, then deduplicate the + // balance increase since we already accounted for it above + if is_sender_chain_source( + msg.port_id_on_a.clone(), + msg.chan_id_on_a.clone(), + &packet_data.token.denom, + ) { + let post_entry = + acc.post.entry(addr_taddr(IBC)).or_insert(ValueSum::zero()); + *post_entry = + checked!(post_entry - &delta).map_err(native_vp::Error::new)?; + } Ok(()) } diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 7266316b8c..8673e865da 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -671,19 +671,19 @@ fn proposal_ibc_token_inflation() -> Result<()> { #[test] fn ibc_rate_limit() -> Result<()> { // Mint limit 2 transfer/channel-0/nam, per-epoch throughput limit 1 NAM - let update_genesis = |mut genesis: templates::All< - templates::Unvalidated, - >, - base_dir: &_| { - genesis.parameters.parameters.epochs_per_year = - epochs_per_year_from_min_duration(50); - genesis.parameters.ibc_params.default_mint_limit = Amount::from_u64(2); - genesis - .parameters - .ibc_params - .default_per_epoch_throughput_limit = Amount::from_u64(1_000_000); - setup::set_validators(1, genesis, base_dir, |_| 0) - }; + let update_genesis = + |mut genesis: templates::All, base_dir: &_| { + genesis.parameters.parameters.epochs_per_year = + epochs_per_year_from_min_duration(50); + genesis.parameters.ibc_params.default_mint_limit = + Amount::from_u64(2_000_000); + genesis + .parameters + .ibc_params + .default_per_epoch_throughput_limit = + Amount::from_u64(1_000_000); + setup::set_validators(1, genesis, base_dir, |_| 0) + }; let (ledger_a, ledger_b, test_a, test_b) = run_two_nets(update_genesis)?; let _bg_ledger_a = ledger_a.background(); let _bg_ledger_b = ledger_b.background(); @@ -1622,6 +1622,7 @@ fn try_invalid_transfers( let receiver = find_address(test_b, BERTHA)?; // invalid port + std::env::set_var(ENV_VAR_CHAIN_ID, test_a.net.chain_id.to_string()); let nam_addr = find_address(test_a, NAM)?; transfer( test_a, From 423ee7f69a350999f968228dccc7c7d5a3343446 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 12 Jun 2024 10:43:29 +0200 Subject: [PATCH 08/39] Ensure that native tokens can always be decoded. --- crates/shielded_token/src/conversion.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/shielded_token/src/conversion.rs b/crates/shielded_token/src/conversion.rs index e109b93dc2..48ce07f42e 100644 --- a/crates/shielded_token/src/conversion.rs +++ b/crates/shielded_token/src/conversion.rs @@ -572,7 +572,8 @@ where if !masp_reward_keys.contains(&native_token) { // Since MASP rewards are denominated in NAM tokens, ensure that clients // are able to decode them. - masp_reward_keys.push(native_token.clone()); + masp_reward_denoms + .insert(native_token.clone(), NATIVE_MAX_DECIMAL_PLACES.into()); } // Add purely decoding entries to the assets map. These will be // overwritten before the creation of the next commitment tree From 0ae6f2bda8329a3da05e431a0a3a64af9ba610e2 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 12 Jun 2024 16:28:45 +0200 Subject: [PATCH 09/39] Reduced the dependence on IBC events. --- crates/core/src/ibc.rs | 1 + crates/ibc/src/storage.rs | 12 ++ crates/namada/src/ledger/native_vp/masp.rs | 206 ++++++++++++--------- crates/vp_env/src/lib.rs | 11 +- 4 files changed, 135 insertions(+), 95 deletions(-) diff --git a/crates/core/src/ibc.rs b/crates/core/src/ibc.rs index 115ef5b017..f63805f16a 100644 --- a/crates/core/src/ibc.rs +++ b/crates/core/src/ibc.rs @@ -73,6 +73,7 @@ impl FromStr for IbcTokenHash { } /// The different variants of an Ibc message +#[derive(Debug, Clone)] pub enum IbcMessage { /// Ibc Envelop Envelope(Box), diff --git a/crates/ibc/src/storage.rs b/crates/ibc/src/storage.rs index c9fa19839a..9d4334612d 100644 --- a/crates/ibc/src/storage.rs +++ b/crates/ibc/src/storage.rs @@ -521,6 +521,18 @@ pub fn is_ibc_key(key: &Key) -> bool { DbKeySeg::AddressSeg(addr) if *addr == Address::Internal(InternalAddress::Ibc)) } +/// Checks if the key is an IBC commitment key +pub fn is_ibc_commitment_key(key: &Key) -> Option { + let addr = Address::Internal(InternalAddress::Ibc); + let ibc_addr_key = Key::from(addr.to_db_key()); + let suffix = key.split_prefix(&ibc_addr_key)??; + if let Ok(Path::Commitment(path)) = Path::from_str(&suffix.to_string()) { + Some(path) + } else { + None + } +} + /// Returns the owner and the token hash if the given key is the denom key pub fn is_ibc_trace_key(key: &Key) -> Option<(String, String)> { match &key.segments[..] { diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 56b801dec4..fba665b10f 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -18,13 +18,12 @@ use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; use namada_core::ibc::apps::transfer::types::is_sender_chain_source; use namada_core::ibc::apps::transfer::types::packet::PacketData; -use namada_core::ibc::core::channel::types::packet::Packet; use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; use namada_ibc::event::{IbcEvent, PacketAck}; -use namada_ibc::{event as ibc_events, IbcCommonContext}; +use namada_ibc::IbcCommonContext; use namada_proof_of_stake::Epoch; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; @@ -40,23 +39,25 @@ use token::storage_key::{ use token::Amount; use crate::address::{InternalAddress, IBC, MASP}; -use crate::events::Event; use crate::ledger::ibc::storage; use crate::ledger::ibc::storage::{ - ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, + ibc_trace_key, ibc_trace_key_prefix, is_ibc_commitment_key, + is_ibc_trace_key, }; use crate::ledger::native_vp; use crate::ledger::native_vp::ibc::context::VpValidationContext; use crate::ledger::native_vp::{Ctx, NativeVp}; use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; -use crate::sdk::ibc::core::channel::types::commitment::PacketCommitment; +use crate::sdk::ibc::core::channel::types::commitment::{ + compute_ack_commitment, AcknowledgementCommitment, PacketCommitment, +}; +use crate::sdk::ibc::{IbcMessage, MsgRecvPacket, MsgTransfer}; use crate::token; use crate::token::MaspDigitPos; use crate::uint::{Uint, I320}; use crate::vm::WasmCacheAccess; /// Packet event types -const SEND_PACKET_EVENT: &str = "send_packet"; const WRITE_ACK_EVENT: &str = "write_acknowledgement"; #[allow(missing_docs)] @@ -337,52 +338,62 @@ where fn apply_send_packet( &self, acc: &mut ChangedBalances, - msg: Packet, - packet_data: PacketData, + msg: &MsgTransfer, keys_changed: &BTreeSet, ) -> Result<()> { - // Ensure that the event corresponds to the current changes - // to storage - let commitment_key = storage::commitment_key( - &msg.port_id_on_a, - &msg.chan_id_on_a, - msg.seq_on_a, - ); - if !keys_changed.contains(&commitment_key) { - // Otherwise ignore this event - return Ok(()); - } - let Some(storage_commitment): Option = - self.ctx.read_bytes_post(&commitment_key)?.map(Into::into) + // Compute the packet commitment for this message + let Ok(packet_data_bytes) = + serde_json::to_vec(&msg.message.packet_data) else { - // Ignore this event if it does not exist return Ok(()); }; - // Check that the packet commitment in storage is the same - // as that derived from this event let packet_commitment = VpValidationContext::<'a, 'a, S, CA>::compute_packet_commitment( - &msg.data, - &msg.timeout_height_on_b, - &msg.timeout_timestamp_on_b, + &packet_data_bytes, + &msg.message.timeout_height_on_b, + &msg.message.timeout_timestamp_on_b, ); - if packet_commitment != storage_commitment { - // Ignore this event if the commitments are not equal + // Try to find a key change with the same port, channel, and commitment + // as this message and note its sequence number + let mut seq_on_a = None; + for key in keys_changed { + let Some(path) = is_ibc_commitment_key(key) else { + continue; + }; + if path.port_id == msg.message.port_id_on_a + && path.channel_id == msg.message.chan_id_on_a + { + let Some(storage_commitment): Option = + self.ctx.read_bytes_post(key)?.map(Into::into) + else { + // Ignore this event if it does not exist + continue; + }; + if packet_commitment == storage_commitment { + seq_on_a = Some(path.sequence); + break; + } + } + } + // If a key change with the same port, channel, and commitment as this + // message cannot be found, then ignore this message + if seq_on_a.is_none() { return Ok(()); } + // Since IBC denominations are derived from Addresses // when sending, we have to do a reverse look-up of the // relevant token Address let token = acc .ibc_denoms - .get(&packet_data.token.denom.to_string()) + .get(&msg.message.packet_data.token.denom.to_string()) .cloned() // If the reverse lookup failed, then guess the Address // that might have yielded the IBC denom. However, // guessing an IBC token address cannot possibly be // correct due to the structure of query_ibc_denom .or_else(|| { - Address::decode(packet_data.token.denom.to_string()) + Address::decode(msg.message.packet_data.token.denom.to_string()) .ok() .filter(|x| { !matches!( @@ -394,12 +405,13 @@ where .ok_or_err_msg("Unable to decode IBC token")?; let delta = ValueSum::from_pair( token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0).unwrap(), + Amount::from_uint(Uint(*msg.message.packet_data.token.amount), 0) + .unwrap(), ); // Required for the packet's receiver to get funds let post_entry = acc .post - .entry(ibc_taddr(packet_data.receiver.to_string())) + .entry(ibc_taddr(msg.message.packet_data.receiver.to_string())) .or_insert(ValueSum::zero()); // Enable funds to be received by the receiver in the // IBC packet @@ -409,9 +421,9 @@ where // If there is a transfer to the IBC account, then deduplicate the // balance increase since we already accounted for it above if is_sender_chain_source( - msg.port_id_on_a.clone(), - msg.chan_id_on_a.clone(), - &packet_data.token.denom, + msg.message.port_id_on_a.clone(), + msg.message.chan_id_on_a.clone(), + &msg.message.packet_data.token.denom, ) { let post_entry = acc.post.entry(addr_taddr(IBC)).or_insert(ValueSum::zero()); @@ -425,30 +437,31 @@ where fn apply_write_ack( &self, acc: &mut ChangedBalances, - ibc_event: &Event, - msg: Packet, - packet_data: PacketData, + msg: &MsgRecvPacket, + packet_data: &PacketData, keys_changed: &BTreeSet, + ibc_acks: &BTreeMap, AcknowledgementStatus>, ) -> Result<()> { // Ensure that the event corresponds to the current changes // to storage let ack_key = storage::ack_key( - &msg.port_id_on_a, - &msg.chan_id_on_a, - msg.seq_on_a, + &msg.message.packet.port_id_on_a, + &msg.message.packet.chan_id_on_a, + msg.message.packet.seq_on_a, ); if !keys_changed.contains(&ack_key) { // Otherwise ignore this event return Ok(()); } - let acknowledgement = ibc_event - .raw_read_attribute::>() - .ok_or_err_msg( - "packet_ack attribute missing from write_acknowledgement", - )?; - let acknowledgement: AcknowledgementStatus = - serde_json::from_slice(acknowledgement.as_ref()) - .wrap_err("Decoding acknowledment failed")?; + let acknowledgement = match self.ctx.read_bytes_post(&ack_key)? { + Some(value) => AcknowledgementCommitment::from(value), + None => return Ok(()), + }; + // Get the pre-image of the acknowledgement commitment + let Some(acknowledgement) = ibc_acks.get(&acknowledgement.into_vec()) + else { + return Ok(()); + }; // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address if acknowledgement.is_successful() { @@ -460,10 +473,10 @@ where )?; let token = namada_ibc::received_ibc_token( ibc_denom, - &msg.port_id_on_a, - &msg.chan_id_on_a, - &msg.port_id_on_b, - &msg.chan_id_on_b, + &msg.message.packet.port_id_on_a, + &msg.message.packet.chan_id_on_a, + &msg.message.packet.port_id_on_b, + &msg.message.packet.chan_id_on_b, ) .into_storage_result() .map_err(Error::NativeVpError)?; @@ -487,45 +500,37 @@ where fn apply_ibc_packet( &self, mut acc: ChangedBalances, - ibc_event: &Event, + ibc_msg: &IbcMessage, keys_changed: &BTreeSet, + ibc_acks: &BTreeMap, AcknowledgementStatus>, ) -> Result { - // Try to extract an IBC packet from this event - let Ok(msg) = ibc_events::packet_from_event_attributes( - &ibc_event.clone().into_attributes(), - ) else { - return Ok(acc); - }; - // Check if this is a Transfer packet - let Ok(packet_data) = serde_json::from_slice::(&msg.data) - else { - return Ok(acc); - }; - - // Get the packet commitment from post-storage that corresponds - // to this event - let addr = TAddrData::Ibc(packet_data.receiver.to_string()); - acc.decoder - .insert(ibc_taddr(packet_data.receiver.to_string()), addr); - - match ibc_event.kind().sub_domain() { + match ibc_msg { // This event is emitted on the sender - SEND_PACKET_EVENT => { - self.apply_send_packet( - &mut acc, - msg, - packet_data, - keys_changed, - )?; + IbcMessage::Transfer(msg) => { + // Get the packet commitment from post-storage that corresponds + // to this event + let receiver = msg.message.packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver), addr); + self.apply_send_packet(&mut acc, msg, keys_changed)?; } // This event is emitted on the receiver - WRITE_ACK_EVENT => { + IbcMessage::RecvPacket(msg) => { + // Check if this is a Transfer packet + let Ok(packet_data) = serde_json::from_slice::( + &msg.message.packet.data, + ) else { + return Ok(acc); + }; + let receiver = packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver), addr); self.apply_write_ack( &mut acc, - ibc_event, msg, - packet_data, + &packet_data, keys_changed, + ibc_acks, )?; } // Ignore all other IBC events @@ -584,6 +589,7 @@ where fn validate_state_and_get_transfer_data( &self, keys_changed: &BTreeSet, + ibc_msgs: &[IbcMessage], ) -> Result { // Get the changed balance keys let mut counterparts_balances = @@ -594,18 +600,36 @@ where .try_fold(ChangedBalances::default(), |acc, account| { self.apply_balance_change(acc, account) })?; + + // Collect the various packet acknowledgements + let mut ibc_acks = BTreeMap::new(); + let ibc_events = self.ctx.state.write_log().get_events_of::(); + for ibc_event in ibc_events { + if ibc_event.kind().sub_domain() == WRITE_ACK_EVENT { + let acknowledgement = ibc_event + .raw_read_attribute::>() + .ok_or_err_msg( + "packet_ack attribute missing from \ + write_acknowledgement", + )?; + let acknowledgement: AcknowledgementStatus = + serde_json::from_slice(acknowledgement.as_ref()) + .wrap_err("Decoding acknowledment failed")?; + let commitment = + compute_ack_commitment(&acknowledgement.clone().into()); + ibc_acks.insert(commitment.into_vec(), acknowledgement); + } + } + let ibc_addr = TAddrData::Addr(IBC); // Enable decoding the IBC address hash changed_balances.decoder.insert(addr_taddr(IBC), ibc_addr); - // Extract the IBC events - let mut ibc_events = - self.ctx.state.write_log().get_events_of::(); // Go through the IBC events and note the balance chages they imply let changed_balances = - ibc_events.try_fold(changed_balances, |acc, ibc_event| { + ibc_msgs.iter().try_fold(changed_balances, |acc, ibc_msg| { // Apply all IBC packets to the changed balances structure - self.apply_ibc_packet(acc, ibc_event, keys_changed) + self.apply_ibc_packet(acc, ibc_msg, keys_changed, &ibc_acks) })?; Ok(changed_balances) @@ -619,7 +643,7 @@ where ) -> Result<()> { let epoch = self.ctx.get_block_epoch()?; let conversion_state = self.ctx.state.in_mem().get_conversion_state(); - let shielded_tx = self.ctx.get_shielded_action(tx_data)?; + let (shielded_tx, ibc_msgs) = self.ctx.get_shielded_action(tx_data)?; if u64::from(self.ctx.get_block_height()?) > u64::from(shielded_tx.expiry_height()) @@ -635,7 +659,7 @@ where let mut transparent_tx_pool = shielded_tx.sapling_value_balance(); // Check the validity of the keys and get the transfer data let mut changed_balances = - self.validate_state_and_get_transfer_data(keys_changed)?; + self.validate_state_and_get_transfer_data(keys_changed, &ibc_msgs)?; let masp_address_hash = addr_taddr(MASP); verify_sapling_balancing_value( diff --git a/crates/vp_env/src/lib.rs b/crates/vp_env/src/lib.rs index a4931c31b7..0ab1815e9b 100644 --- a/crates/vp_env/src/lib.rs +++ b/crates/vp_env/src/lib.rs @@ -126,17 +126,20 @@ where fn get_shielded_action( &self, batched_tx: &BatchedTxRef<'_>, - ) -> Result { + ) -> Result<(Transaction, Vec), namada_storage::Error> { let data = batched_tx .tx .data(batched_tx.cmt) .ok_or_err_msg("No transaction data")?; + let mut msgs = vec![]; let transfer = match Transfer::try_from_slice(&data) { Ok(transfer) => Some(transfer), Err(_) => { - match decode_message(&data).map_err(|_| { + let msg = decode_message(&data).map_err(|_| { namada_storage::Error::new_const("Unknown IBC message") - })? { + })?; + msgs.push(msg.clone()); + match msg { IbcMessage::Transfer(msg) => msg.transfer, IbcMessage::NftTransfer(msg) => msg.transfer, IbcMessage::RecvPacket(msg) => msg.transfer, @@ -156,7 +159,7 @@ where .get_section(&shielded_hash) .and_then(|x| x.as_ref().masp_tx()) .ok_or_err_msg("unable to find shielded section")?; - Ok(masp_tx) + Ok((masp_tx, msgs)) } /// Charge the provided gas for the current vp From 08e56643fd65d42de3cf854122ab1fe74698f7ac Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Fri, 14 Jun 2024 11:34:01 +0200 Subject: [PATCH 10/39] Subdivided some functions involved in processing IBC packets. --- crates/core/src/masp.rs | 6 +- crates/namada/src/ledger/native_vp/masp.rs | 223 ++++++++++++--------- 2 files changed, 136 insertions(+), 93 deletions(-) diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index 4255983854..0cd54ebc41 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -491,7 +491,7 @@ impl Display for TransferSource { /// Represents the pre-image to a TransparentAddress #[derive(Debug, Clone, BorshDeserialize, BorshSerialize, BorshDeserializer)] pub enum TAddrData { - /// A transparent address + /// A transparent address within Namada Addr(Address), /// An IBC address Ibc(String), @@ -509,7 +509,7 @@ impl TAddrData { } /// Get the contained IBC receiver, if any - pub fn payment_address(&self) -> Option { + pub fn ibc_receiver_address(&self) -> Option { match self { Self::Ibc(address) => Some(address.clone()), _ => None, @@ -583,7 +583,7 @@ impl TransferTarget { } } - /// Get the contained MaybeIbcAddress, if any + /// Get the contained TAddrData, if any pub fn t_addr_data(&self) -> Option { match self { Self::Address(x) => Some(TAddrData::Addr(x.clone())), diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 0d32b9199a..ffc092515e 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -17,11 +17,15 @@ use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; use namada_core::ibc::apps::transfer::types::is_sender_chain_source; +use namada_core::ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; +use namada_ibc::apps::transfer::types::PrefixedDenom; +use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; +use namada_ibc::core::host::types::identifiers::Sequence; use namada_ibc::event::{IbcEvent, PacketAck}; use namada_ibc::{IbcCommonContext, IbcMessage}; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; @@ -333,34 +337,30 @@ where Ok(token.as_ref().to_string()) } - // Apply the given send packet to the changed balances structure - fn apply_send_packet( + // Find the given IBC message in the changed keys and return the associated + // sequence number + fn search_ibc_transfer( &self, - acc: &mut ChangedBalances, - msg: &MsgTransfer, + message: &IbcMsgTransfer, keys_changed: &BTreeSet, - ) -> Result<()> { + ) -> Result> { // Compute the packet commitment for this message - let Ok(packet_data_bytes) = - serde_json::to_vec(&msg.message.packet_data) - else { - return Ok(()); - }; + let packet_data_bytes = serde_json::to_vec(&message.packet_data) + .map_err(native_vp::Error::new)?; let packet_commitment = VpValidationContext::<'a, 'a, S, CA>::compute_packet_commitment( &packet_data_bytes, - &msg.message.timeout_height_on_b, - &msg.message.timeout_timestamp_on_b, + &message.timeout_height_on_b, + &message.timeout_timestamp_on_b, ); // Try to find a key change with the same port, channel, and commitment // as this message and note its sequence number - let mut seq_on_a = None; for key in keys_changed { let Some(path) = is_ibc_commitment_key(key) else { continue; }; - if path.port_id == msg.message.port_id_on_a - && path.channel_id == msg.message.chan_id_on_a + if path.port_id == message.port_id_on_a + && path.channel_id == message.chan_id_on_a { let Some(storage_commitment): Option = self.ctx.read_bytes_post(key)?.map(Into::into) @@ -369,54 +369,66 @@ where continue; }; if packet_commitment == storage_commitment { - seq_on_a = Some(path.sequence); - break; + return Ok(Some(path.sequence)); } } } - // If a key change with the same port, channel, and commitment as this - // message cannot be found, then ignore this message - if seq_on_a.is_none() { - return Ok(()); - } + Ok(None) + } - // Since IBC denominations are derived from Addresses - // when sending, we have to do a reverse look-up of the - // relevant token Address - let token = acc - .ibc_denoms - .get(&msg.message.packet_data.token.denom.to_string()) + // Try to determine which address would cause query_ibc_denom to yield the + // supplied denom + fn reverse_query_ibc_denom( + denom: &PrefixedDenom, + ibc_denoms: &BTreeMap, + ) -> Option

{ + ibc_denoms + .get(&denom.to_string()) .cloned() // If the reverse lookup failed, then guess the Address // that might have yielded the IBC denom. However, // guessing an IBC token address cannot possibly be // correct due to the structure of query_ibc_denom .or_else(|| { - Address::decode(msg.message.packet_data.token.denom.to_string()) - .ok() - .filter(|x| { - !matches!( - x, - Address::Internal(InternalAddress::IbcToken(_)) - ) - }) + Address::decode(denom.to_string()).ok().filter(|x| { + !matches!( + x, + Address::Internal(InternalAddress::IbcToken(_)) + ) + }) }) - .ok_or_err_msg("Unable to decode IBC token")?; + } + + // Apply the given send packet to the changed balances structure + fn apply_send_packet( + &self, + mut acc: ChangedBalances, + msg: &MsgTransfer, + keys_changed: &BTreeSet, + ) -> Result { + // If a key change with the same port, channel, and commitment as this + // message cannot be found, then ignore this message + if self + .search_ibc_transfer(&msg.message, keys_changed)? + .is_none() + { + return Ok(acc); + }; + + // Since IBC denominations are derived from Addresses + // when sending, we have to do a reverse look-up of the + // relevant token Address + let Some(token) = Self::reverse_query_ibc_denom( + &msg.message.packet_data.token.denom, + &acc.ibc_denoms, + ) else { + return Ok(acc); + }; let delta = ValueSum::from_pair( token.clone(), Amount::from_uint(Uint(*msg.message.packet_data.token.amount), 0) .unwrap(), ); - // Required for the packet's receiver to get funds - let post_entry = acc - .post - .entry(ibc_taddr(msg.message.packet_data.receiver.to_string())) - .or_insert(ValueSum::zero()); - // Enable funds to be received by the receiver in the - // IBC packet - *post_entry = - checked!(post_entry + &delta).map_err(native_vp::Error::new)?; - // If there is a transfer to the IBC account, then deduplicate the // balance increase since we already accounted for it above if is_sender_chain_source( @@ -429,41 +441,57 @@ where *post_entry = checked!(post_entry - &delta).map_err(native_vp::Error::new)?; } - Ok(()) + // Required for the packet's receiver to get funds + let post_entry = acc + .post + .entry(ibc_taddr(msg.message.packet_data.receiver.to_string())) + .or_insert(ValueSum::zero()); + // Enable funds to be received by the receiver in the + // IBC packet + *post_entry = + checked!(post_entry + &delta).map_err(native_vp::Error::new)?; + + Ok(acc) } - // Apply the given write acknowledge to the changed balances structure - fn apply_write_ack( + // Get the acknowledgement status associated with the given message + fn get_msg_ack( &self, - acc: &mut ChangedBalances, - msg: &MsgRecvPacket, - packet_data: &PacketData, + message: &IbcMsgRecvPacket, keys_changed: &BTreeSet, ibc_acks: &BTreeMap, AcknowledgementStatus>, - ) -> Result<()> { + ) -> Result> { // Ensure that the event corresponds to the current changes // to storage let ack_key = storage::ack_key( - &msg.message.packet.port_id_on_a, - &msg.message.packet.chan_id_on_a, - msg.message.packet.seq_on_a, + &message.packet.port_id_on_a, + &message.packet.chan_id_on_a, + message.packet.seq_on_a, ); if !keys_changed.contains(&ack_key) { // Otherwise ignore this event - return Ok(()); + return Ok(None); } let acknowledgement = match self.ctx.read_bytes_post(&ack_key)? { Some(value) => AcknowledgementCommitment::from(value), - None => return Ok(()), - }; - // Get the pre-image of the acknowledgement commitment - let Some(acknowledgement) = ibc_acks.get(&acknowledgement.into_vec()) - else { - return Ok(()); + None => return Ok(None), }; + Ok(ibc_acks.get(&acknowledgement.into_vec()).cloned()) + } + + // Apply the given write acknowledge to the changed balances structure + fn apply_write_ack( + &self, + mut acc: ChangedBalances, + msg: &MsgRecvPacket, + packet_data: &PacketData, + keys_changed: &BTreeSet, + ibc_acks: &BTreeMap, AcknowledgementStatus>, + ) -> Result { // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address - if acknowledgement.is_successful() { + if matches!(self.get_msg_ack(&msg.message, keys_changed, ibc_acks)?, Some(ack) if ack.is_successful()) + { // Mirror how the IBC token is derived in // gen_ibc_shielded_transfer in the non-refund case let ibc_denom = self.query_ibc_denom( @@ -492,7 +520,7 @@ where *pre_entry = checked!(pre_entry + &delta).map_err(native_vp::Error::new)?; } - Ok(()) + Ok(acc) } // Apply relevant IBC packets to the changed balances structure @@ -511,7 +539,7 @@ where let receiver = msg.message.packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); - self.apply_send_packet(&mut acc, msg, keys_changed)?; + acc = self.apply_send_packet(acc, msg, keys_changed)?; } // This event is emitted on the receiver IbcMessage::RecvPacket(msg) => { @@ -524,8 +552,8 @@ where let receiver = packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); - self.apply_write_ack( - &mut acc, + acc = self.apply_write_ack( + acc, msg, &packet_data, keys_changed, @@ -547,6 +575,7 @@ where let denom = read_denom(&self.ctx.pre(), token)?.ok_or_err_msg( "No denomination found in storage for the given token", )?; + // Record the token without an epoch to facilitate later decoding unepoched_tokens(token, denom, &mut result.tokens)?; let counterpart_balance_key = balance_key(token, counterpart); let pre_balance: Amount = self @@ -569,14 +598,17 @@ where result .decoder .insert(address_hash, TAddrData::Addr(counterpart.clone())); + // Finally record the actual balance change starting with the initial + // state let pre_entry = result.pre.entry(address_hash).or_insert(ValueSum::zero()); - let post_entry = - result.post.entry(address_hash).or_insert(ValueSum::zero()); *pre_entry = checked!( pre_entry + &ValueSum::from_pair((*token).clone(), pre_balance) ) .map_err(native_vp::Error::new)?; + // And then record thee final state + let post_entry = + result.post.entry(address_hash).or_insert(ValueSum::zero()); *post_entry = checked!( post_entry + &ValueSum::from_pair((*token).clone(), post_balance) ) @@ -584,41 +616,55 @@ where Result::<_>::Ok(result) } - // Check that transfer is pinned correctly and record the balance changes - fn validate_state_and_get_transfer_data( + // Collect the various packet acknowledgements and store them by their + // commitments + fn extract_ibc_acknowledgements( &self, - keys_changed: &BTreeSet, - ibc_msgs: &[IbcMessage], - ) -> Result { - // Get the changed balance keys - let mut counterparts_balances = - keys_changed.iter().filter_map(is_any_token_balance_key); - - // Apply the balance changes to the changed balances structure - let mut changed_balances = counterparts_balances - .try_fold(ChangedBalances::default(), |acc, account| { - self.apply_balance_change(acc, account) - })?; - - // Collect the various packet acknowledgements + ) -> Result, AcknowledgementStatus>> { let mut ibc_acks = BTreeMap::new(); let ibc_events = self.ctx.state.write_log().get_events_of::(); for ibc_event in ibc_events { if ibc_event.kind().sub_domain() == WRITE_ACK_EVENT { + // Packet acknowledgements are an attribute of the IBC Write + // Acknowledgement event let acknowledgement = ibc_event .raw_read_attribute::>() .ok_or_err_msg( "packet_ack attribute missing from \ write_acknowledgement", )?; + // Acknowledgements adhere to the AcknowledgementStatus format let acknowledgement: AcknowledgementStatus = serde_json::from_slice(acknowledgement.as_ref()) .wrap_err("Decoding acknowledment failed")?; let commitment = compute_ack_commitment(&acknowledgement.clone().into()); + // Store the acknowledgements by their commitment to facilitate + // reverse lookups on the commitments placed in storage ibc_acks.insert(commitment.into_vec(), acknowledgement); } } + Ok(ibc_acks) + } + + // Check that transfer is pinned correctly and record the balance changes + fn validate_state_and_get_transfer_data( + &self, + keys_changed: &BTreeSet, + ibc_msgs: &[IbcMessage], + ) -> Result { + // Get the changed balance keys + let mut counterparts_balances = + keys_changed.iter().filter_map(is_any_token_balance_key); + + // Apply the balance changes to the changed balances structure + let mut changed_balances = counterparts_balances + .try_fold(ChangedBalances::default(), |acc, account| { + self.apply_balance_change(acc, account) + })?; + + // Collect the various packet acknowledgements + let ibc_acks = self.extract_ibc_acknowledgements()?; let ibc_addr = TAddrData::Addr(IBC); // Enable decoding the IBC address hash @@ -777,9 +823,6 @@ where } } } - } else if let Some(TAddrData::Ibc(_)) = - changed_balances.decoder.get(&signer) - { } else if let Some(TAddrData::Addr(signer)) = changed_balances.decoder.get(&signer) { From a2854e77cd72ce0a99c217bf0132ce8cb1e746e4 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 19 Jun 2024 08:00:48 +0200 Subject: [PATCH 11/39] Now map denominations to tokens using ibc_token instead of reverse_query_denom. --- crates/core/src/token.rs | 9 +++ crates/namada/src/ledger/native_vp/masp.rs | 42 ++----------- wasm/checksums.json | 56 +++++++++--------- wasm_for_tests/tx_fail.wasm | Bin 225896 -> 225896 bytes wasm_for_tests/tx_infinite_guest_gas.wasm | Bin 224623 -> 224623 bytes wasm_for_tests/tx_infinite_host_gas.wasm | Bin 248538 -> 248538 bytes wasm_for_tests/tx_invalid_data.wasm | Bin 258177 -> 258177 bytes wasm_for_tests/tx_memory_limit.wasm | Bin 258780 -> 258780 bytes wasm_for_tests/tx_no_op.wasm | Bin 224702 -> 224702 bytes wasm_for_tests/tx_proposal_code.wasm | Bin 331597 -> 331597 bytes .../tx_proposal_ibc_token_inflation.wasm | Bin 310387 -> 310387 bytes wasm_for_tests/tx_proposal_masp_reward.wasm | Bin 283536 -> 283536 bytes wasm_for_tests/tx_read_storage_key.wasm | Bin 287082 -> 287082 bytes wasm_for_tests/tx_write.wasm | Bin 290055 -> 290055 bytes wasm_for_tests/vp_always_false.wasm | Bin 260848 -> 260864 bytes wasm_for_tests/vp_always_true.wasm | Bin 260302 -> 260318 bytes wasm_for_tests/vp_eval.wasm | Bin 294647 -> 294647 bytes wasm_for_tests/vp_infinite_guest_gas.wasm | Bin 259976 -> 259976 bytes wasm_for_tests/vp_infinite_host_gas.wasm | Bin 263710 -> 263710 bytes wasm_for_tests/vp_memory_limit.wasm | Bin 293909 -> 293925 bytes wasm_for_tests/vp_read_storage_key.wasm | Bin 300556 -> 300556 bytes 21 files changed, 43 insertions(+), 64 deletions(-) diff --git a/crates/core/src/token.rs b/crates/core/src/token.rs index aead0e1b37..5c855fdb8f 100644 --- a/crates/core/src/token.rs +++ b/crates/core/src/token.rs @@ -942,6 +942,15 @@ impl From for IbcAmount { } } +impl TryFrom for Amount { + type Error = AmountParseError; + + fn try_from(amount: IbcAmount) -> Result { + let uint = Uint(primitive_types::U256::from(amount).0); + Self::from_uint(uint, 0) + } +} + impl From for IbcAmount { fn from(amount: DenominatedAmount) -> Self { amount.amount.into() diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index ffc092515e..8a47ffd69e 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -23,10 +23,10 @@ use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; -use namada_ibc::apps::transfer::types::PrefixedDenom; use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; use namada_ibc::core::host::types::identifiers::Sequence; use namada_ibc::event::{IbcEvent, PacketAck}; +use namada_ibc::storage::ibc_token; use namada_ibc::{IbcCommonContext, IbcMessage}; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; @@ -92,7 +92,6 @@ where struct ChangedBalances { tokens: BTreeMap, decoder: BTreeMap, - ibc_denoms: BTreeMap, pre: BTreeMap>, post: BTreeMap>, } @@ -376,29 +375,6 @@ where Ok(None) } - // Try to determine which address would cause query_ibc_denom to yield the - // supplied denom - fn reverse_query_ibc_denom( - denom: &PrefixedDenom, - ibc_denoms: &BTreeMap, - ) -> Option
{ - ibc_denoms - .get(&denom.to_string()) - .cloned() - // If the reverse lookup failed, then guess the Address - // that might have yielded the IBC denom. However, - // guessing an IBC token address cannot possibly be - // correct due to the structure of query_ibc_denom - .or_else(|| { - Address::decode(denom.to_string()).ok().filter(|x| { - !matches!( - x, - Address::Internal(InternalAddress::IbcToken(_)) - ) - }) - }) - } - // Apply the given send packet to the changed balances structure fn apply_send_packet( &self, @@ -418,11 +394,11 @@ where // Since IBC denominations are derived from Addresses // when sending, we have to do a reverse look-up of the // relevant token Address - let Some(token) = Self::reverse_query_ibc_denom( - &msg.message.packet_data.token.denom, - &acc.ibc_denoms, - ) else { - return Ok(acc); + let denom = msg.message.packet_data.token.denom.to_string(); + let token = if denom.contains('/') { + ibc_token(denom) + } else { + Address::decode(denom).into_storage_result()? }; let delta = ValueSum::from_pair( token.clone(), @@ -586,12 +562,6 @@ where .ctx .read_post(&counterpart_balance_key)? .unwrap_or_default(); - // Make it possible to decode IBC tokens - result.ibc_denoms.insert( - self.query_ibc_denom(token.to_string(), Some(counterpart)) - .map_err(native_vp::Error::new)?, - token.clone(), - ); // Public keys must be the hash of the sources/targets let address_hash = addr_taddr(counterpart.clone()); // Enable the decoding of these counterpart addresses diff --git a/wasm/checksums.json b/wasm/checksums.json index 0b4f16240e..7a7cf8ba13 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,30 +1,30 @@ { - "tx_become_validator.wasm": "tx_become_validator.7f9c617b95c896a2bca2254c243462e97448b4497be10c7dc9b82c2eca466ab7.wasm", - "tx_bond.wasm": "tx_bond.3f092cd6f6eb933e472c26a3a8e9a8557bf753ed9052a6b853c358e6ae625aaf.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.f94abdd2e3c3214d57948df678f8faffba2e57221dffeab8e13f2307d59e3625.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.a122f6063f420fba60707bd3b73d413fb1f0ab102640abcdf3c964d30ee4c4d3.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.149d3c6698aba20593195705286e31cfbb6efd58a471d1275aa0d4aa8941cb2d.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.3d27a92fffe0c0fecaf75bd72caa8e75e44fed7694722cb1685b0284865b7a75.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.f5d4b55665f6d93e04269ba13cb8948cbd8f2467a9c4f5ee87bfff19474ee331.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.fed18f611ef760148b3b520e39d2be652636a8ef71e230451b55410310c1746b.wasm", - "tx_ibc.wasm": "tx_ibc.8d22e398c6733a7ad5ae790a4700eaa3fd258bf1c0eb42501d0c3db4f3d44493.wasm", - "tx_init_account.wasm": "tx_init_account.8bb6fc6385760c1a6b418485faafacf145ab24ecceb4dde5f3f0ec2dd0eded86.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.4eae3c7b76ad3f21183f59049d2298d8e2de708e52ce45aed3497b2e666f5552.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.415a5877d9facde274d143b297bf0cfbfcf145f376ea0c7d29e7ac3c4f25358a.wasm", - "tx_redelegate.wasm": "tx_redelegate.a118a4ea3115db74fff25e4465f166c2fec685ce550392ecf248a81bc2ad8485.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.069ed9ba68456be9869dbd513988e661a10034b7c043bfeebbd55d6d978486c1.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.ef24fb7148b362eb8955f80b42b273bea32efcc4d6d29af3a0db72e6483f1193.wasm", - "tx_shielded_transfer.wasm": "tx_shielded_transfer.655649ca38b7059b7cdd71c051ba2f31d30ebfdb52aff1e8ebac838b1c325f7e.wasm", - "tx_shielding_transfer.wasm": "tx_shielding_transfer.21d05af93c3a6f85ac4e7e26f24d4cb115dd507abeea2e2794227c55fcf12ece.wasm", - "tx_transfer.wasm": "tx_transfer.466af88a669f8474cbef15bcea910c4a6ec9d7ac84617f8cf808e29b9cf0b013.wasm", - "tx_transparent_transfer.wasm": "tx_transparent_transfer.a73bf788b11908b1e862d5034878cc80796b81ebbb7ad59d67d87cbc6f9fb476.wasm", - "tx_unbond.wasm": "tx_unbond.fc91d2aa4741521e7c0365ecf2eef314ef1366702e674c464bbe12536a5fe834.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.80c9c530748a04bb912c7b4372efe50023f14a320916e1050accb7984e2adffb.wasm", - "tx_unshielding_transfer.wasm": "tx_unshielding_transfer.0f3f31e2246833d70c3d1dfc9f2f3a2921b436ef9650177faca7150d34b9f6af.wasm", - "tx_update_account.wasm": "tx_update_account.d5c6e491d392d1d43c7c3eb1e3933230bc2116a50711439ce669415720bd2ac6.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.78c557501f9a491a435aabfe360ada78efbf2d422649beb33cff29f3e47b203f.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.31101166d6143104b17317016226d0d80620784bb4f225ecad93043798684015.wasm", - "tx_withdraw.wasm": "tx_withdraw.0bedcf46c3861475a087a32167f1a7e9b2dad2e9de24d7cde3892e8471da2ba8.wasm", - "vp_implicit.wasm": "vp_implicit.2198580b272e8bacdd318ad8101c1dc1b54856a8df612e7a0b61e6452dc214e1.wasm", - "vp_user.wasm": "vp_user.de83f50342ef3ad78218e675a4f3c94e375ec11e2b2718a4d003b4e5991e3889.wasm" + "tx_become_validator.wasm": "tx_become_validator.e7df6f1c325ee806fee95c30a11246b3e2330c6002783074bd04b6a5998f245d.wasm", + "tx_bond.wasm": "tx_bond.8a6d2ae51d45d1158698771c30a17082940fce2b9a78f6a7f923b5f7e868673b.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.15accaf56e6fbd893148f79d4221bb0fdca4a87d9b0c19cdc68ede9851deb579.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.28bea8969a729109dceae5297aa1bbd10f2737db01a0cb99689e325eeac4c616.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.9d3eac2909df762cad56f5637071b1176d997b346bb5b9241cb2bd848f0435e8.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.d5a7c0758911deb50dd4a0c0ee30cd2f012c4f2298f265b81c8a5a3099ca0cd1.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.7ce4a02d2975d0fce0184928514c9c367dea215fc85c5a57ee97eaf210e1e96e.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.8f6f5656532d1d48e458d7bddf1f426e8560a86c2e91fc44847bb95f181269b2.wasm", + "tx_ibc.wasm": "tx_ibc.6b21da1fdb95f1c98cb85b2c3345476c14ff487010cc3f3bcc3cdf30c0dffc93.wasm", + "tx_init_account.wasm": "tx_init_account.60291c66452b637dbe886ee6389ac730a13b36d6839e7328be8d7addd7ef562d.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.53564391242ecdab3a0b205b6bae743bc1bccbb300a68bd1e12eab0c98c9aebd.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.c5dbeb071983ea2b7b87179771e65b845efa2552239437407716c21e328a470f.wasm", + "tx_redelegate.wasm": "tx_redelegate.6f65111cb6c8277a0709c204f3cd85f84cea8c07869efe4c7c821fc4341871c1.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.8791257f6474e6dd759161c202cd25943ae1f464dbaf6533fa4e7f7b1ebfd99f.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.a86d975548a13167f095223764d690aceafe9faad797bc2004d9bd5185ca4307.wasm", + "tx_shielded_transfer.wasm": "tx_shielded_transfer.2c2dccc5c5925580bf955fdbff0e8724e8381645ab76584d52fd8515fa3d8805.wasm", + "tx_shielding_transfer.wasm": "tx_shielding_transfer.6ad3817afe35fc5d1cc0f124a4bc6f02a8ec0802b97d606555c839d45a4bf1b4.wasm", + "tx_transfer.wasm": "tx_transfer.8acfe426d01adc17018c07b1c9f2eb3f77ddff4a6e452c8d5ae16832a0e79c85.wasm", + "tx_transparent_transfer.wasm": "tx_transparent_transfer.2f18f3a8895625fcd69be2aa587e9fc82eb5fd3cb7df305f70e915eb040899bd.wasm", + "tx_unbond.wasm": "tx_unbond.4f88701b831ca58847ee9d03f15a92a641781a4f3142f61648a840a43c9de59c.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.4ebc6c6dedd6587b033eaebd69725cce91f02ac47b695479d3a96eadd6b1f831.wasm", + "tx_unshielding_transfer.wasm": "tx_unshielding_transfer.e238a486605d9c38ca483f34efd8f8cf62156662adba3e9f82f63424eb749413.wasm", + "tx_update_account.wasm": "tx_update_account.26daf5e95aae1417decc5553b555e4eea80d0f66148718c23d8afc0a80b94649.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.e39ba50d5329a190812bcda5e511f357fa87e9cc53ab12598e09ed777c5e9222.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.abd17ec3f379f6255819c6a1f375e135f8e5c91a7cfa04cf655953f2e7a69553.wasm", + "tx_withdraw.wasm": "tx_withdraw.f58f27408ce18ce9cf4e1fe0f8a0acd16533bb431aa64913776acc36bbd91d2f.wasm", + "vp_implicit.wasm": "vp_implicit.6432b1d7ae9dcd3c17b7643f0ac4f799e6366a5fb08d483e369ba0994568596d.wasm", + "vp_user.wasm": "vp_user.6b9e7d5eb43e69281728376855790e0a893a9c6d39d4451f286f0d1f83a662f5.wasm" } \ No newline at end of file diff --git a/wasm_for_tests/tx_fail.wasm b/wasm_for_tests/tx_fail.wasm index f145bea35f7f4d3e34f22e178507a3c69f6381da..171d9afa74bda0e4c3ddf5bb42981a09760d38c4 100755 GIT binary patch delta 495 zcmZvYPe>GT6vyZLc4pRvrp8umYcmI9rKO~T4uV1sc?gOG6Y{2BBvxVjL#H|{8|3Cj z6pOv;QXZlXLBSk;P@1)_JL-xA6?E&6uCsyR5=eTme%sQ`cX(gkdwjl+_q-*;TQXkX zqgqV{X}YE#RBAL$Hx*}`&HxLURo}V5dzz&=`aoHyQ~lJ?Fr7>!6f0zr{ZNmY)hhVE za!xco@?pYRj5vhJO!CkZnVX{Rveg%TyHiTI^}4?{_s_#;C)Aj=%dRtX&hwKSJ22^t zpFLHMTith62iY~3qo~Av(v&^!(&+~|$(+irR$M&GM(AD)MnMf#R(4^QEm*s6m{(q6Z zz5A+)qWvmt6H1xn#%t1dN1`$nk33u@CDb?J_GSOhP-6+rGFQg}-mHCVN4*^-dwTEA zCcZRuR>R!su@Nygf|ZMK#OOzCC0?xIq|t(5DlyZW<)52-01?mbk}dBoXncPO_fX7S4+eSL zZPLVc7X5kWT*@vr^c#->dKGg@#k6jU0ci5 z&KC&CBiorUnR^?#r~UP={Upb7E8&o=c1>*lOFMaBtIX~@=k^tv!YD?#j%XG|_2nJ*5+39hb_H|c(H4$<#3Ma{?JE3tA`pBw zPo|VKco|90`VO!R+wvCp{xVMCIhQU_ z40GID!)Xoa8usYo(;B{Ve*@R}a~->Rq>gUi7Q-^4)O5mo({UVCY2alLbLzH_$^udi zwA1DIey`*g?hSF&#XTB0nEZQAD>BDH_$#KTbWoVVn-3q;wnw z%6v6VXHeo-X^Q#FYwxswW7q?WdX2@Px6Ioz#JaEP-TWp)vsy-Td(`wTY8=-OeY{BJ Mof?OK(61|h0PC2-0RR91 delta 523 zcmZ`#O=uHg5Y3zY)&*;9;%bvvLRZt4ii!s>g$lZgKOmCo!Jm_2O%D;23N01UhNg`- zLkT$MAfCL6@M*s`jX#?RMG);p3p|LB_Ru2g*H(|tVcxu%$D3gmW`hf}!KYU! zOu`iA&VVo*ML_7VWIq+rAn6sorf2k=Udoub5Q~owXEFgN>X7?jLprq1?0-z=<3+>t zRwadSG%AnoU_zzvIq^v6+pP!48!miriOX8+!_9wX-3PbH{Qk>USgjcwZbqb?Mt5sS zN$OhOgo^xm{D=Wh9y*y5C}pRUYC4IIJgRDO4*Q5j#Mr`vKhP6gcYqUcosi;dDLR7* z_EOY|NnT0OISucYutztSmr&=iIzIB4k2XGAM;DL#u({XAZf^OC_xe(HYq0MpAox;| zOx5rWX$vpZz&tDqCBCzWnz#jHh`Z+yW6Q@y_14FmW=yJkVX6pt>U0xbPyXi!HPlOA z1gh+sMw9BlN{=H{U0WLA!7SN)EK3PJPG{++hEpTd&KpPQFs78QJAg6|jM8~b@rP0B zw9BjSbAO{R2#59tW|~7~-ku}Yb1iS_N~yb8-D<< CEx<|u diff --git a/wasm_for_tests/tx_infinite_host_gas.wasm b/wasm_for_tests/tx_infinite_host_gas.wasm index b75e3b32644089dd16508f1fe816950251479610..d83bcbfb5f4141eec02e7919a061e81c0cc9a352 100755 GIT binary patch delta 3337 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 Wc=|BYl7X1=Ne@4Ii1OlLrvD9rj_|1f diff --git a/wasm_for_tests/tx_memory_limit.wasm b/wasm_for_tests/tx_memory_limit.wasm index 4c871537c5641fae67b75a3f86f271f96f114c74..d6c0ddc94a2abc7e443f79579055f0971251e0e9 100755 GIT binary patch delta 2610 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 ILBB5l0o`)HtN;K2 delta 528 zcmZ`#J!n&56n*Eu?=^$QzBDyI#NbmJf3V`CO+_53o)Kmqg%-H zpD^yh95>dnOEx~^O9y88{W?~}UFi3?P(zr{ws1j)Hn0#uQGWDMMZlGh19bi5e@w`w z1l0wqJZ0zsxiC)CL8_*BY6U@FOp~AE84{dN({80Hrs<9XOi+wRGc<_TTeEaCqyr^> zd!I%X*O;Jvd^}5C{?cZe_HW$u!lJ|4a>Ok0)hu!Qu&&Zm+Q_iNpUYG^sBr!V{kruB DUoXKt diff --git a/wasm_for_tests/tx_proposal_code.wasm b/wasm_for_tests/tx_proposal_code.wasm index e62c32e8e4cf7f3af19933c4e3f8037591e5b7f6..c439479c7b98825190fa6edd00e1aa82c30bc562 100755 GIT binary patch delta 3657 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 delta 3666 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 delta 4303 zcma)83sjX=7XJ4>=kmJu!VlbwJVdXWU@D5K*rWn~HI_0xRxYz_df3$Dpcx=Gw#Ehp zNa+-bagXr3`79NXCUXy3}#@YU=re8Rq9JJ?3{DO=0FW-Cp_Oct4aqF{Svtk3x2zFm!b7HEcE zG`}tq^O{7lAM`3(GujVDlh~tv?;ah5rAteOLj0!TG-o8{F*um-W_v@C3Z zIf%zkOP_CHAHq3#;287+I4{0C4#_0qPr!X}PGp{d_>l7|u2qW45@;r_nsZ{Sm)`2u zcX{b8Zv8zcA)Z)go`mF{bOCPjPBMqI{_+`rxBh1@y`NieoFckbk#UM*Z55Rydd@bv zy-bb2X60`E173RO*1zSYN4LIC>DzvZ4%~Wc6GhP`5}V*U<~ECwr=gDIie?z3;NWK3 zk@`lN(hS+?*XFF8&L(mAEF8zqX0fFOqA>T2IM@PVeU_Y2>?>VcKTX4A2gGTbfe%;cYKP}S*DFjR6hkWg-vFulIx(UH7Fag83~|~FD-%~cAX*&n05fb5=Q|+7{*ilH zo0e+WY2r~WRWBDWUxq0*Z_^;M$Rn5GQJ^4VufQaL-7@1UJPf|e&Z)&-5j($Oy~Gb3 zN6`5baVCtnZg%p6Lo*!uW|3;b$Dl&&G~wN_McgpqR1y#S;80Tj%?GcFM23eQp_;>) z7_}US?p&BzC!LWs$AEPGg7^>ODBq3FJ-i|!qOm`0ljEW>o(YJ+A>tp`;2>73#M#C0 zc;+MIb;#;Y&{3;OP+I^cNKWj8V?OY?NJ8u_lYXRI0oKbgw;+w#cDWO?-`|xO3$6b1 z9T*4LepXxrOb-35hlh4O zjHo*UaT1B7ARGpl#Oxp(*X`Lxo>iB`wjj#+MPb%^kW?@-U6e2AxEG*Z#D-vU_p}-2f7VBE?NR2GckF!$@^W#)V-6ilGtsD10Sfk3f!i z1Vq0qu*qx(W+K$eoBc5gV4n=V1E1$4Umb)O07}GjgE2C!#GTDMXm^bpj2KQPZ@!o;-^G>u)E%<6L?}3Q(WZ3l0GI}0vroiNZ`B>-U`Cw%ZrcjhW=iqjVd3!EC4LfD8H_)JRkWape zoEXJ3i|`B2gpqj|OY3n)yEzT5B0CQs=?*zBK!x1qr$TPY!x_+RAstz|d{tVX&8Gvj zPWE4nuLG`Z5g#tWWV`ELa3;mDk!uB!l#3fnun~(}c_oNSE-uCKYI$Fm;UlW*Bi7?$5@qXgU3dA_YpMv;wZ2Y1vjG|1 zaANs8>`u|A6Qkt1j}>FNyi$&fRLbXV#K%k|>$YINIvkHz;Swd!ZpFX=lGkeRAzzZo z`*EVGk^DN>A^Q3NPSy!WH)3D?f86l$$IJM!A}hO!WpMj4RguPsh1c;(*ey<6$7+gn zWhegI@B$!7A>!n|LyWWIzC00=TMUkpMWo7BO>C;ZEnD@|AiYW*bK_@7w}J!XwE8H$N~{Q^ zPUB=5C?*H7FQ^aFYz|SEThvRyuAfqqEUtG;Y^p(hzeUCcvnie`LZc!?eQ5sxwJpm- z*e5|0ywRWiV4*4NxMVu`%j~{idBosKeFL!KOp0oN$@(KCnlmSolE_kyf4sd*o^>zh%SD*Ax{u9SMX6WJr^;AJbU7ygq1EgLrgE>VWKLL+eBRk1B63pc=-3Y>{;E4LtYb(c;S;?_>32B^}_95_^KDaML0z5R7Zxe z7x8xjre^Be6jBb&6rUFHVIj4Ib;1p9N%{_@=W})EhT2K0dLw<@G9D9fKViEIKfR16 zhGY^p6V4*3c24mw;|T$^gkxQ}V;LVdp1-P|+sdwMgGv6Lsw9%+gz0~o_2LVT%vT(< zUwmnL=8NOVPsQW$n@D~RadZVwf*ctx__NH~bIWr@btR7yYghAJFMa%bJnA=8a?X3a yodv6!TSa3v4QKtyw6#3R_Uj3fxcl0(4RzxThqU_*TX diff --git a/wasm_for_tests/tx_proposal_masp_reward.wasm b/wasm_for_tests/tx_proposal_masp_reward.wasm index d31af36dbe66f8645acc943ab9cb98c1b36e9c8d..22bf5ab0c866f95bac7f9925e5156f9cf16b8ee0 100755 GIT binary patch delta 7868 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 delta 7856 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 diff --git a/wasm_for_tests/tx_read_storage_key.wasm b/wasm_for_tests/tx_read_storage_key.wasm index d35652270984375c546a3ea952e71cce9f0a06e7..af1e5307302b533a7fc9f8abfa5d5096cbe0679a 100755 GIT binary patch delta 2731 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 Biwgh% diff --git a/wasm_for_tests/tx_write.wasm b/wasm_for_tests/tx_write.wasm index 79b38f2ede270c5bd7a2ec71c33a6c5dfee216ed..1101a4115ae0f95792a540b79b230851a45d3834 100755 GIT binary patch delta 2629 zcmZ`)e^6A{6@K^JyTZD=_+(jRf|>^rYZ5VW4J1)xd7wfCMI|aAPQo-}WfcR;kkDoX z)*vBaQ{}a}CS#(uHBzG^xYfrvH1Z=7CXl!mgcu3GY@1GG(lD+Fh}!d(HEwpMf871v z_uX^PJ@=k-&z65Pz5JW$HH+v>y@4^N$HDY~sE-m1EJ#464`R+#x`#~P3*V8;tb^TP zk|nsByhW8>mOSeoRM5BSeJG(WdY*ksx>z^+nq6hzGdFwJxl(sNhPa(%NrirP>E4nO zK?;*VJ~+iDPBQaP%vrtsAcZlzGd}4Iz_?u*S(QlK%Ch8*8hI~y3C<}U$<<`U`9{iC zf^dCxDkW}SQwh&IcdYw+pl0x7=3z3Tv}Ly7rd6Bs(G1CKXXKX6EZFYZpUQR2CK=@r z(Z1LD`|Lp@x_9p0S*Go+G^U4Csi-ITpaE-I-PW9D&<*=X-x$LIQ5v@vugn^3JKCklXA1n~y3_h;7eIZV zGPN-t+WV9>2>rcERioA1)7Mxci2wEM5M;m`MZFvKAs^l3)n_(Y%@aPl(W_@SSxuGw z5B(UF%MBLgY*VE9kdHdmYyCZXIq9S8z4}wlR&%|N9_ZBznyt{@uT(e3Lr=dl)EsXf z^0Cr+t>n)zHXogN^?j&U4m^yFdi6Hc5Bcce)y0b#osUku`i6^Es2^}vTudS`+M#r` zd<^am<#(TN(xCJ6`EaX4f!2jE(xJq(TH$twlGD0!J)!wu*5>h_-{$dutgS25>&zmVWtM0n zMlg7m9cW($)q~E8A zvKQe9vEXO1BuHc)ut?A#P#m?Zahb3UbYohbDYfS9lL6M1%g2n zw!#cbM$|1i5JxOMU7kQ&^%BIBXQ2~OexIMQK{P%kK461x{^tyMD)7)1v=b{!dCCU3 zs@83Xmk2q+!*bz8Db^E8h$KW~7N8(fkXw&7VN&LSfR|r)l-IcE44$?8+cv_} zrpd=na9R@W{8!gtJ=x0-U4!SyoBYZ(*n|+>1M^X=+XTaWM=rdM}lzrZoVzfz2EZ0aRk@bb*A4~DmL?kL3 zZF02eV@70FC_kG2bBj&^P59YVNR99@)yYfqer~r|GmBaanV3>ux)u(5aS`9J4$`zd zpI8Tavas%3JcIlUZtuc+XwXh1yLz?jttr941cMpxO-rkQxsXJ+oiB7y3-8ToI!zMZ+&_a){hNsGhzD8}N{4b@X)!i+Ybl$MIg&qB*os#J10e zpP?}t&WoWA4b>Rhi|t+IvGipfxyeVD&@A0u?a}bBWE!p(ETs`T-8-HWx@0;tl*)lN ziO8LTO#;!QLmb5M;RG6@_RBPbpp(T3bQRpS^L+_)tA;g8=?qo3oQ4p%Y3B!4Qj7ZZ z3aUJTC;IGF`a%E(2(QscreVOd_R$K4c>HbpFZ@4L9hLOoEX=J1WDq@dfGvb#5okg! zU;8>O=08-?DXLgSUk*Tr`R~&l&Ed5p^h3=-(VyrEeC8ap{{->B#C`-gwUZx9W*?b`c8bEU zam{0Zd-35B>c??};&{MM`SCM;T=nDie!Rtxe~CO8#{>V3lk>$t z377pAboucfKR)Qkzw_fmetg)E-$foQOnVs7h-Se1SFm#NL1HcuL9n9C6Ovdu{2`xb oZ)TzDh1JY8o1fmn!XDL5qz%!FKVpVpyC{UHq)$ delta 2589 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 B(h~px delta 9300 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 O0NMj$0r7xdfd2*Y^XkF? delta 9279 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 diff --git a/wasm_for_tests/vp_eval.wasm b/wasm_for_tests/vp_eval.wasm index ccdfade5a7044dcf4d0d4ea0fe4874c94e2d1e42..2e98cc926332f43dd600ef349b756908965d6d6a 100755 GIT binary patch delta 5700 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 O1{z-E%#TJGjsFLl#~cU% diff --git a/wasm_for_tests/vp_infinite_guest_gas.wasm b/wasm_for_tests/vp_infinite_guest_gas.wasm index 4708b7e0d400024687e78f813fac900147c44c52..150f46dd7585bae4427aaa45fe3e76f0d6413d5d 100755 GIT binary patch delta 4004 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 diff --git a/wasm_for_tests/vp_infinite_host_gas.wasm b/wasm_for_tests/vp_infinite_host_gas.wasm index 233b8e33df6df623a2fcfe690c88509febe40098..bc4c215761929990700bca3ea4ca09a205bcf91d 100755 GIT binary patch delta 3435 zcmaJ@4Nz3q6@K^JWfxf%9xNIVF^>ijBWhzTiHea0qmlmsIwG|V=p-ms3Tl#0)v_*{ zV%bK_>*OXKM;)~$t;mqRbY2aJkRsKpt?lrqu2ZWdf`EvvRtad&-S;5Ns@a+IzI*QZ z&bjB_d+xov&nfP6inU!3W;7Aw1f%;$j3%QgNEbH?p!`uZz|U08HC(Y7NuChI^eL|1qo~i zND+QNAw}XXc}<#~+?Ko2Uc_%``bIJ+SEjEcgUa3X!z5(X;i`!{d}u@m2itQUtV(0% zZvn%;nSH_-@xUE6RA*?KbyQOl@;;(IcQ{2ZEeKWa{g46t$06^|UpAIcl{+7Ic)2Hk z2{+FvSO|9<^1f9O@~(nP%xB{2HwnVlH5oK$G%b;56^co*J@3FImj56wPZiesG+1qAB)=Tv`E6Q0lgGf`Z~r$^HgQxrgB5jkb5F-s}yJp5r>rDz4O2y z(@_rZNTfVo?UoSv_D_7|g(Vg_pdw=|YK0$<+U?7umQ<`IV+QO(!+jGP!wKK9QSH=9?L(#jFFJk=S`~iAX#)$O#PJ1 zagpjhNd6iLhmM0N3@R)TBn0CE;bjT1Ar*<^e9!4w{d4|qF6z&oh(bW;6|HmT2~~o36T?M zf<&-Gxz=PLR!?rS1vpcF@Wlv^fB(8@6r-L2HSk`_TS zsb+%_^kX(F9^NH+tdu|~JF*CFz=%WL{R-?S?7%nGVG0K;Y`mqx;X#^`?0z2{k zao@f2fkXrIe-+Bd?$1sOuh4Ekykyjaufjzm`LDV)6|6u8)T(qSp=3}cS&%@WzJn!Y zW8*H{kqw=!Itk{OhxshTkGA8q*r$om&Sob-lI4?j_rwJ=2M$~M_ZsrWum#~h3uoPr;NxDyv%ZO?&g6z~-~pG8B}f9AqLe1_Dw zegKCikzqA#BS?mCc^FL{Dxovbyh9BPkEzBflm!QI5m{AV!3Ub_G?sb;KIeziw;L#dn=WSQ zfoI^HOO5V9C`X&B3QJ1CBllTWtHD%CDj=7n%jRb#lUifL0s5qc5 z&Z500KJCa=G+tesNArziBR9IM`82O)^>RL~=`=ju! zN<&F!j|On*5_@T^IJ)6~$Nid%HkRB^=gs%@;5*@|N2AXB?8Txm9We%F1`2OK&z>8g zXDy!eH1+EN8crTdBGa9O7d2&&t}q1gQpiThL2;Lbs@$dj^7rEI2g4j1kclO+8f7!e Lj`hstV@UizpNmlx delta 3357 zcmaJ@4Nz3q6@K^J$1boeJXkOwnmiIjQZXjhl0+r4#1Z9R+*YNw0i1}EXaV!niE&sL z(_)}i^NiPYC}tv^*ouVqwS6%lLaJ1&PHm?kC{CF`B8IJitv~qNbN4;SvTAnbyzicK zzH{!m@1A$>)>cck)ly?WL9i=?}-(hcvx zf8icD>HpxWdQdzN3|$?{_9c(2Z`(o>^>Mrok11VCCL2T5mi8neLuyjG4Q#_Mr&Ex@ z{vj#G=YCQw4JoTLon%Dm&-^YvBeTlL6{RX`9l4@j&8j2g0lj7(u*ZY}Y)2o2tF1Y| z0nEB)*G5 zh1@->U>J?pcV(D~H&_rR(Z%-y99X za@4x5DU@tcKG_tZ4FAMWnO9;}f-AGflU4@uqyzpuX-VbUvG?XNq2q=b9m?Rg&#|(G zcQ+H*->uB7P9`^%4b@kmv0E+tMLOW(8nzFHlOd(IXtMgpx<8qq?wtC{0WBo_KgPDn ze7*JO+nj=QSxIb~KGD%^I7*w6;LJItv1y7tA@G#$=edG{Etm;OZeLQ57s+an;+v=B zOvvQ+A_eIrtSJ#|nMyxqViNp} zx#qzf{4&|6^I!$^pJQS3A&um*QUZ}|UlLq|iVCgz1=vei*;05B2F@~VDLfslpGrg) z?6P#-#cm#hrQ`<7Xou&>D0Ak*a)b-*kbp+NWiY~iodX>qHbE9-5)b^em!)C$i31PF z!W@`oZst`>AFx&jPFv=H8Kh1rEs9o>FPK0t6dD&2^rRQr$GrNS2S}LBonyZ#g=5_;3j)F8@j|zgqE|x zB#2@*2fUZx|TYr1KpHx^&bUn_!_IPkgOaC&aetm}{WZzyoB=*)xScyH(I!;0p8D=|A!6-u2Y3$%(t?x9{M{qCpUM9!h zKKLoeynZMmx7f;lh|>o80kE%J%>5+>-D2heh-1ZHL0I^0es9?Cky0y>VWw~wcKEmF*OcShQ;eRKBFq<`fO*a-~y&?&bNLzzA6)_x< zhejeMA}&D*MM*}%D35TPx1NSNx7A}zI${P&CJG;CvF(GD`TyWmNtlM}Za0mxZCqEh zq2RUG%U+%WG(>Zb8i{N42dK~K97QUWILv#}Buc6_r)=d|eZ(c76 zPod{ylu0OK`avK44?eo)qc{8L?LPWx)WcB5^0(>!@^QmId;&Us^d2Am3m^TWkM8!- zM||`o-6AEC>|P`-!DP#h?p{nXT} d^xr`~+`S;qqQMew=Hn=HP!_(*di=zc{{sp@N~r(< diff --git a/wasm_for_tests/vp_memory_limit.wasm b/wasm_for_tests/vp_memory_limit.wasm index c2562a129407389055bb16aee1fa5b0ac9b1887c..90df5a10cadad4b91b96d5a62205eef762b6a371 100755 GIT binary patch delta 11807 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 Iz*@ln0xM+6p#T5? delta 11815 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 Z)n*$u%c>*+CIV&v<^tXVEC#Fq{4W+w!*T!s diff --git a/wasm_for_tests/vp_read_storage_key.wasm b/wasm_for_tests/vp_read_storage_key.wasm index 71058527234dec00bc9145b824f3c30379505045..288a937905d8013d6da327f4ed4bbad7be69d7e6 100755 GIT binary patch delta 3294 zcmZ`*4Nz3q6@K^Ji|oRpkAGCehX~q?C~At)D#L3uwvJ5=nutFY@dwy7DvJ>R1F|ZD zRM96~jfgsN#@NBexXfIp{zMbTkTFJ9*OnMmnp$;|w3XD_PNUPFyKhBU73S`F=brD} z^WAgqJNH#LMpQROoES?JnZ**qfLZV#|17?zWF>^z6x1yE>z+jm2-#wsVM*aT;Ro_9 z`<`tHI!Fh^y2(DHi~V}=PWm3*PiyEddY4{ht>hovXum@~&(9WPk?wp_n8N_9r zeRVh4Y`igfEdFkpTok?4RaT~Gpx;v*dNj&*#i3RhwkdB$1zLuq!Cf+C7a=Zp@Kg^a z74EO5Eg>i}rf0E1yL}7A;SziMI8;-Me4@FJ&qzcEM8c@aj&;ZTXL}wvskA=No8;5W77gx8D zN!Oyve1t&P99WbiH_n$S>LxyP0SxPHY4Tfg7QiHE?cfayAYSX`+hQVo6#9nZVu-qq zsM202Zx2+MiNcWSFcck>35te-O;BFZ03S4m+ROKL4`18!efvD?8)k0pfqw(#IWVj@ z@y$1VoAwb8@e}_%2jb`V3cjZY%KH4^!OsTwr?rQ##UDXm2=M_aHc{NUFfjQoeoG@- zdb9HOSUKqVtgJ6$b-RZz^RpV28(7u{Jy6t-T860JW!-%1X%6A}Jk%HQ*we$8Jm0t9 zv%dba9xgH4;(Un9i&D01^h_)rbNMuj&v@noRes?K6mQn8H!AmkqM7|kiO1>Fo zZ9ZI+_8A2b3!NTrFMxqk-&z0}P}3R_SBI0d$MES@Pcv-%HOG+RcIy%JJ64*vaotU~Bl0d8ev#i6uP1pxQ zlL;x+6paiAHUy-wsFmXVjbI0Cr93SOVtH~IxQI&}D}(R)kZPX21LDO;74UEDTH;tG z#M16=-)c2Gtqq%z@K!@AiEi=wc(z(K_&FH|UX*$rkJ$mK{w{|t0KKAcdRrK}$>m%4 zgAFh$c=J^sP5$~CxGv&%LJlGAd_xV)($al|qckNIivz_&6us==Cs?cDm=8t2-@r5f zOJn)*wP1r2SNW;6kQQdPXM$!;HFy=FS!55tLFg-_md5~{jba7R5jbgG4_&;i1~%{y z^T`0dx)zf8kHwG>(|is2IAlm#tSOE}Jcc9`_@a%F%EJp`6XDz_gtL9QuUS&v=FphB zm*+U4KbqD$VF-$PC(JZuob~P?6f>&6^!NeMew#?*@{x^UIkW?cIa!2s=tgq zz722L4FxJF6d_=72@~% z;LB)ID>i-ztNhp8VN%5nH+*JZdMRR46MWPMp<_>hytDZ1(@>4#_GvhZwXQw`(O7dn z_agm?xOf)i^)1rQL8JbHREqsT$1`*BbRHT^=a4$SG?<>Yx@3wV6EeAGrBOV?LT?}} z-imebi8xVhr6L;PlLyn+t##e-aEim2Bp5YoU8CZg#8Kb1sN zc)}1G5!oPJ_5TrP7||eAX&b0E@K=XWZaOB{CDA{SI)Qjb;7%t$Ka|EoYp1wAl)fp? zcUlTvqji5SoEv7I?{h)&fS-Ad-oZqQBh%SHI&$ZKh zbp70p$CH$chYot|CFFdlmQD)B@Hgw}fPUQ+?_125sa?KIBCL^?u%|X++B)Rdj^HP# z=joSF4K;0#K-xB*q*qvkuS%h+?|fmOp{h&d3i@3z2LIK^^ivr;{4;uhbieRO)L3a3(JaVTB#~?6h-+8 zM_(LGE5%t0o14cQSF*wZF?Lmn!`YE22chgJP!)!=Z-@5J4=E?Rg!U@ z|Gkj)x2>}0ugEPfDOx%~o6dD78z=5L*?oZ8<@|avYXI+ZzOIBhN=sI#%1HD&iX#Tc z6a9FAelkE80s83x{X&3#3H1mZPu4$g+Dp49JOK`W4A46Q^lt+6y8-(50eV+}{uuQL zrQcIV4<&%-u3)e6c`KQ&KB>xOq9|j~#@9GmcJziqGhd@{CJl$o-DuJE4tqag90COSx}3RKIM;N`8yu5e~dL_{CbL{~!L9)>!}m delta 3324 zcmZ`*4Nz3q6@K^JyRs|0`dk)4MSOrFjnWWlF)&b+jcMdh zekv$GPrMibvCY&pgC=n^bDai_8pn_^MqCkzBZMTaI*l_Gwbp6lwCCI_uO~SD{pd^H#t8{rZI|@*_qWkkO8yems!Us%xY%}!;cle1HJQTCLw@M4Gsj$>~msyrh zBPGW1>D8pvcx6U1{ua&H7`~%0FHg}xzoEGGaFiX2TP-u}GhcNDTN2RV-88d`kP>gm zix(&<^L{;R6+toWLt)n=SF&0&f`ED zjQ_s&5)zv+|26!-Z~hdhFEm2ujx_GgFY9H8A^q$si6pUS!5s3K>9pVUVBs$)Dd9aw zV3K#^?~YkXy^)mONOl+((!((S-_wsE``U~Rq<1Ph>oZ)!cUcGMkV^j&sD6~WHM{Oo zE4{ndes3oY-Yr|>5dUHsL@nu;ytWU@_T=Otk0%doYad^0AcMXfqJp;AMDY#FgEzk= zU}-{2e^woRB3qu!%Jwu?H~RRp0IO%yg3Efp4~hm*s}a?|tfk*R+Cz9U5A|t0YWw(- zC;JY5+&56x_e^IIwgM6e-170MD`BmaO)FtM^!WIdmGB(g_HoB5m;iTtTweuQ@wa?P z*F9cQ^iOkNc3{y%b#p3)=t_)@rfLKyMC&SGB&;uZmIEY|Uw<7Q$Sl{=;Tf65nPFy` znPFymGXpM3`|M1JfV)1Pl?fxHUYrTj;HXcW$%H9jZIv|iZXX}G8rq=yBJW-eBO-2H z#MuMnVHYgMtAeLiKr;93f;9o9 z7^P^b02|TX?Uej~h6!4+O*CDWT5}ivst5BhwZac)kP&=y4UFN}${^a+ED`QR+;*C+ zDef4oHsKBr{9N8BGd!>Wy1PV!2TBQP6k|6+9E{JCF6v&nlF$@IBMIQr6d3`sV-@{I z!zm1yfP1Cr9SuD7KQw}Om4Y2kxAB{$kmNA0Zh~e_t>ilhokOa4C!x=iYCaU`d=%?| zj>pN#JD`V07sI8&VHiy&lI>4ZOE{^5q5S(Ics8WA%}<6qt6(yZDu;2dF@)rrXci07 z$*R@~cQ#}Jwkw_#2NC>c4wkD#cs9ci1F&qPiXcjC*#`f{&LBK_5J7u8YKzV6W_G;r z#lAvFB;g&GFk=d|*fe;7OoTR+I_I6+Au-TNK$l)FoGx{sn+$(i+$n}-gxu$IOJN=# zR|dZ)clNwRUl9#eFxX1U#Noa0RXC{@Z+`%91lr;OQqK)9d~P<$c#;1xd^7-|$)AAi zaeRI=l%x1tGaN+T<;Nf#`SV3*=}*Mj;~?9;NIC&c`ct-7>;pQ9nZZ+dXb4?M8u{xX zwAof7&nu)tD%Wh(#ivqr>>eqv!%OIW&9? z+AT%AsM9DAQp5MhplLV%B#y@O=ve9utC6ny|HuY>Bp^{~9ii6n>9LfXj$`)3(ZAxc zLp&pJrJbJ~O(USWU0fMWUzN2=ilNoBrh)`4`WFw~Ss(d>V{6l)-(VJ5xHElnFw7q?V`k2#SrBK!XWZ=C-)e?~==no;7 z{MVn-&t&o;pVNBMdzLkGdrr&OMsccz;u~Fwz~j;y8h|kWo#E1$o+KgDE>mkX*&|;3 z7abA?S2Ot{E1ToInyD%a6-D_P#~>V6GsST$Ta?aMtz*-9at_m74gMh1+56-O&-bu#q?;e|u!($o z4qE`8)x0Z*4dwF&Fjd_3ux^08>v;PctN}XK@tkbt&V6&es{9nA9mFvd$3y*4kbWdc z7eRV+kbWjeKZm*#$HVw1O?z(d#DyS-_8|Rgkp5keemzLP8Kn0F=?_qMDuW*}x+ejm nCx`thdZJ`1hZ>M;+^Vt-M Date: Wed, 19 Jun 2024 08:46:51 +0200 Subject: [PATCH 12/39] Removed is_any_shielded_action_balance_key and related code since thats no longer used. --- crates/trans_token/src/storage_key.rs | 41 --------------------------- 1 file changed, 41 deletions(-) diff --git a/crates/trans_token/src/storage_key.rs b/crates/trans_token/src/storage_key.rs index 79200d9890..4b5b132aef 100644 --- a/crates/trans_token/src/storage_key.rs +++ b/crates/trans_token/src/storage_key.rs @@ -192,44 +192,3 @@ pub fn is_any_minted_balance_key(key: &storage::Key) -> Option<&Address> { _ => None, } } - -/// The owner of a shielded action transfer, could be a proper address or the -/// minted subkey -pub enum ShieldedActionOwner<'key> { - /// A proper address - Owner(&'key Address), - /// The mint address - Minted, -} - -impl ShieldedActionOwner<'_> { - /// Convert the shielded action owner to an address - pub fn to_address_ref(&self) -> &Address { - match self { - Self::Owner(addr) => addr, - Self::Minted => &Address::Internal(InternalAddress::Ibc), - } - } - - /// Get the balance key corresponding to this shielded action owner - pub fn to_balance_key(&self, token: &Address) -> storage::Key { - match self { - ShieldedActionOwner::Owner(addr) => balance_key(token, addr), - ShieldedActionOwner::Minted => minted_balance_key(token), - } - } -} - -/// Check if the given storage key is a balance key for a shielded action. If it -/// is, returns the token and the owner addresses. -pub fn is_any_shielded_action_balance_key( - key: &storage::Key, -) -> Option<(&Address, ShieldedActionOwner<'_>)> { - is_any_token_balance_key(key).map_or_else( - || { - is_any_minted_balance_key(key) - .map(|token| (token, ShieldedActionOwner::Minted)) - }, - |[token, owner]| Some((token, ShieldedActionOwner::Owner(owner))), - ) -} From 18fe9893f7a82099edca62504a44296502c42fb3 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 19 Jun 2024 09:43:37 +0200 Subject: [PATCH 13/39] Simplify checking packet acknowledgement by assuming the uniqueness of the success acknowledgement. --- crates/ibc/src/lib.rs | 2 +- crates/namada/src/ledger/native_vp/masp.rs | 83 ++++++---------------- 2 files changed, 23 insertions(+), 62 deletions(-) diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index 15a673c9c6..5bdf40bc22 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -225,7 +225,7 @@ where /// Check the result of receiving the packet by checking the packet /// acknowledgement - fn is_receiving_success( + pub fn is_receiving_success( &self, msg: &IbcMsgRecvPacket, ) -> Result { diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 8a47ffd69e..e6733698c7 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -25,7 +25,6 @@ use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; use namada_ibc::core::host::types::identifiers::Sequence; -use namada_ibc::event::{IbcEvent, PacketAck}; use namada_ibc::storage::ibc_token; use namada_ibc::{IbcCommonContext, IbcMessage}; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; @@ -51,6 +50,7 @@ use crate::ledger::ibc::storage::{ use crate::ledger::native_vp; use crate::ledger::native_vp::ibc::context::VpValidationContext; use crate::ledger::native_vp::{Ctx, NativeVp}; +use crate::sdk::ibc::apps::transfer::types::ack_success_b64; use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; use crate::sdk::ibc::core::channel::types::commitment::{ compute_ack_commitment, AcknowledgementCommitment, PacketCommitment, @@ -60,9 +60,6 @@ use crate::token::MaspDigitPos; use crate::uint::{Uint, I320}; use crate::vm::WasmCacheAccess; -/// Packet event types -const WRITE_ACK_EVENT: &str = "write_acknowledgement"; - #[allow(missing_docs)] #[derive(Error, Debug)] pub enum Error { @@ -338,7 +335,7 @@ where // Find the given IBC message in the changed keys and return the associated // sequence number - fn search_ibc_transfer( + fn find_ibc_transfer_sequence( &self, message: &IbcMsgTransfer, keys_changed: &BTreeSet, @@ -385,7 +382,7 @@ where // If a key change with the same port, channel, and commitment as this // message cannot be found, then ignore this message if self - .search_ibc_transfer(&msg.message, keys_changed)? + .find_ibc_transfer_sequence(&msg.message, keys_changed)? .is_none() { return Ok(acc); @@ -431,12 +428,11 @@ where } // Get the acknowledgement status associated with the given message - fn get_msg_ack( + fn is_receiving_success( &self, message: &IbcMsgRecvPacket, keys_changed: &BTreeSet, - ibc_acks: &BTreeMap, AcknowledgementStatus>, - ) -> Result> { + ) -> Result { // Ensure that the event corresponds to the current changes // to storage let ack_key = storage::ack_key( @@ -446,13 +442,20 @@ where ); if !keys_changed.contains(&ack_key) { // Otherwise ignore this event - return Ok(None); + return Ok(false); } - let acknowledgement = match self.ctx.read_bytes_post(&ack_key)? { - Some(value) => AcknowledgementCommitment::from(value), - None => return Ok(None), - }; - Ok(ibc_acks.get(&acknowledgement.into_vec()).cloned()) + // If the receive is a success, then the commitment is unique + let succ_ack_commitment = compute_ack_commitment( + &AcknowledgementStatus::success(ack_success_b64()).into(), + ); + Ok(match self.ctx.read_bytes_post(&ack_key)? { + // Success happens only if commitment equals the above + Some(value) => { + AcknowledgementCommitment::from(value) == succ_ack_commitment + } + // Acknowledgement key non-existence is failure + None => false, + }) } // Apply the given write acknowledge to the changed balances structure @@ -462,12 +465,10 @@ where msg: &MsgRecvPacket, packet_data: &PacketData, keys_changed: &BTreeSet, - ibc_acks: &BTreeMap, AcknowledgementStatus>, ) -> Result { // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address - if matches!(self.get_msg_ack(&msg.message, keys_changed, ibc_acks)?, Some(ack) if ack.is_successful()) - { + if self.is_receiving_success(&msg.message, keys_changed)? { // Mirror how the IBC token is derived in // gen_ibc_shielded_transfer in the non-refund case let ibc_denom = self.query_ibc_denom( @@ -505,7 +506,6 @@ where mut acc: ChangedBalances, ibc_msg: &IbcMessage, keys_changed: &BTreeSet, - ibc_acks: &BTreeMap, AcknowledgementStatus>, ) -> Result { match ibc_msg { // This event is emitted on the sender @@ -528,13 +528,8 @@ where let receiver = packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); - acc = self.apply_write_ack( - acc, - msg, - &packet_data, - keys_changed, - ibc_acks, - )?; + acc = + self.apply_write_ack(acc, msg, &packet_data, keys_changed)?; } // Ignore all other IBC events _ => {} @@ -586,37 +581,6 @@ where Result::<_>::Ok(result) } - // Collect the various packet acknowledgements and store them by their - // commitments - fn extract_ibc_acknowledgements( - &self, - ) -> Result, AcknowledgementStatus>> { - let mut ibc_acks = BTreeMap::new(); - let ibc_events = self.ctx.state.write_log().get_events_of::(); - for ibc_event in ibc_events { - if ibc_event.kind().sub_domain() == WRITE_ACK_EVENT { - // Packet acknowledgements are an attribute of the IBC Write - // Acknowledgement event - let acknowledgement = ibc_event - .raw_read_attribute::>() - .ok_or_err_msg( - "packet_ack attribute missing from \ - write_acknowledgement", - )?; - // Acknowledgements adhere to the AcknowledgementStatus format - let acknowledgement: AcknowledgementStatus = - serde_json::from_slice(acknowledgement.as_ref()) - .wrap_err("Decoding acknowledment failed")?; - let commitment = - compute_ack_commitment(&acknowledgement.clone().into()); - // Store the acknowledgements by their commitment to facilitate - // reverse lookups on the commitments placed in storage - ibc_acks.insert(commitment.into_vec(), acknowledgement); - } - } - Ok(ibc_acks) - } - // Check that transfer is pinned correctly and record the balance changes fn validate_state_and_get_transfer_data( &self, @@ -633,9 +597,6 @@ where self.apply_balance_change(acc, account) })?; - // Collect the various packet acknowledgements - let ibc_acks = self.extract_ibc_acknowledgements()?; - let ibc_addr = TAddrData::Addr(IBC); // Enable decoding the IBC address hash changed_balances.decoder.insert(addr_taddr(IBC), ibc_addr); @@ -644,7 +605,7 @@ where let changed_balances = ibc_msgs.iter().try_fold(changed_balances, |acc, ibc_msg| { // Apply all IBC packets to the changed balances structure - self.apply_ibc_packet(acc, ibc_msg, keys_changed, &ibc_acks) + self.apply_ibc_packet(acc, ibc_msg, keys_changed) })?; Ok(changed_balances) From 8de2ec0cab9f6e8a4eef1b3e39bcef0a3f69a500 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 19 Jun 2024 11:58:54 +0200 Subject: [PATCH 14/39] Added more comments and improved function naming. --- crates/namada/src/ledger/native_vp/masp.rs | 86 ++++++++++++---------- crates/vp_env/src/lib.rs | 6 +- 2 files changed, 49 insertions(+), 43 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index e6733698c7..dfeafc1197 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -55,6 +55,7 @@ use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatu use crate::sdk::ibc::core::channel::types::commitment::{ compute_ack_commitment, AcknowledgementCommitment, PacketCommitment, }; +use crate::sdk::ibc::core::channel::types::packet::Packet; use crate::token; use crate::token::MaspDigitPos; use crate::uint::{Uint, I320}; @@ -372,73 +373,71 @@ where Ok(None) } - // Apply the given send packet to the changed balances structure - fn apply_send_packet( + // Apply the given transfer message to the changed balances structure + fn apply_transfer_msg( &self, mut acc: ChangedBalances, - msg: &MsgTransfer, + msg: &IbcMsgTransfer, keys_changed: &BTreeSet, ) -> Result { // If a key change with the same port, channel, and commitment as this - // message cannot be found, then ignore this message + // message cannot be found, then ignore this message. Though this check + // is done in the IBC VP, the test is repeated here to avoid making + // assumptions about how the IBC VP interprets the given message. if self - .find_ibc_transfer_sequence(&msg.message, keys_changed)? + .find_ibc_transfer_sequence(&msg, keys_changed)? .is_none() { return Ok(acc); }; - // Since IBC denominations are derived from Addresses - // when sending, we have to do a reverse look-up of the - // relevant token Address - let denom = msg.message.packet_data.token.denom.to_string(); + // Obtain the address corresponding to the packet denomination + let denom = msg.packet_data.token.denom.to_string(); let token = if denom.contains('/') { ibc_token(denom) } else { Address::decode(denom).into_storage_result()? }; + // Add currency units to the amount in the packet let delta = ValueSum::from_pair( token.clone(), - Amount::from_uint(Uint(*msg.message.packet_data.token.amount), 0) - .unwrap(), + Amount::from_uint(Uint(*msg.packet_data.token.amount), 0).unwrap(), ); - // If there is a transfer to the IBC account, then deduplicate the - // balance increase since we already accounted for it above + // Remove pre-existing balance increases to the IBC account since we + // want to record increases to specific receivers if is_sender_chain_source( - msg.message.port_id_on_a.clone(), - msg.message.chan_id_on_a.clone(), - &msg.message.packet_data.token.denom, + msg.port_id_on_a.clone(), + msg.chan_id_on_a.clone(), + &msg.packet_data.token.denom, ) { let post_entry = acc.post.entry(addr_taddr(IBC)).or_insert(ValueSum::zero()); *post_entry = checked!(post_entry - &delta).map_err(native_vp::Error::new)?; } - // Required for the packet's receiver to get funds + // Record an increase to the balance of a specific IBC receiver + let receiver = msg.packet_data.receiver.to_string(); let post_entry = acc .post - .entry(ibc_taddr(msg.message.packet_data.receiver.to_string())) + .entry(ibc_taddr(receiver)) .or_insert(ValueSum::zero()); - // Enable funds to be received by the receiver in the - // IBC packet *post_entry = checked!(post_entry + &delta).map_err(native_vp::Error::new)?; Ok(acc) } - // Get the acknowledgement status associated with the given message + // Check if IBC message was received successfully in this state transition fn is_receiving_success( &self, - message: &IbcMsgRecvPacket, + packet: &Packet, keys_changed: &BTreeSet, ) -> Result { - // Ensure that the event corresponds to the current changes - // to storage + // Ensure that the event corresponds to the current changes to storage let ack_key = storage::ack_key( - &message.packet.port_id_on_a, - &message.packet.chan_id_on_a, - message.packet.seq_on_a, + &packet.port_id_on_a, + &packet.chan_id_on_a, + packet.seq_on_a, ); if !keys_changed.contains(&ack_key) { // Otherwise ignore this event @@ -459,16 +458,16 @@ where } // Apply the given write acknowledge to the changed balances structure - fn apply_write_ack( + fn apply_recv_msg( &self, mut acc: ChangedBalances, - msg: &MsgRecvPacket, + msg: &IbcMsgRecvPacket, packet_data: &PacketData, keys_changed: &BTreeSet, ) -> Result { // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address - if self.is_receiving_success(&msg.message, keys_changed)? { + if self.is_receiving_success(&msg.packet, keys_changed)? { // Mirror how the IBC token is derived in // gen_ibc_shielded_transfer in the non-refund case let ibc_denom = self.query_ibc_denom( @@ -477,10 +476,10 @@ where )?; let token = namada_ibc::received_ibc_token( ibc_denom, - &msg.message.packet.port_id_on_a, - &msg.message.packet.chan_id_on_a, - &msg.message.packet.port_id_on_b, - &msg.message.packet.chan_id_on_b, + &msg.packet.port_id_on_a, + &msg.packet.chan_id_on_a, + &msg.packet.port_id_on_b, + &msg.packet.chan_id_on_b, ) .into_storage_result() .map_err(Error::NativeVpError)?; @@ -515,7 +514,8 @@ where let receiver = msg.message.packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); - acc = self.apply_send_packet(acc, msg, keys_changed)?; + acc = + self.apply_transfer_msg(acc, &msg.message, keys_changed)?; } // This event is emitted on the receiver IbcMessage::RecvPacket(msg) => { @@ -528,8 +528,12 @@ where let receiver = packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); - acc = - self.apply_write_ack(acc, msg, &packet_data, keys_changed)?; + acc = self.apply_recv_msg( + acc, + &msg.message, + &packet_data, + keys_changed, + )?; } // Ignore all other IBC events _ => {} @@ -629,7 +633,7 @@ where Error::NativeVpError(native_vp::Error::new_const(msg)) })?; let conversion_state = self.ctx.state.in_mem().get_conversion_state(); - let ibc_msgs = self.ctx.get_shielded_action(tx_data)?; + let ibc_msgs = self.ctx.get_ibc_message(tx_data)?; // Get the Transaction object from the actions let masp_section_ref = namada_tx::action::get_masp_section_ref( @@ -663,8 +667,10 @@ where // The Sapling value balance adds to the transparent tx pool let mut transparent_tx_pool = shielded_tx.sapling_value_balance(); // Check the validity of the keys and get the transfer data - let mut changed_balances = - self.validate_state_and_get_transfer_data(keys_changed, &ibc_msgs)?; + let mut changed_balances = self.validate_state_and_get_transfer_data( + keys_changed, + &ibc_msgs.as_slice(), + )?; let masp_address_hash = addr_taddr(MASP); verify_sapling_balancing_value( diff --git a/crates/vp_env/src/lib.rs b/crates/vp_env/src/lib.rs index 9ef6144bbe..2afe912aad 100644 --- a/crates/vp_env/src/lib.rs +++ b/crates/vp_env/src/lib.rs @@ -121,15 +121,15 @@ where fn get_tx_code_hash(&self) -> Result, namada_storage::Error>; /// Get the masp tx part of the shielded action - fn get_shielded_action( + fn get_ibc_message( &self, batched_tx: &BatchedTxRef<'_>, - ) -> Result, namada_storage::Error> { + ) -> Result, namada_storage::Error> { let data = batched_tx .tx .data(batched_tx.cmt) .ok_or_err_msg("No transaction data")?; - Ok(decode_message(&data).into_iter().collect()) + Ok(decode_message(&data).ok()) } /// Charge the provided gas for the current vp From 0c999bd93bccb52ae098b504f5d098a35c599688 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 19 Jun 2024 12:18:09 +0200 Subject: [PATCH 15/39] Start using IBC ports to determine message formats. --- crates/namada/src/ledger/native_vp/masp.rs | 23 +++++++++++----------- crates/sdk/src/masp.rs | 5 +++-- crates/vp_env/src/lib.rs | 8 ++++---- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index dfeafc1197..889ab2041e 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -41,7 +41,6 @@ use token::storage_key::{ use token::Amount; use crate::address::{InternalAddress, IBC, MASP}; -use crate::ibc::{MsgRecvPacket, MsgTransfer}; use crate::ledger::ibc::storage; use crate::ledger::ibc::storage::{ ibc_trace_key, ibc_trace_key_prefix, is_ibc_commitment_key, @@ -50,7 +49,7 @@ use crate::ledger::ibc::storage::{ use crate::ledger::native_vp; use crate::ledger::native_vp::ibc::context::VpValidationContext; use crate::ledger::native_vp::{Ctx, NativeVp}; -use crate::sdk::ibc::apps::transfer::types::ack_success_b64; +use crate::sdk::ibc::apps::transfer::types::{ack_success_b64, PORT_ID_STR}; use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; use crate::sdk::ibc::core::channel::types::commitment::{ compute_ack_commitment, AcknowledgementCommitment, PacketCommitment, @@ -385,7 +384,7 @@ where // is done in the IBC VP, the test is repeated here to avoid making // assumptions about how the IBC VP interprets the given message. if self - .find_ibc_transfer_sequence(&msg, keys_changed)? + .find_ibc_transfer_sequence(msg, keys_changed)? .is_none() { return Ok(acc); @@ -440,7 +439,7 @@ where packet.seq_on_a, ); if !keys_changed.contains(&ack_key) { - // Otherwise ignore this event + // Ignore packet if it was not acknowledged during this state change return Ok(false); } // If the receive is a success, then the commitment is unique @@ -518,13 +517,13 @@ where self.apply_transfer_msg(acc, &msg.message, keys_changed)?; } // This event is emitted on the receiver - IbcMessage::RecvPacket(msg) => { - // Check if this is a Transfer packet - let Ok(packet_data) = serde_json::from_slice::( + IbcMessage::RecvPacket(msg) + if msg.message.packet.port_id_on_b.as_str() == PORT_ID_STR => + { + let packet_data = serde_json::from_slice::( &msg.message.packet.data, - ) else { - return Ok(acc); - }; + ) + .map_err(native_vp::Error::new)?; let receiver = packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); @@ -633,7 +632,7 @@ where Error::NativeVpError(native_vp::Error::new_const(msg)) })?; let conversion_state = self.ctx.state.in_mem().get_conversion_state(); - let ibc_msgs = self.ctx.get_ibc_message(tx_data)?; + let ibc_msgs = self.ctx.get_ibc_message(tx_data).ok(); // Get the Transaction object from the actions let masp_section_ref = namada_tx::action::get_masp_section_ref( @@ -669,7 +668,7 @@ where // Check the validity of the keys and get the transfer data let mut changed_balances = self.validate_state_and_get_transfer_data( keys_changed, - &ibc_msgs.as_slice(), + ibc_msgs.as_slice(), )?; let masp_address_hash = addr_taddr(MASP); diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index 43bfac59f7..b128c7da66 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -1761,10 +1761,11 @@ impl ShieldedContext { ) .map_err(builder::Error::TransparentBuild)?; } else { - unreachable!( + return Result::Err(TransferErr::from(Error::Other( "transaction target must be a payment address or \ Namada address or IBC address" - ) + .to_string(), + ))); } // Lower what is required of the remaining contribution *rem_amount -= contr; diff --git a/crates/vp_env/src/lib.rs b/crates/vp_env/src/lib.rs index 2afe912aad..c65075c8a2 100644 --- a/crates/vp_env/src/lib.rs +++ b/crates/vp_env/src/lib.rs @@ -26,7 +26,7 @@ use namada_core::hash::Hash; use namada_core::storage::{BlockHeight, Epoch, Epochs, Header, Key, TxIndex}; use namada_events::{Event, EventType}; use namada_ibc::{decode_message, IbcMessage}; -use namada_storage::{OptionExt, StorageRead}; +use namada_storage::{OptionExt, ResultExt, StorageRead}; use namada_tx::BatchedTxRef; /// Validity predicate's environment is available for native VPs and WASM VPs @@ -120,16 +120,16 @@ where /// Get a tx hash fn get_tx_code_hash(&self) -> Result, namada_storage::Error>; - /// Get the masp tx part of the shielded action + /// Get the IBC message from the data section fn get_ibc_message( &self, batched_tx: &BatchedTxRef<'_>, - ) -> Result, namada_storage::Error> { + ) -> Result { let data = batched_tx .tx .data(batched_tx.cmt) .ok_or_err_msg("No transaction data")?; - Ok(decode_message(&data).ok()) + decode_message(&data).into_storage_result() } /// Charge the provided gas for the current vp From d0b4f3d73c5db336516ca8906b37b667a14f1537 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 19 Jun 2024 13:59:46 +0200 Subject: [PATCH 16/39] Now charge gas in IBC denom query. --- crates/namada/src/ledger/native_vp/masp.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 889ab2041e..1fedaffc72 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -318,7 +318,8 @@ where // No owner is specified or the owner doesn't have the token let ibc_denom_prefix = ibc_trace_key_prefix(None); let ibc_denoms = self.ctx.iter_prefix(&ibc_denom_prefix)?; - for (key, ibc_denom, _gas) in ibc_denoms { + for (key, ibc_denom, gas) in ibc_denoms { + self.ctx.charge_gas(gas)?; if let Some((_, token_hash)) = is_ibc_trace_key(&Key::parse(key).into_storage_result()?) { From 0a5d48027bb0b3919b2c4d535c055f9e44e3f2e7 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Wed, 19 Jun 2024 16:01:03 +0200 Subject: [PATCH 17/39] Update balances in the MASP using a non-mutating style. --- crates/core/src/masp.rs | 2 +- crates/namada/src/ledger/native_vp/masp.rs | 78 ++++++++++++++-------- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index 0cd54ebc41..7b8b65e5cc 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -470,7 +470,7 @@ impl TransferSource { } } - /// Get the contained MaybeIbcAddress, if any + /// Get the contained transparent address data, if any pub fn t_addr_data(&self) -> Option { match self { Self::Address(x) => Some(TAddrData::Addr(x.clone())), diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 1fedaffc72..24809a0d9c 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -362,7 +362,7 @@ where let Some(storage_commitment): Option = self.ctx.read_bytes_post(key)?.map(Into::into) else { - // Ignore this event if it does not exist + // Ignore this key if the value does not exist continue; }; if packet_commitment == storage_commitment { @@ -410,19 +410,25 @@ where msg.chan_id_on_a.clone(), &msg.packet_data.token.denom, ) { - let post_entry = - acc.post.entry(addr_taddr(IBC)).or_insert(ValueSum::zero()); - *post_entry = - checked!(post_entry - &delta).map_err(native_vp::Error::new)?; + let ibc_taddr = addr_taddr(IBC); + let post_entry = acc + .post + .get(&ibc_taddr) + .cloned() + .unwrap_or(ValueSum::zero()); + acc.post.insert( + ibc_taddr, + checked!(post_entry - &delta).map_err(native_vp::Error::new)?, + ); } // Record an increase to the balance of a specific IBC receiver - let receiver = msg.packet_data.receiver.to_string(); - let post_entry = acc - .post - .entry(ibc_taddr(receiver)) - .or_insert(ValueSum::zero()); - *post_entry = - checked!(post_entry + &delta).map_err(native_vp::Error::new)?; + let receiver = ibc_taddr(msg.packet_data.receiver.to_string()); + let post_entry = + acc.post.get(&receiver).cloned().unwrap_or(ValueSum::zero()); + acc.post.insert( + receiver, + checked!(post_entry + &delta).map_err(native_vp::Error::new)?, + ); Ok(acc) } @@ -491,10 +497,13 @@ where // address and be deposited elsewhere // Required for the IBC internal Address to release // funds + let ibc_taddr = addr_taddr(IBC); let pre_entry = - acc.pre.entry(addr_taddr(IBC)).or_insert(ValueSum::zero()); - *pre_entry = - checked!(pre_entry + &delta).map_err(native_vp::Error::new)?; + acc.pre.get(&ibc_taddr).cloned().unwrap_or(ValueSum::zero()); + acc.pre.insert( + ibc_taddr, + checked!(pre_entry + &delta).map_err(native_vp::Error::new)?, + ); } Ok(acc) } @@ -569,19 +578,32 @@ where .insert(address_hash, TAddrData::Addr(counterpart.clone())); // Finally record the actual balance change starting with the initial // state - let pre_entry = - result.pre.entry(address_hash).or_insert(ValueSum::zero()); - *pre_entry = checked!( - pre_entry + &ValueSum::from_pair((*token).clone(), pre_balance) - ) - .map_err(native_vp::Error::new)?; + let pre_entry = result + .pre + .get(&address_hash) + .cloned() + .unwrap_or(ValueSum::zero()); + result.pre.insert( + address_hash, + checked!( + pre_entry + &ValueSum::from_pair((*token).clone(), pre_balance) + ) + .map_err(native_vp::Error::new)?, + ); // And then record thee final state - let post_entry = - result.post.entry(address_hash).or_insert(ValueSum::zero()); - *post_entry = checked!( - post_entry + &ValueSum::from_pair((*token).clone(), post_balance) - ) - .map_err(native_vp::Error::new)?; + let post_entry = result + .post + .get(&address_hash) + .cloned() + .unwrap_or(ValueSum::zero()); + result.post.insert( + address_hash, + checked!( + post_entry + + &ValueSum::from_pair((*token).clone(), post_balance) + ) + .map_err(native_vp::Error::new)?, + ); Result::<_>::Ok(result) } @@ -605,7 +627,7 @@ where // Enable decoding the IBC address hash changed_balances.decoder.insert(addr_taddr(IBC), ibc_addr); - // Go through the IBC events and note the balance chages they imply + // Go through the IBC events and note the balance changes they imply let changed_balances = ibc_msgs.iter().try_fold(changed_balances, |acc, ibc_msg| { // Apply all IBC packets to the changed balances structure From 7ff94bd42a6b0c04f57f56f18af88b3d5c71b3ec Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Thu, 20 Jun 2024 20:20:29 +0200 Subject: [PATCH 18/39] Added changelog entry. --- .../3409-masp-ibc-replay-protection-using-txdata-on-0.39.0.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changelog/unreleased/bug-fixes/3409-masp-ibc-replay-protection-using-txdata-on-0.39.0.md diff --git a/.changelog/unreleased/bug-fixes/3409-masp-ibc-replay-protection-using-txdata-on-0.39.0.md b/.changelog/unreleased/bug-fixes/3409-masp-ibc-replay-protection-using-txdata-on-0.39.0.md new file mode 100644 index 0000000000..2f5d64cc2e --- /dev/null +++ b/.changelog/unreleased/bug-fixes/3409-masp-ibc-replay-protection-using-txdata-on-0.39.0.md @@ -0,0 +1,2 @@ +- Add replay protection to MASP-IBC transactions. + ([\#3409](https://github.com/anoma/namada/pull/3409)) \ No newline at end of file From d44fc56aa6a6f4954509151f25514adaba30e5ac Mon Sep 17 00:00:00 2001 From: yito88 Date: Tue, 18 Jun 2024 14:28:36 +0200 Subject: [PATCH 19/39] support NftTransfer --- crates/namada/src/ledger/native_vp/masp.rs | 138 +++++++++------------ 1 file changed, 57 insertions(+), 81 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 24809a0d9c..e67e2dd940 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -16,17 +16,15 @@ use namada_core::address::Address; use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; -use namada_core::ibc::apps::transfer::types::is_sender_chain_source; -use namada_core::ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; -use namada_ibc::core::host::types::identifiers::Sequence; +use namada_ibc::core::host::types::identifiers::{ChannelId, PortId}; use namada_ibc::storage::ibc_token; -use namada_ibc::{IbcCommonContext, IbcMessage}; +use namada_ibc::IbcMessage; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; use namada_token::read_denom; @@ -43,16 +41,14 @@ use token::Amount; use crate::address::{InternalAddress, IBC, MASP}; use crate::ledger::ibc::storage; use crate::ledger::ibc::storage::{ - ibc_trace_key, ibc_trace_key_prefix, is_ibc_commitment_key, - is_ibc_trace_key, + ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, }; use crate::ledger::native_vp; -use crate::ledger::native_vp::ibc::context::VpValidationContext; use crate::ledger::native_vp::{Ctx, NativeVp}; use crate::sdk::ibc::apps::transfer::types::{ack_success_b64, PORT_ID_STR}; use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatus; use crate::sdk::ibc::core::channel::types::commitment::{ - compute_ack_commitment, AcknowledgementCommitment, PacketCommitment, + compute_ack_commitment, AcknowledgementCommitment, }; use crate::sdk::ibc::core::channel::types::packet::Packet; use crate::token; @@ -334,82 +330,28 @@ where Ok(token.as_ref().to_string()) } - // Find the given IBC message in the changed keys and return the associated - // sequence number - fn find_ibc_transfer_sequence( - &self, - message: &IbcMsgTransfer, - keys_changed: &BTreeSet, - ) -> Result> { - // Compute the packet commitment for this message - let packet_data_bytes = serde_json::to_vec(&message.packet_data) - .map_err(native_vp::Error::new)?; - let packet_commitment = - VpValidationContext::<'a, 'a, S, CA>::compute_packet_commitment( - &packet_data_bytes, - &message.timeout_height_on_b, - &message.timeout_timestamp_on_b, - ); - // Try to find a key change with the same port, channel, and commitment - // as this message and note its sequence number - for key in keys_changed { - let Some(path) = is_ibc_commitment_key(key) else { - continue; - }; - if path.port_id == message.port_id_on_a - && path.channel_id == message.chan_id_on_a - { - let Some(storage_commitment): Option = - self.ctx.read_bytes_post(key)?.map(Into::into) - else { - // Ignore this key if the value does not exist - continue; - }; - if packet_commitment == storage_commitment { - return Ok(Some(path.sequence)); - } - } - } - Ok(None) - } - // Apply the given transfer message to the changed balances structure fn apply_transfer_msg( &self, mut acc: ChangedBalances, - msg: &IbcMsgTransfer, - keys_changed: &BTreeSet, + src_port_id: &PortId, + src_channel_id: &ChannelId, + ibc_trace: impl AsRef, + amount: Amount, + receiver: impl AsRef, ) -> Result { - // If a key change with the same port, channel, and commitment as this - // message cannot be found, then ignore this message. Though this check - // is done in the IBC VP, the test is repeated here to avoid making - // assumptions about how the IBC VP interprets the given message. - if self - .find_ibc_transfer_sequence(msg, keys_changed)? - .is_none() - { - return Ok(acc); - }; - - // Obtain the address corresponding to the packet denomination - let denom = msg.packet_data.token.denom.to_string(); - let token = if denom.contains('/') { - ibc_token(denom) + let token = if ibc_trace.as_ref().contains('/') { + Address::decode(ibc_trace.as_ref()).into_storage_result()? } else { - Address::decode(denom).into_storage_result()? + ibc_token(ibc_trace.as_ref()) }; - // Add currency units to the amount in the packet - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint(Uint(*msg.packet_data.token.amount), 0).unwrap(), - ); - // Remove pre-existing balance increases to the IBC account since we - // want to record increases to specific receivers - if is_sender_chain_source( - msg.port_id_on_a.clone(), - msg.chan_id_on_a.clone(), - &msg.packet_data.token.denom, - ) { + let delta = ValueSum::from_pair(token.clone(), amount); + // If there is a transfer to the IBC account, then deduplicate the + // balance increase since we already accounted for it above + if !ibc_trace + .as_ref() + .starts_with(&format!("{src_port_id}/{src_channel_id}")) + { let ibc_taddr = addr_taddr(IBC); let post_entry = acc .post @@ -422,7 +364,7 @@ where ); } // Record an increase to the balance of a specific IBC receiver - let receiver = ibc_taddr(msg.packet_data.receiver.to_string()); + let receiver = ibc_taddr(receiver.as_ref().to_string()); let post_entry = acc.post.get(&receiver).cloned().unwrap_or(ValueSum::zero()); acc.post.insert( @@ -522,9 +464,43 @@ where // to this event let receiver = msg.message.packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); - acc.decoder.insert(ibc_taddr(receiver), addr); - acc = - self.apply_transfer_msg(acc, &msg.message, keys_changed)?; + acc.decoder.insert(ibc_taddr(receiver.clone()), addr); + let ibc_trace = msg.message.packet_data.token.denom.to_string(); + let amount = msg + .message + .packet_data + .token + .amount + .try_into() + .into_storage_result()?; + acc = self.apply_transfer_msg( + acc, + &msg.message.port_id_on_a, + &msg.message.chan_id_on_a, + ibc_trace, + amount, + receiver, + )?; + } + IbcMessage::NftTransfer(msg) => { + let receiver = msg.message.packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver.clone()), addr); + for token_id in &msg.message.packet_data.token_ids.0 { + let ibc_trace = format!( + "{}/{}", + msg.message.packet_data.class_id, token_id + ); + let amount = Amount::from_u64(1); + acc = self.apply_transfer_msg( + acc, + &msg.message.port_id_on_a, + &msg.message.chan_id_on_a, + ibc_trace, + amount, + &receiver, + )?; + } } // This event is emitted on the receiver IbcMessage::RecvPacket(msg) From 320e9edbb68c2a04a1102862f606a289d46ce743 Mon Sep 17 00:00:00 2001 From: yito88 Date: Wed, 19 Jun 2024 17:05:18 +0200 Subject: [PATCH 20/39] fix for apply_recv_msg --- crates/ibc/src/lib.rs | 8 +- crates/ibc/src/storage.rs | 80 +++++++++++++- crates/namada/src/ledger/native_vp/masp.rs | 122 +++++++++++---------- crates/sdk/src/tx.rs | 11 +- 4 files changed, 146 insertions(+), 75 deletions(-) diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index 5bdf40bc22..a52e7f982e 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -433,12 +433,8 @@ pub fn received_ibc_token( dest_port_id, dest_channel_id, )?; - if ibc_trace.contains('/') { - Ok(storage::ibc_token(ibc_trace)) - } else { - Address::decode(ibc_trace) - .map_err(|e| Error::Trace(format!("Invalid base token: {e}"))) - } + storage::convert_to_address(ibc_trace) + .map_err(|e| Error::Trace(format!("Invalid base token: {e}"))) } /// Returns the trace path and the token string if the denom is an IBC diff --git a/crates/ibc/src/storage.rs b/crates/ibc/src/storage.rs index 36e6dd4458..7c02e37702 100644 --- a/crates/ibc/src/storage.rs +++ b/crates/ibc/src/storage.rs @@ -2,7 +2,10 @@ use std::str::FromStr; -use ibc::apps::nft_transfer::types::{PrefixedClassId, TokenId}; +use ibc::apps::nft_transfer::types::{ + PrefixedClassId, TokenId, TracePath as NftTracePath, +}; +use ibc::apps::transfer::types::{PrefixedDenom, TracePath}; use ibc::core::client::types::Height; use ibc::core::host::types::identifiers::{ ChannelId, ClientId, ConnectionId, PortId, Sequence, @@ -47,8 +50,8 @@ pub enum Error { StorageKey(namada_core::storage::Error), #[error("Invalid Key: {0}")] InvalidKey(String), - #[error("Port capability error: {0}")] - InvalidPortCapability(String), + #[error("Invalid IBC trace: {0}")] + InvalidIbcTrace(String), } /// IBC storage functions result @@ -512,7 +515,76 @@ pub fn ibc_token_for_nft( class_id: &PrefixedClassId, token_id: &TokenId, ) -> Address { - ibc_token(format!("{class_id}/{token_id}")) + ibc_token(ibc_trace_for_nft(class_id, token_id)) +} + +/// Obtain the IBC trace from the given NFT class ID and NFT ID +pub fn ibc_trace_for_nft( + class_id: &PrefixedClassId, + token_id: &TokenId, +) -> String { + format!("{class_id}/{token_id}") +} + +/// Convert the given IBC trace to [`Address`] +pub fn convert_to_address(ibc_trace: impl AsRef) -> Result
{ + // validation + if is_ibc_denom(&ibc_trace).is_none() && is_nft_trace(&ibc_trace).is_none() + { + return Err(Error::InvalidIbcTrace(format!( + "Invalid IBC trace: {}", + ibc_trace.as_ref() + ))); + } + + if ibc_trace.as_ref().contains('/') { + Ok(ibc_token(ibc_trace.as_ref())) + } else { + Address::decode(ibc_trace.as_ref()) + .map_err(|e| Error::InvalidIbcTrace(e.to_string())) + } +} + +/// Returns the trace path and the token string if the denom is an IBC +/// denom. +pub fn is_ibc_denom(denom: impl AsRef) -> Option<(TracePath, String)> { + let prefixed_denom = PrefixedDenom::from_str(denom.as_ref()).ok()?; + let base_denom = prefixed_denom.base_denom.to_string(); + if prefixed_denom.trace_path.is_empty() || base_denom.contains('/') { + // The denom is just a token or an NFT trace + return None; + } + // The base token isn't decoded because it could be non Namada token + Some((prefixed_denom.trace_path, base_denom)) +} + +/// Returns the trace path and the token string if the trace is an NFT one +pub fn is_nft_trace( + trace: impl AsRef, +) -> Option<(NftTracePath, String, String)> { + // The trace should be {port}/{channel}/.../{class_id}/{token_id} + if let Some((class_id, token_id)) = trace.as_ref().rsplit_once('/') { + let prefixed_class_id = PrefixedClassId::from_str(class_id).ok()?; + // The base token isn't decoded because it could be non Namada token + Some(( + prefixed_class_id.trace_path, + prefixed_class_id.base_class_id.to_string(), + token_id.to_string(), + )) + } else { + None + } +} + +/// Return true if the source of the given IBC trace is this chain +pub fn is_sender_chain_source( + trace: impl AsRef, + src_port_id: &PortId, + src_channel_id: &ChannelId, +) -> bool { + !trace + .as_ref() + .starts_with(&format!("{src_port_id}/{src_channel_id}")) } /// Returns true if the given key is for IBC diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index e67e2dd940..13fcb4057b 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -16,14 +16,17 @@ use namada_core::address::Address; use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; +use namada_core::ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; -use namada_ibc::core::host::types::identifiers::{ChannelId, PortId}; -use namada_ibc::storage::ibc_token; +use namada_ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; +use namada_ibc::storage::{ + convert_to_address, ibc_trace_for_nft, is_sender_chain_source, +}; use namada_ibc::IbcMessage; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; @@ -50,10 +53,9 @@ use crate::sdk::ibc::core::channel::types::acknowledgement::AcknowledgementStatu use crate::sdk::ibc::core::channel::types::commitment::{ compute_ack_commitment, AcknowledgementCommitment, }; -use crate::sdk::ibc::core::channel::types::packet::Packet; use crate::token; use crate::token::MaspDigitPos; -use crate::uint::{Uint, I320}; +use crate::uint::I320; use crate::vm::WasmCacheAccess; #[allow(missing_docs)] @@ -340,18 +342,11 @@ where amount: Amount, receiver: impl AsRef, ) -> Result { - let token = if ibc_trace.as_ref().contains('/') { - Address::decode(ibc_trace.as_ref()).into_storage_result()? - } else { - ibc_token(ibc_trace.as_ref()) - }; + let token = convert_to_address(&ibc_trace).into_storage_result()?; let delta = ValueSum::from_pair(token.clone(), amount); // If there is a transfer to the IBC account, then deduplicate the // balance increase since we already accounted for it above - if !ibc_trace - .as_ref() - .starts_with(&format!("{src_port_id}/{src_channel_id}")) - { + if is_sender_chain_source(ibc_trace, src_port_id, src_channel_id) { let ibc_taddr = addr_taddr(IBC); let post_entry = acc .post @@ -378,19 +373,12 @@ where // Check if IBC message was received successfully in this state transition fn is_receiving_success( &self, - packet: &Packet, - keys_changed: &BTreeSet, + src_port_id: &PortId, + src_channel_id: &ChannelId, + sequence: Sequence, ) -> Result { // Ensure that the event corresponds to the current changes to storage - let ack_key = storage::ack_key( - &packet.port_id_on_a, - &packet.chan_id_on_a, - packet.seq_on_a, - ); - if !keys_changed.contains(&ack_key) { - // Ignore packet if it was not acknowledged during this state change - return Ok(false); - } + let ack_key = storage::ack_key(src_port_id, src_channel_id, sequence); // If the receive is a success, then the commitment is unique let succ_ack_commitment = compute_ack_commitment( &AcknowledgementStatus::success(ack_success_b64()).into(), @@ -410,20 +398,20 @@ where &self, mut acc: ChangedBalances, msg: &IbcMsgRecvPacket, - packet_data: &PacketData, - keys_changed: &BTreeSet, + ibc_trace: impl AsRef, + amount: Amount, ) -> Result { // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address - if self.is_receiving_success(&msg.packet, keys_changed)? { + if self.is_receiving_success( + &msg.packet.port_id_on_a, + &msg.packet.chan_id_on_a, + msg.packet.seq_on_a, + )? { // Mirror how the IBC token is derived in // gen_ibc_shielded_transfer in the non-refund case - let ibc_denom = self.query_ibc_denom( - packet_data.token.denom.to_string(), - Some(&Address::Internal(InternalAddress::Ibc)), - )?; let token = namada_ibc::received_ibc_token( - ibc_denom, + ibc_trace, &msg.packet.port_id_on_a, &msg.packet.chan_id_on_a, &msg.packet.port_id_on_b, @@ -431,10 +419,7 @@ where ) .into_storage_result() .map_err(Error::NativeVpError)?; - let delta = ValueSum::from_pair( - token.clone(), - Amount::from_uint(Uint(*packet_data.token.amount), 0).unwrap(), - ); + let delta = ValueSum::from_pair(token.clone(), amount); // Enable funds to be taken from the IBC internal // address and be deposited elsewhere // Required for the IBC internal Address to release @@ -455,7 +440,6 @@ where &self, mut acc: ChangedBalances, ibc_msg: &IbcMessage, - keys_changed: &BTreeSet, ) -> Result { match ibc_msg { // This event is emitted on the sender @@ -487,9 +471,9 @@ where let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver.clone()), addr); for token_id in &msg.message.packet_data.token_ids.0 { - let ibc_trace = format!( - "{}/{}", - msg.message.packet_data.class_id, token_id + let ibc_trace = ibc_trace_for_nft( + &msg.message.packet_data.class_id, + token_id, ); let amount = Amount::from_u64(1); acc = self.apply_transfer_msg( @@ -503,22 +487,46 @@ where } } // This event is emitted on the receiver - IbcMessage::RecvPacket(msg) - if msg.message.packet.port_id_on_b.as_str() == PORT_ID_STR => - { - let packet_data = serde_json::from_slice::( - &msg.message.packet.data, - ) - .map_err(native_vp::Error::new)?; - let receiver = packet_data.receiver.to_string(); - let addr = TAddrData::Ibc(receiver.clone()); - acc.decoder.insert(ibc_taddr(receiver), addr); - acc = self.apply_recv_msg( - acc, - &msg.message, - &packet_data, - keys_changed, - )?; + IbcMessage::RecvPacket(msg) => { + if msg.message.packet.port_id_on_b.as_str() == PORT_ID_STR { + let packet_data = serde_json::from_slice::( + &msg.message.packet.data, + ) + .map_err(native_vp::Error::new)?; + let receiver = packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver), addr); + let ibc_denom = packet_data.token.denom.to_string(); + let amount = packet_data + .token + .amount + .try_into() + .into_storage_result()?; + acc = self.apply_recv_msg( + acc, + &msg.message, + ibc_denom, + amount, + )?; + } else { + let packet_data = serde_json::from_slice::( + &msg.message.packet.data, + ) + .map_err(native_vp::Error::new)?; + let receiver = packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver), addr); + for token_id in &packet_data.token_ids.0 { + let ibc_trace = + ibc_trace_for_nft(&packet_data.class_id, token_id); + acc = self.apply_recv_msg( + acc, + &msg.message, + ibc_trace, + Amount::from_u64(1), + )?; + } + } } // Ignore all other IBC events _ => {} @@ -607,7 +615,7 @@ where let changed_balances = ibc_msgs.iter().try_fold(changed_balances, |acc, ibc_msg| { // Apply all IBC packets to the changed balances structure - self.apply_ibc_packet(acc, ibc_msg, keys_changed) + self.apply_ibc_packet(acc, ibc_msg) })?; Ok(changed_balances) diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 9b7cf111f3..0c4dd1a6dc 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -50,7 +50,7 @@ use namada_governance::storage::proposal::{ InitProposalData, ProposalType, VoteProposalData, }; use namada_governance::storage::vote::ProposalVote; -use namada_ibc::storage::{channel_key, ibc_token}; +use namada_ibc::storage::{channel_key, convert_to_address}; use namada_ibc::{is_nft_trace, MsgNftTransfer, MsgTransfer}; use namada_proof_of_stake::parameters::{ PosParams, MAX_VALIDATOR_METADATA_LEN, @@ -3488,13 +3488,8 @@ pub async fn gen_ibc_shielding_transfer( let ibc_denom = rpc::query_ibc_denom(context, &args.token, Some(&source)).await; let token = if args.refund { - if ibc_denom.contains('/') { - ibc_token(ibc_denom) - } else { - // the token is a base token - Address::decode(&ibc_denom) - .map_err(|e| Error::Other(format!("Invalid token: {e}")))? - } + convert_to_address(ibc_denom) + .map_err(|e| Error::Other(format!("Invalid token: {e}")))? } else { // Need to check the prefix namada_ibc::received_ibc_token( From 60ea876cc79acf04ca94f76092b10f18f6f32f96 Mon Sep 17 00:00:00 2001 From: yito88 Date: Thu, 20 Jun 2024 10:15:42 +0200 Subject: [PATCH 21/39] refactoring: add trace.rs --- crates/apps_lib/src/cli/context.rs | 3 +- crates/ibc/src/context/common.rs | 4 +- crates/ibc/src/context/nft_transfer.rs | 16 +-- crates/ibc/src/context/token_transfer.rs | 8 +- crates/ibc/src/lib.rs | 44 +------ crates/ibc/src/storage.rs | 114 +----------------- crates/namada/src/ledger/ibc/mod.rs | 2 +- crates/namada/src/ledger/native_vp/ibc/mod.rs | 21 ++-- crates/namada/src/ledger/native_vp/masp.rs | 2 +- .../namada/src/ledger/native_vp/multitoken.rs | 2 +- crates/sdk/src/rpc.rs | 2 +- crates/sdk/src/tx.rs | 5 +- crates/sdk/src/wallet/mod.rs | 2 +- crates/tests/src/vm_host_env/ibc.rs | 5 +- crates/tests/src/vm_host_env/mod.rs | 4 +- crates/tx_prelude/src/ibc.rs | 4 +- 16 files changed, 49 insertions(+), 189 deletions(-) diff --git a/crates/apps_lib/src/cli/context.rs b/crates/apps_lib/src/cli/context.rs index db94b7ad9a..58b5862960 100644 --- a/crates/apps_lib/src/cli/context.rs +++ b/crates/apps_lib/src/cli/context.rs @@ -11,9 +11,8 @@ use namada::core::chain::ChainId; use namada::core::ethereum_events::EthAddress; use namada::core::key::*; use namada::core::masp::*; -use namada::ibc::{is_ibc_denom, is_nft_trace}; +use namada::ibc::trace::{ibc_token, is_ibc_denom, is_nft_trace}; use namada::io::Io; -use namada::ledger::ibc::storage::ibc_token; use namada_sdk::masp::fs::FsShieldedUtils; use namada_sdk::masp::ShieldedContext; use namada_sdk::wallet::Wallet; diff --git a/crates/ibc/src/context/common.rs b/crates/ibc/src/context/common.rs index dcc14b7049..cf91029bfb 100644 --- a/crates/ibc/src/context/common.rs +++ b/crates/ibc/src/context/common.rs @@ -34,7 +34,7 @@ use sha2::Digest; use super::client::{AnyClientState, AnyConsensusState}; use super::storage::IbcStorageContext; -use crate::{storage, NftClass, NftMetadata}; +use crate::{storage, trace, NftClass, NftMetadata}; /// Result of IBC common function call pub type Result = std::result::Result; @@ -716,7 +716,7 @@ pub trait IbcCommonContext: IbcStorageContext { token_id: &TokenId, owner: &Address, ) -> Result { - let ibc_token = storage::ibc_token_for_nft(class_id, token_id); + let ibc_token = trace::ibc_token_for_nft(class_id, token_id); let balance_key = balance_key(&ibc_token, owner); let amount = self.read::(&balance_key)?; Ok(amount == Some(Amount::from_u64(1))) diff --git a/crates/ibc/src/context/nft_transfer.rs b/crates/ibc/src/context/nft_transfer.rs index 85d9aad44e..e7317ba94e 100644 --- a/crates/ibc/src/context/nft_transfer.rs +++ b/crates/ibc/src/context/nft_transfer.rs @@ -17,7 +17,7 @@ use namada_core::address::Address; use namada_core::token::Amount; use super::common::IbcCommonContext; -use crate::{storage, NftClass, NftMetadata, IBC_ESCROW_ADDRESS}; +use crate::{trace, NftClass, NftMetadata, IBC_ESCROW_ADDRESS}; /// NFT transfer context to handle tokens #[derive(Debug)] @@ -95,8 +95,8 @@ where class_id: &PrefixedClassId, token_id: &TokenId, ) -> Result<(), NftTransferError> { - let ibc_trace = format!("{class_id}/{token_id}"); - let trace_hash = storage::calc_hash(&ibc_trace); + let ibc_trace = trace::ibc_trace_for_nft(class_id, token_id); + let trace_hash = trace::calc_hash(&ibc_trace); self.inner .borrow_mut() @@ -241,7 +241,7 @@ where class_id: &PrefixedClassId, token_id: &TokenId, ) -> Option { - Some(storage::calc_hash(format!("{class_id}/{token_id}"))) + Some(trace::calc_hash(format!("{class_id}/{token_id}"))) } /// Returns the NFT @@ -300,7 +300,7 @@ where token_id: &TokenId, _memo: &Memo, ) -> Result<(), NftTransferError> { - let ibc_token = storage::ibc_token_for_nft(class_id, token_id); + let ibc_token = trace::ibc_token_for_nft(class_id, token_id); self.add_withdraw(&ibc_token)?; @@ -324,7 +324,7 @@ where class_id: &PrefixedClassId, token_id: &TokenId, ) -> Result<(), NftTransferError> { - let ibc_token = storage::ibc_token_for_nft(class_id, token_id); + let ibc_token = trace::ibc_token_for_nft(class_id, token_id); self.add_deposit(&ibc_token)?; @@ -347,7 +347,7 @@ where token_uri: Option<&TokenUri>, token_data: Option<&TokenData>, ) -> Result<(), NftTransferError> { - let ibc_token = storage::ibc_token_for_nft(class_id, token_id); + let ibc_token = trace::ibc_token_for_nft(class_id, token_id); // create or update the metadata let metadata = NftMetadata { @@ -378,7 +378,7 @@ where token_id: &TokenId, _memo: &Memo, ) -> Result<(), NftTransferError> { - let ibc_token = storage::ibc_token_for_nft(class_id, token_id); + let ibc_token = trace::ibc_token_for_nft(class_id, token_id); self.update_mint_amount(&ibc_token, false)?; self.add_withdraw(&ibc_token)?; diff --git a/crates/ibc/src/context/token_transfer.rs b/crates/ibc/src/context/token_transfer.rs index ca1128ea68..7d0ebee13e 100644 --- a/crates/ibc/src/context/token_transfer.rs +++ b/crates/ibc/src/context/token_transfer.rs @@ -17,7 +17,7 @@ use namada_core::uint::Uint; use namada_token::Amount; use super::common::IbcCommonContext; -use crate::{storage, IBC_ESCROW_ADDRESS}; +use crate::{trace, IBC_ESCROW_ADDRESS}; /// Token transfer context to handle tokens #[derive(Debug)] @@ -54,7 +54,7 @@ where ) -> Result<(Address, Amount), TokenTransferError> { let token = match Address::decode(coin.denom.base_denom.as_str()) { Ok(token_addr) if coin.denom.trace_path.is_empty() => token_addr, - _ => storage::ibc_token(coin.denom.to_string()), + _ => trace::ibc_token(coin.denom.to_string()), }; // Convert IBC amount to Namada amount for the token @@ -146,7 +146,7 @@ where return Ok(()); } let ibc_denom = coin.denom.to_string(); - let trace_hash = storage::calc_hash(&ibc_denom); + let trace_hash = trace::calc_hash(&ibc_denom); self.inner .borrow_mut() @@ -224,7 +224,7 @@ where } fn denom_hash_string(&self, denom: &PrefixedDenom) -> Option { - Some(storage::calc_hash(denom.to_string())) + Some(trace::calc_hash(denom.to_string())) } } diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index a52e7f982e..494cad1420 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -24,12 +24,12 @@ mod msg; mod nft; pub mod parameters; pub mod storage; +pub mod trace; use std::cell::RefCell; use std::collections::BTreeSet; use std::fmt::Debug; use std::rc::Rc; -use std::str::FromStr; pub use actions::transfer_over_ibc; use borsh::BorshDeserialize; @@ -48,16 +48,13 @@ use ibc::apps::nft_transfer::handler::{ use ibc::apps::nft_transfer::types::error::NftTransferError; use ibc::apps::nft_transfer::types::{ ack_success_b64, is_receiver_chain_source as is_nft_receiver_chain_source, - PrefixedClassId, TokenId, TracePath as NftTracePath, - TracePrefix as NftTracePrefix, + PrefixedClassId, TokenId, TracePrefix as NftTracePrefix, }; use ibc::apps::transfer::handler::{ send_transfer_execute, send_transfer_validate, }; use ibc::apps::transfer::types::error::TokenTransferError; -use ibc::apps::transfer::types::{ - is_receiver_chain_source, PrefixedDenom, TracePath, TracePrefix, -}; +use ibc::apps::transfer::types::{is_receiver_chain_source, TracePrefix}; use ibc::core::channel::types::acknowledgement::{ Acknowledgement, AcknowledgementStatus, }; @@ -385,7 +382,7 @@ fn received_ibc_trace( } if let Some((trace_path, base_class_id, token_id)) = - is_nft_trace(&base_trace) + trace::is_nft_trace(&base_trace) { let mut class_id = PrefixedClassId { trace_path, @@ -433,41 +430,10 @@ pub fn received_ibc_token( dest_port_id, dest_channel_id, )?; - storage::convert_to_address(ibc_trace) + trace::convert_to_address(ibc_trace) .map_err(|e| Error::Trace(format!("Invalid base token: {e}"))) } -/// Returns the trace path and the token string if the denom is an IBC -/// denom. -pub fn is_ibc_denom(denom: impl AsRef) -> Option<(TracePath, String)> { - let prefixed_denom = PrefixedDenom::from_str(denom.as_ref()).ok()?; - let base_denom = prefixed_denom.base_denom.to_string(); - if prefixed_denom.trace_path.is_empty() || base_denom.contains('/') { - // The denom is just a token or an NFT trace - return None; - } - // The base token isn't decoded because it could be non Namada token - Some((prefixed_denom.trace_path, base_denom)) -} - -/// Returns the trace path and the token string if the trace is an NFT one -pub fn is_nft_trace( - trace: impl AsRef, -) -> Option<(NftTracePath, String, String)> { - // The trace should be {port}/{channel}/.../{class_id}/{token_id} - if let Some((class_id, token_id)) = trace.as_ref().rsplit_once('/') { - let prefixed_class_id = PrefixedClassId::from_str(class_id).ok()?; - // The base token isn't decoded because it could be non Namada token - Some(( - prefixed_class_id.trace_path, - prefixed_class_id.base_class_id.to_string(), - token_id.to_string(), - )) - } else { - None - } -} - #[cfg(any(test, feature = "testing"))] /// Testing helpers ans strategies for IBC pub mod testing { diff --git a/crates/ibc/src/storage.rs b/crates/ibc/src/storage.rs index 7c02e37702..44b6da1ff0 100644 --- a/crates/ibc/src/storage.rs +++ b/crates/ibc/src/storage.rs @@ -2,10 +2,7 @@ use std::str::FromStr; -use ibc::apps::nft_transfer::types::{ - PrefixedClassId, TokenId, TracePath as NftTracePath, -}; -use ibc::apps::transfer::types::{PrefixedDenom, TracePath}; +use ibc::apps::nft_transfer::types::{PrefixedClassId, TokenId}; use ibc::core::client::types::Height; use ibc::core::host::types::identifiers::{ ChannelId, ClientId, ConnectionId, PortId, Sequence, @@ -15,19 +12,18 @@ use ibc::core::host::types::path::{ ClientStatePath, CommitmentPath, ConnectionPath, Path, PortPath, ReceiptPath, SeqAckPath, SeqRecvPath, SeqSendPath, }; -use namada_core::address::{Address, InternalAddress, HASH_LEN, SHA_HASH_LEN}; -use namada_core::ibc::IbcTokenHash; +use namada_core::address::{Address, InternalAddress}; use namada_core::storage::{DbKeySeg, Key, KeySeg}; use namada_core::token::Amount; use namada_events::{EmitEvents, EventLevel}; use namada_state::{StorageRead, StorageResult, StorageWrite}; use namada_token as token; use namada_token::event::{TokenEvent, TokenOperation, UserAccount}; -use sha2::{Digest, Sha256}; use thiserror::Error; use crate::event::TOKEN_EVENT_DESCRIPTOR; use crate::parameters::IbcParameters; +use crate::trace::{ibc_token, ibc_token_for_nft}; const CLIENTS_COUNTER_PREFIX: &str = "clients"; const CONNECTIONS_COUNTER_PREFIX: &str = "connections"; @@ -483,110 +479,6 @@ pub fn ibc_trace_key( .expect("Cannot obtain a storage key") } -/// Hash the denom -#[inline] -pub fn calc_hash(denom: impl AsRef) -> String { - calc_ibc_token_hash(denom).to_string() -} - -/// Hash the denom -pub fn calc_ibc_token_hash(denom: impl AsRef) -> IbcTokenHash { - let hash = { - let mut hasher = Sha256::new(); - hasher.update(denom.as_ref()); - hasher.finalize() - }; - - let input: &[u8; SHA_HASH_LEN] = hash.as_ref(); - let mut output = [0; HASH_LEN]; - - output.copy_from_slice(&input[..HASH_LEN]); - IbcTokenHash(output) -} - -/// Obtain the IbcToken with the hash from the given denom -pub fn ibc_token(denom: impl AsRef) -> Address { - let hash = calc_ibc_token_hash(&denom); - Address::Internal(InternalAddress::IbcToken(hash)) -} - -/// Obtain the IbcToken with the hash from the given NFT class ID and NFT ID -pub fn ibc_token_for_nft( - class_id: &PrefixedClassId, - token_id: &TokenId, -) -> Address { - ibc_token(ibc_trace_for_nft(class_id, token_id)) -} - -/// Obtain the IBC trace from the given NFT class ID and NFT ID -pub fn ibc_trace_for_nft( - class_id: &PrefixedClassId, - token_id: &TokenId, -) -> String { - format!("{class_id}/{token_id}") -} - -/// Convert the given IBC trace to [`Address`] -pub fn convert_to_address(ibc_trace: impl AsRef) -> Result
{ - // validation - if is_ibc_denom(&ibc_trace).is_none() && is_nft_trace(&ibc_trace).is_none() - { - return Err(Error::InvalidIbcTrace(format!( - "Invalid IBC trace: {}", - ibc_trace.as_ref() - ))); - } - - if ibc_trace.as_ref().contains('/') { - Ok(ibc_token(ibc_trace.as_ref())) - } else { - Address::decode(ibc_trace.as_ref()) - .map_err(|e| Error::InvalidIbcTrace(e.to_string())) - } -} - -/// Returns the trace path and the token string if the denom is an IBC -/// denom. -pub fn is_ibc_denom(denom: impl AsRef) -> Option<(TracePath, String)> { - let prefixed_denom = PrefixedDenom::from_str(denom.as_ref()).ok()?; - let base_denom = prefixed_denom.base_denom.to_string(); - if prefixed_denom.trace_path.is_empty() || base_denom.contains('/') { - // The denom is just a token or an NFT trace - return None; - } - // The base token isn't decoded because it could be non Namada token - Some((prefixed_denom.trace_path, base_denom)) -} - -/// Returns the trace path and the token string if the trace is an NFT one -pub fn is_nft_trace( - trace: impl AsRef, -) -> Option<(NftTracePath, String, String)> { - // The trace should be {port}/{channel}/.../{class_id}/{token_id} - if let Some((class_id, token_id)) = trace.as_ref().rsplit_once('/') { - let prefixed_class_id = PrefixedClassId::from_str(class_id).ok()?; - // The base token isn't decoded because it could be non Namada token - Some(( - prefixed_class_id.trace_path, - prefixed_class_id.base_class_id.to_string(), - token_id.to_string(), - )) - } else { - None - } -} - -/// Return true if the source of the given IBC trace is this chain -pub fn is_sender_chain_source( - trace: impl AsRef, - src_port_id: &PortId, - src_channel_id: &ChannelId, -) -> bool { - !trace - .as_ref() - .starts_with(&format!("{src_port_id}/{src_channel_id}")) -} - /// Returns true if the given key is for IBC pub fn is_ibc_key(key: &Key) -> bool { matches!(&key.segments[0], diff --git a/crates/namada/src/ledger/ibc/mod.rs b/crates/namada/src/ledger/ibc/mod.rs index 4076a1de92..be7f4f5144 100644 --- a/crates/namada/src/ledger/ibc/mod.rs +++ b/crates/namada/src/ledger/ibc/mod.rs @@ -6,7 +6,7 @@ use namada_ibc::storage::{ channel_counter_key, client_counter_key, connection_counter_key, deposit_prefix, withdraw_prefix, }; -pub use namada_ibc::{parameters, storage}; +pub use namada_ibc::{parameters, storage, trace}; use namada_state::{ DBIter, Key, State, StorageError, StorageHasher, StorageRead, StorageWrite, WlState, DB, diff --git a/crates/namada/src/ledger/native_vp/ibc/mod.rs b/crates/namada/src/ledger/native_vp/ibc/mod.rs index 303e4abcdc..14de956f35 100644 --- a/crates/namada/src/ledger/native_vp/ibc/mod.rs +++ b/crates/namada/src/ledger/native_vp/ibc/mod.rs @@ -28,9 +28,10 @@ use thiserror::Error; use crate::ibc::core::host::types::identifiers::ChainId as IbcChainId; use crate::ledger::ibc::storage::{ - calc_hash, deposit_key, get_limits, is_ibc_key, is_ibc_trace_key, - mint_amount_key, withdraw_key, + deposit_key, get_limits, is_ibc_key, is_ibc_trace_key, mint_amount_key, + withdraw_key, }; +use crate::ledger::ibc::trace::calc_hash; use crate::ledger::native_vp::{self, Ctx, NativeVp}; use crate::ledger::parameters::read_epoch_duration_parameter; use crate::token::storage_key::is_any_token_balance_key; @@ -506,14 +507,14 @@ mod tests { use crate::ibc::primitives::proto::{Any, Protobuf}; use crate::ibc::primitives::{Timestamp, ToProto}; use crate::ibc::storage::{ - ack_key, calc_hash, channel_counter_key, channel_key, - client_connections_key, client_counter_key, client_state_key, - client_update_height_key, client_update_timestamp_key, commitment_key, - connection_counter_key, connection_key, consensus_state_key, ibc_token, - ibc_trace_key, mint_amount_key, next_sequence_ack_key, - next_sequence_recv_key, next_sequence_send_key, nft_class_key, - nft_metadata_key, receipt_key, + ack_key, channel_counter_key, channel_key, client_connections_key, + client_counter_key, client_state_key, client_update_height_key, + client_update_timestamp_key, commitment_key, connection_counter_key, + connection_key, consensus_state_key, ibc_trace_key, mint_amount_key, + next_sequence_ack_key, next_sequence_recv_key, next_sequence_send_key, + nft_class_key, nft_metadata_key, receipt_key, }; + use crate::ibc::trace::{calc_hash, ibc_token}; use crate::ibc::{MsgNftTransfer, MsgTransfer, NftClass, NftMetadata}; use crate::key::testing::keypair_1; use crate::ledger::gas::VpGasMeter; @@ -3016,7 +3017,7 @@ mod tests { let class_id = get_nft_class_id(); let token_id = get_nft_id(); let sender = established_address_1(); - let ibc_token = ibc::storage::ibc_token_for_nft(&class_id, &token_id); + let ibc_token = ibc::trace::ibc_token_for_nft(&class_id, &token_id); let balance_key = balance_key(&ibc_token, &sender); let amount = Amount::from_u64(1); state diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 13fcb4057b..1e5cc492c1 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -24,7 +24,7 @@ use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; use namada_ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; -use namada_ibc::storage::{ +use namada_ibc::trace::{ convert_to_address, ibc_trace_for_nft, is_sender_chain_source, }; use namada_ibc::IbcMessage; diff --git a/crates/namada/src/ledger/native_vp/multitoken.rs b/crates/namada/src/ledger/native_vp/multitoken.rs index 1d88396dd2..e55df8a957 100644 --- a/crates/namada/src/ledger/native_vp/multitoken.rs +++ b/crates/namada/src/ledger/native_vp/multitoken.rs @@ -418,7 +418,7 @@ mod tests { }; use crate::key::testing::keypair_1; use crate::ledger::gas::VpGasMeter; - use crate::ledger::ibc::storage::ibc_token; + use crate::ledger::ibc::trace::ibc_token; use crate::storage::TxIndex; use crate::token::storage_key::{balance_key, minted_balance_key}; use crate::vm::wasm::compilation_cache::common::testing::cache as wasm_cache; diff --git a/crates/sdk/src/rpc.rs b/crates/sdk/src/rpc.rs index 8b42fea411..94b1653698 100644 --- a/crates/sdk/src/rpc.rs +++ b/crates/sdk/src/rpc.rs @@ -32,10 +32,10 @@ use namada_governance::storage::proposal::StorageProposal; use namada_governance::utils::{ compute_proposal_result, ProposalResult, ProposalVotes, Vote, }; -use namada_ibc::is_ibc_denom; use namada_ibc::storage::{ ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, }; +use namada_ibc::trace::is_ibc_denom; use namada_parameters::{storage as params_storage, EpochDuration}; use namada_proof_of_stake::parameters::PosParams; use namada_proof_of_stake::types::{ diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 0c4dd1a6dc..d123f04456 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -50,8 +50,9 @@ use namada_governance::storage::proposal::{ InitProposalData, ProposalType, VoteProposalData, }; use namada_governance::storage::vote::ProposalVote; -use namada_ibc::storage::{channel_key, convert_to_address}; -use namada_ibc::{is_nft_trace, MsgNftTransfer, MsgTransfer}; +use namada_ibc::storage::channel_key; +use namada_ibc::trace::{convert_to_address, is_nft_trace}; +use namada_ibc::{MsgNftTransfer, MsgTransfer}; use namada_proof_of_stake::parameters::{ PosParams, MAX_VALIDATOR_METADATA_LEN, }; diff --git a/crates/sdk/src/wallet/mod.rs b/crates/sdk/src/wallet/mod.rs index d071af5ccc..c05afcda6b 100644 --- a/crates/sdk/src/wallet/mod.rs +++ b/crates/sdk/src/wallet/mod.rs @@ -22,7 +22,7 @@ use namada_core::masp::{ ExtendedSpendingKey, ExtendedViewingKey, PaymentAddress, }; use namada_core::time::DateTimeUtc; -use namada_ibc::is_ibc_denom; +use namada_ibc::trace::is_ibc_denom; pub use pre_genesis::gen_key_to_store; use rand::CryptoRng; use rand_core::RngCore; diff --git a/crates/tests/src/vm_host_env/ibc.rs b/crates/tests/src/vm_host_env/ibc.rs index d84aa6cd5b..4baf4dd6d5 100644 --- a/crates/tests/src/vm_host_env/ibc.rs +++ b/crates/tests/src/vm_host_env/ibc.rs @@ -59,9 +59,10 @@ pub use namada::ledger::ibc::storage::{ ack_key, channel_counter_key, channel_key, client_counter_key, client_state_key, client_update_height_key, client_update_timestamp_key, commitment_key, connection_counter_key, connection_key, - consensus_state_key, ibc_token, next_sequence_ack_key, - next_sequence_recv_key, next_sequence_send_key, port_key, receipt_key, + consensus_state_key, next_sequence_ack_key, next_sequence_recv_key, + next_sequence_send_key, port_key, receipt_key, }; +pub use namada::ledger::ibc::trace::ibc_token; use namada::ledger::native_vp::ibc::{ get_dummy_genesis_validator, get_dummy_header as tm_dummy_header, Ibc, }; diff --git a/crates/tests/src/vm_host_env/mod.rs b/crates/tests/src/vm_host_env/mod.rs index 3740ba6ee7..5a46738f76 100644 --- a/crates/tests/src/vm_host_env/mod.rs +++ b/crates/tests/src/vm_host_env/mod.rs @@ -33,7 +33,7 @@ mod tests { use namada::ibc::context::transfer_mod::testing::DummyTransferModule; use namada::ibc::primitives::ToProto; use namada::ibc::Error as IbcActionError; - use namada::ledger::ibc::storage as ibc_storage; + use namada::ledger::ibc::{storage as ibc_storage, trace as ibc_trace}; use namada::ledger::native_vp::ibc::{ get_dummy_header as tm_dummy_header, Error as IbcError, }; @@ -1281,7 +1281,7 @@ mod tests { writes.extend(channel_writes); // the origin-specific token let denom = format!("{}/{}/{}", port_id, channel_id, token); - let ibc_token = ibc_storage::ibc_token(&denom); + let ibc_token = ibc_trace::ibc_token(&denom); let balance_key = token::storage_key::balance_key(&ibc_token, &sender); let init_bal = Amount::native_whole(100); writes.insert(balance_key.clone(), init_bal.serialize_to_vec()); diff --git a/crates/tx_prelude/src/ibc.rs b/crates/tx_prelude/src/ibc.rs index 678e27ccf8..b11625656a 100644 --- a/crates/tx_prelude/src/ibc.rs +++ b/crates/tx_prelude/src/ibc.rs @@ -8,9 +8,9 @@ use namada_core::address::Address; use namada_core::token::Amount; pub use namada_ibc::event::{IbcEvent, IbcEventType}; pub use namada_ibc::storage::{ - burn_tokens, ibc_token, is_ibc_key, mint_limit_key, mint_tokens, - throughput_limit_key, + burn_tokens, is_ibc_key, mint_limit_key, mint_tokens, throughput_limit_key, }; +pub use namada_ibc::trace::ibc_token; pub use namada_ibc::{ IbcActions, IbcCommonContext, IbcStorageContext, NftTransferModule, ProofSpec, TransferModule, From a942176b88cfe7fa277cb8a32f97c03df68dc8b9 Mon Sep 17 00:00:00 2001 From: yito88 Date: Fri, 21 Jun 2024 13:50:39 +0200 Subject: [PATCH 22/39] reduce assumptions for IBC VP --- Cargo.lock | 1 + crates/ibc/Cargo.toml | 1 + crates/ibc/src/context/common.rs | 73 ++--- crates/ibc/src/lib.rs | 23 +- crates/namada/src/ledger/native_vp/masp.rs | 333 ++++++++++++++------- wasm/Cargo.lock | 1 + wasm_for_tests/Cargo.lock | 1 + 7 files changed, 268 insertions(+), 165 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5266d7563f..9c2d7a8224 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5032,6 +5032,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.9.9", + "smooth-operator", "thiserror", "tracing", ] diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 6822e0b40f..9d15fa70ce 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -45,6 +45,7 @@ prost.workspace = true serde.workspace = true serde_json.workspace = true sha2.workspace = true +smooth-operator.workspace = true thiserror.workspace = true tracing.workspace = true diff --git a/crates/ibc/src/context/common.rs b/crates/ibc/src/context/common.rs index cf91029bfb..912206e558 100644 --- a/crates/ibc/src/context/common.rs +++ b/crates/ibc/src/context/common.rs @@ -11,7 +11,6 @@ use ibc::core::channel::types::commitment::{ }; use ibc::core::channel::types::error::{ChannelError, PacketError}; use ibc::core::channel::types::packet::Receipt; -use ibc::core::channel::types::timeout::TimeoutHeight; use ibc::core::client::types::error::ClientError; use ibc::core::client::types::Height; use ibc::core::connection::types::error::ConnectionError; @@ -27,10 +26,10 @@ use namada_core::storage::{BlockHeight, Key}; use namada_core::tendermint::Time as TmTime; use namada_core::time::DurationSecs; use namada_parameters::storage::get_max_expected_time_per_block_key; +use namada_storage::{Error as StorageError, StorageRead}; use namada_token::storage_key::balance_key; use namada_token::Amount; use prost::Message; -use sha2::Digest; use super::client::{AnyClientState, AnyConsensusState}; use super::storage::IbcStorageContext; @@ -421,7 +420,7 @@ pub trait IbcCommonContext: IbcStorageContext { channel_id: &ChannelId, ) -> Result { let key = storage::next_sequence_send_key(port_id, channel_id); - self.read_sequence(&key) + read_sequence(self, &key).map_err(ContextError::from) } /// Store the NextSequenceSend @@ -442,7 +441,7 @@ pub trait IbcCommonContext: IbcStorageContext { channel_id: &ChannelId, ) -> Result { let key = storage::next_sequence_recv_key(port_id, channel_id); - self.read_sequence(&key) + read_sequence(self, &key).map_err(ContextError::from) } /// Store the NextSequenceRecv @@ -463,7 +462,7 @@ pub trait IbcCommonContext: IbcStorageContext { channel_id: &ChannelId, ) -> Result { let key = storage::next_sequence_ack_key(port_id, channel_id); - self.read_sequence(&key) + read_sequence(self, &key).map_err(ContextError::from) } /// Store the NextSequenceAck @@ -477,57 +476,12 @@ pub trait IbcCommonContext: IbcStorageContext { self.store_sequence(&key, seq) } - /// Read a sequence - fn read_sequence(&self, key: &Key) -> Result { - match self.read_bytes(key)? { - Some(value) => { - let value: [u8; 8] = - value.try_into().map_err(|_| ChannelError::Other { - description: format!( - "The sequence value wasn't u64: Key {key}", - ), - })?; - Ok(u64::from_be_bytes(value).into()) - } - // when the sequence has never been used, returns the initial value - None => Ok(1.into()), - } - } - /// Store the sequence fn store_sequence(&mut self, key: &Key, sequence: Sequence) -> Result<()> { let bytes = u64::from(sequence).to_be_bytes().to_vec(); self.write_bytes(key, bytes).map_err(ContextError::from) } - /// Calculate the hash - fn hash(value: &[u8]) -> Vec { - sha2::Sha256::digest(value).to_vec() - } - - /// Calculate the packet commitment - fn compute_packet_commitment( - packet_data: &[u8], - timeout_height: &TimeoutHeight, - timeout_timestamp: &Timestamp, - ) -> PacketCommitment { - let mut hash_input = - timeout_timestamp.nanoseconds().to_be_bytes().to_vec(); - - let revision_number = - timeout_height.commitment_revision_number().to_be_bytes(); - hash_input.append(&mut revision_number.to_vec()); - - let revision_height = - timeout_height.commitment_revision_height().to_be_bytes(); - hash_input.append(&mut revision_height.to_vec()); - - let packet_data_hash = Self::hash(packet_data); - hash_input.append(&mut packet_data_hash.to_vec()); - - Self::hash(&hash_input).into() - } - /// Get the packet commitment fn packet_commitment( &self, @@ -766,3 +720,22 @@ pub trait IbcCommonContext: IbcStorageContext { self.write(&key, amount).map_err(ContextError::from) } } + +/// Read and decode the IBC sequence +pub fn read_sequence( + storage: &S, + key: &Key, +) -> std::result::Result { + match storage.read_bytes(key)? { + Some(value) => { + let value: [u8; 8] = value.try_into().map_err(|_| { + StorageError::new_alloc(format!( + "The sequence value wasn't u64: Key {key}", + )) + })?; + Ok(u64::from_be_bytes(value).into()) + } + // when the sequence has never been used, returns the initial value + None => Ok(1.into()), + } +} diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index 494cad1420..05b095de70 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -67,12 +67,14 @@ use ibc::core::handler::types::error::ContextError; use ibc::core::handler::types::events::Error as RawIbcEventError; use ibc::core::handler::types::msgs::MsgEnvelope; use ibc::core::host::types::error::IdentifierError; -use ibc::core::host::types::identifiers::{ChannelId, PortId}; +use ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; use ibc::core::router::types::error::RouterError; use ibc::primitives::proto::Any; pub use ibc::*; pub use msg::*; use namada_core::address::{self, Address}; +use namada_core::arith::checked; +use namada_storage::{Error as StorageError, StorageRead}; use namada_token::ShieldingTransfer; pub use nft::*; use prost::Message; @@ -355,6 +357,25 @@ pub fn decode_message(tx_data: &[u8]) -> Result { Err(Error::DecodingData) } +/// Return the last sequence send +pub fn get_last_sequence_send( + storage: &S, + port_id: &PortId, + channel_id: &ChannelId, +) -> Result { + let seq_key = storage::next_sequence_send_key(port_id, channel_id); + let next_seq: u64 = + context::common::read_sequence(storage, &seq_key)?.into(); + if next_seq <= 1 { + // No transfer heppened + return Err(StorageError::new_alloc(format!( + "No IBC transfer happened: Port ID {port_id}, Channel ID \ + {channel_id}", + ))); + } + Ok(checked!(next_seq - 1)?.into()) +} + fn received_ibc_trace( base_trace: impl AsRef, src_port_id: &PortId, diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 1e5cc492c1..81dec19de7 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -3,7 +3,6 @@ use std::cmp::Ordering; use std::collections::{BTreeMap, BTreeSet}; -use borsh::BorshDeserialize; use masp_primitives::asset_type::AssetType; use masp_primitives::merkle_tree::CommitmentTree; use masp_primitives::sapling::Node; @@ -16,18 +15,25 @@ use namada_core::address::Address; use namada_core::arith::{checked, CheckedAdd, CheckedSub}; use namada_core::booleans::BoolResultUnitExt; use namada_core::collections::HashSet; +use namada_core::ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as IbcMsgNftTransfer; use namada_core::ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; +use namada_core::ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use namada_core::ibc::apps::transfer::types::packet::PacketData; use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; +use namada_ibc::core::channel::types::commitment::{ + compute_packet_commitment, PacketCommitment, +}; use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; +use namada_ibc::core::channel::types::timeout::TimeoutHeight; use namada_ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; +use namada_ibc::primitives::Timestamp; use namada_ibc::trace::{ convert_to_address, ibc_trace_for_nft, is_sender_chain_source, }; -use namada_ibc::IbcMessage; +use namada_ibc::{get_last_sequence_send, IbcMessage}; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; use namada_token::read_denom; @@ -41,11 +47,9 @@ use token::storage_key::{ }; use token::Amount; -use crate::address::{InternalAddress, IBC, MASP}; +use crate::address::{IBC, MASP}; use crate::ledger::ibc::storage; -use crate::ledger::ibc::storage::{ - ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, -}; +use crate::ledger::ibc::storage::{commitment_key, receipt_key}; use crate::ledger::native_vp; use crate::ledger::native_vp::{Ctx, NativeVp}; use crate::sdk::ibc::apps::transfer::types::{ack_success_b64, PORT_ID_STR}; @@ -91,6 +95,78 @@ struct ChangedBalances { post: BTreeMap>, } +/// IBC transfer info +struct IbcTransferInfo { + src_port_id: PortId, + src_channel_id: ChannelId, + timeout_height: TimeoutHeight, + timeout_timestamp: Timestamp, + packet_data: Vec, + ibc_traces: Vec, + amount: Amount, + receiver: String, +} + +impl TryFrom for IbcTransferInfo { + type Error = Error; + + fn try_from( + message: IbcMsgTransfer, + ) -> std::result::Result { + let packet_data = serde_json::to_vec(&message.packet_data) + .map_err(native_vp::Error::new)?; + let ibc_traces = vec![message.packet_data.token.denom.to_string()]; + let amount = message + .packet_data + .token + .amount + .try_into() + .into_storage_result()?; + let receiver = message.packet_data.receiver.to_string(); + Ok(Self { + src_port_id: message.port_id_on_a, + src_channel_id: message.chan_id_on_a, + timeout_height: message.timeout_height_on_b, + timeout_timestamp: message.timeout_timestamp_on_b, + packet_data, + ibc_traces, + amount, + receiver, + }) + } +} + +impl TryFrom for IbcTransferInfo { + type Error = Error; + + fn try_from( + message: IbcMsgNftTransfer, + ) -> std::result::Result { + let packet_data = serde_json::to_vec(&message.packet_data) + .map_err(native_vp::Error::new)?; + let ibc_traces = message + .packet_data + .token_ids + .0 + .iter() + .map(|token_id| { + ibc_trace_for_nft(&message.packet_data.class_id, token_id) + }) + .collect(); + let receiver = message.packet_data.receiver.to_string(); + Ok(Self { + src_port_id: message.port_id_on_a, + src_channel_id: message.chan_id_on_a, + timeout_height: message.timeout_height_on_b, + timeout_timestamp: message.timeout_timestamp_on_b, + packet_data, + ibc_traces, + amount: Amount::from_u64(1), + receiver, + }) + } +} + impl<'a, S, CA> MaspVp<'a, S, CA> where S: StateRead, @@ -293,79 +369,130 @@ where Ok(()) } - /// Look up the IBC denomination from a IbcToken. - pub fn query_ibc_denom( + fn check_ibc_transfer( &self, - token: impl AsRef, - owner: Option<&Address>, - ) -> Result { - let hash = match Address::decode(token.as_ref()) { - Ok(Address::Internal(InternalAddress::IbcToken(hash))) => { - hash.to_string() - } - _ => return Ok(token.as_ref().to_string()), - }; - - if let Some(owner) = owner { - let ibc_trace_key = ibc_trace_key(owner.to_string(), &hash); - if let Some(ibc_denom) = self.ctx.read_pre(&ibc_trace_key)? { - return Ok(ibc_denom); - } + ibc_transfer: &IbcTransferInfo, + keys_changed: &BTreeSet, + ) -> Result<()> { + let IbcTransferInfo { + src_port_id, + src_channel_id, + timeout_height, + timeout_timestamp, + packet_data, + .. + } = ibc_transfer; + let sequence = get_last_sequence_send( + &self.ctx.post(), + src_port_id, + src_channel_id, + )?; + let commitment_key = + commitment_key(src_port_id, src_channel_id, sequence); + + if !keys_changed.contains(&commitment_key) { + return Err(Error::NativeVpError(native_vp::Error::AllocMessage( + format!( + "Expected IBC transfer didn't happen: Port ID \ + {src_port_id}, Channel ID {src_channel_id}, Sequence \ + {sequence}" + ), + ))); } - // No owner is specified or the owner doesn't have the token - let ibc_denom_prefix = ibc_trace_key_prefix(None); - let ibc_denoms = self.ctx.iter_prefix(&ibc_denom_prefix)?; - for (key, ibc_denom, gas) in ibc_denoms { - self.ctx.charge_gas(gas)?; - if let Some((_, token_hash)) = - is_ibc_trace_key(&Key::parse(key).into_storage_result()?) - { - if token_hash == hash { - return String::try_from_slice(&ibc_denom[..]) - .into_storage_result() - .map_err(Error::NativeVpError); - } - } + // The commitment is also validated in IBC VP. Make sure that for when + // IBC VP isn't triggered. + let actual: PacketCommitment = self + .ctx + .read_bytes_post(&commitment_key)? + .expect("Commitment should exist") + .into(); + let expected = compute_packet_commitment( + packet_data, + timeout_height, + timeout_timestamp, + ); + if actual != expected { + return Err(Error::NativeVpError(native_vp::Error::AllocMessage( + format!( + "Packet commitment mismatched: Port ID {src_port_id}, \ + Channel ID {src_channel_id}, Sequence {sequence}" + ), + ))); } - Ok(token.as_ref().to_string()) + Ok(()) + } + + fn check_packet_receiving( + &self, + msg: &IbcMsgRecvPacket, + keys_changed: &BTreeSet, + ) -> Result<()> { + let receipt_key = receipt_key( + &msg.packet.port_id_on_b, + &msg.packet.chan_id_on_b, + msg.packet.seq_on_a, + ); + if !keys_changed.contains(&receipt_key) { + return Err(Error::NativeVpError(native_vp::Error::AllocMessage( + format!( + "The packet has not been received: Port ID {}, Channel \ + ID {}, Sequence {}", + msg.packet.port_id_on_b, + msg.packet.chan_id_on_b, + msg.packet.seq_on_a, + ), + ))); + } + Ok(()) } // Apply the given transfer message to the changed balances structure fn apply_transfer_msg( &self, mut acc: ChangedBalances, - src_port_id: &PortId, - src_channel_id: &ChannelId, - ibc_trace: impl AsRef, - amount: Amount, - receiver: impl AsRef, + ibc_transfer: &IbcTransferInfo, + keys_changed: &BTreeSet, ) -> Result { - let token = convert_to_address(&ibc_trace).into_storage_result()?; - let delta = ValueSum::from_pair(token.clone(), amount); - // If there is a transfer to the IBC account, then deduplicate the - // balance increase since we already accounted for it above - if is_sender_chain_source(ibc_trace, src_port_id, src_channel_id) { - let ibc_taddr = addr_taddr(IBC); - let post_entry = acc - .post - .get(&ibc_taddr) - .cloned() - .unwrap_or(ValueSum::zero()); + self.check_ibc_transfer(ibc_transfer, keys_changed)?; + + let IbcTransferInfo { + ibc_traces, + src_port_id, + src_channel_id, + amount, + receiver, + .. + } = ibc_transfer; + + let receiver = ibc_taddr(receiver.clone()); + for ibc_trace in ibc_traces { + let token = convert_to_address(ibc_trace).into_storage_result()?; + let delta = ValueSum::from_pair(token, *amount); + // If there is a transfer to the IBC account, then deduplicate the + // balance increase since we already accounted for it above + if is_sender_chain_source(ibc_trace, src_port_id, src_channel_id) { + let ibc_taddr = addr_taddr(IBC); + let post_entry = acc + .post + .get(&ibc_taddr) + .cloned() + .unwrap_or(ValueSum::zero()); + acc.post.insert( + ibc_taddr, + checked!(post_entry - &delta) + .map_err(native_vp::Error::new)?, + ); + } + // Record an increase to the balance of a specific IBC receiver + let post_entry = + acc.post.get(&receiver).cloned().unwrap_or(ValueSum::zero()); acc.post.insert( - ibc_taddr, - checked!(post_entry - &delta).map_err(native_vp::Error::new)?, + receiver, + checked!(post_entry + &delta).map_err(native_vp::Error::new)?, ); } - // Record an increase to the balance of a specific IBC receiver - let receiver = ibc_taddr(receiver.as_ref().to_string()); - let post_entry = - acc.post.get(&receiver).cloned().unwrap_or(ValueSum::zero()); - acc.post.insert( - receiver, - checked!(post_entry + &delta).map_err(native_vp::Error::new)?, - ); Ok(acc) } @@ -400,7 +527,10 @@ where msg: &IbcMsgRecvPacket, ibc_trace: impl AsRef, amount: Amount, + keys_changed: &BTreeSet, ) -> Result { + self.check_packet_receiving(msg, keys_changed)?; + // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address if self.is_receiving_success( @@ -439,52 +569,28 @@ where fn apply_ibc_packet( &self, mut acc: ChangedBalances, - ibc_msg: &IbcMessage, + ibc_msg: IbcMessage, + keys_changed: &BTreeSet, ) -> Result { match ibc_msg { // This event is emitted on the sender IbcMessage::Transfer(msg) => { // Get the packet commitment from post-storage that corresponds // to this event - let receiver = msg.message.packet_data.receiver.to_string(); + let ibc_transfer = IbcTransferInfo::try_from(msg.message)?; + let receiver = ibc_transfer.receiver.clone(); let addr = TAddrData::Ibc(receiver.clone()); - acc.decoder.insert(ibc_taddr(receiver.clone()), addr); - let ibc_trace = msg.message.packet_data.token.denom.to_string(); - let amount = msg - .message - .packet_data - .token - .amount - .try_into() - .into_storage_result()?; - acc = self.apply_transfer_msg( - acc, - &msg.message.port_id_on_a, - &msg.message.chan_id_on_a, - ibc_trace, - amount, - receiver, - )?; + acc.decoder.insert(ibc_taddr(receiver), addr); + acc = + self.apply_transfer_msg(acc, &ibc_transfer, keys_changed)?; } IbcMessage::NftTransfer(msg) => { - let receiver = msg.message.packet_data.receiver.to_string(); + let ibc_transfer = IbcTransferInfo::try_from(msg.message)?; + let receiver = ibc_transfer.receiver.clone(); let addr = TAddrData::Ibc(receiver.clone()); - acc.decoder.insert(ibc_taddr(receiver.clone()), addr); - for token_id in &msg.message.packet_data.token_ids.0 { - let ibc_trace = ibc_trace_for_nft( - &msg.message.packet_data.class_id, - token_id, - ); - let amount = Amount::from_u64(1); - acc = self.apply_transfer_msg( - acc, - &msg.message.port_id_on_a, - &msg.message.chan_id_on_a, - ibc_trace, - amount, - &receiver, - )?; - } + acc.decoder.insert(ibc_taddr(receiver), addr); + acc = + self.apply_transfer_msg(acc, &ibc_transfer, keys_changed)?; } // This event is emitted on the receiver IbcMessage::RecvPacket(msg) => { @@ -507,6 +613,7 @@ where &msg.message, ibc_denom, amount, + keys_changed, )?; } else { let packet_data = serde_json::from_slice::( @@ -524,6 +631,7 @@ where &msg.message, ibc_trace, Amount::from_u64(1), + keys_changed, )?; } } @@ -595,7 +703,7 @@ where fn validate_state_and_get_transfer_data( &self, keys_changed: &BTreeSet, - ibc_msgs: &[IbcMessage], + ibc_msg: Option, ) -> Result { // Get the changed balance keys let mut counterparts_balances = @@ -611,14 +719,13 @@ where // Enable decoding the IBC address hash changed_balances.decoder.insert(addr_taddr(IBC), ibc_addr); - // Go through the IBC events and note the balance changes they imply - let changed_balances = - ibc_msgs.iter().try_fold(changed_balances, |acc, ibc_msg| { - // Apply all IBC packets to the changed balances structure - self.apply_ibc_packet(acc, ibc_msg) - })?; - - Ok(changed_balances) + // Note the balance changes they imply + match ibc_msg { + Some(ibc_msg) => { + self.apply_ibc_packet(changed_balances, ibc_msg, keys_changed) + } + None => Ok(changed_balances), + } } // Check that MASP Transaction and state changes are valid @@ -639,7 +746,7 @@ where Error::NativeVpError(native_vp::Error::new_const(msg)) })?; let conversion_state = self.ctx.state.in_mem().get_conversion_state(); - let ibc_msgs = self.ctx.get_ibc_message(tx_data).ok(); + let ibc_msg = self.ctx.get_ibc_message(tx_data).ok(); // Get the Transaction object from the actions let masp_section_ref = namada_tx::action::get_masp_section_ref( @@ -673,10 +780,8 @@ where // The Sapling value balance adds to the transparent tx pool let mut transparent_tx_pool = shielded_tx.sapling_value_balance(); // Check the validity of the keys and get the transfer data - let mut changed_balances = self.validate_state_and_get_transfer_data( - keys_changed, - ibc_msgs.as_slice(), - )?; + let mut changed_balances = + self.validate_state_and_get_transfer_data(keys_changed, ibc_msg)?; let masp_address_hash = addr_taddr(MASP); verify_sapling_balancing_value( diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 268cf628e2..0648d060fb 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -3892,6 +3892,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.9.9", + "smooth-operator", "thiserror", "tracing", ] diff --git a/wasm_for_tests/Cargo.lock b/wasm_for_tests/Cargo.lock index b6bfa699cc..90fb2acbfd 100644 --- a/wasm_for_tests/Cargo.lock +++ b/wasm_for_tests/Cargo.lock @@ -3959,6 +3959,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.9.9", + "smooth-operator", "thiserror", "tracing", ] From 9c5172863e00a02bd71977de766142fc16473417 Mon Sep 17 00:00:00 2001 From: yito88 Date: Fri, 21 Jun 2024 14:31:59 +0200 Subject: [PATCH 23/39] add ibc trace file --- crates/ibc/src/trace.rs | 120 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 crates/ibc/src/trace.rs diff --git a/crates/ibc/src/trace.rs b/crates/ibc/src/trace.rs new file mode 100644 index 0000000000..41e0552cc9 --- /dev/null +++ b/crates/ibc/src/trace.rs @@ -0,0 +1,120 @@ +//! Functions for IBC token + +use std::str::FromStr; + +use ibc::apps::nft_transfer::types::{ + PrefixedClassId, TokenId, TracePath as NftTracePath, +}; +use ibc::apps::transfer::types::{PrefixedDenom, TracePath}; +use ibc::core::host::types::identifiers::{ChannelId, PortId}; +use namada_core::address::{Address, InternalAddress, HASH_LEN, SHA_HASH_LEN}; +use namada_core::ibc::IbcTokenHash; +use sha2::{Digest, Sha256}; + +use crate::storage::Error; + +/// Hash the denom +#[inline] +pub fn calc_hash(trace: impl AsRef) -> String { + calc_ibc_token_hash(trace).to_string() +} + +/// Hash the denom +pub fn calc_ibc_token_hash(trace: impl AsRef) -> IbcTokenHash { + let hash = { + let mut hasher = Sha256::new(); + hasher.update(trace.as_ref()); + hasher.finalize() + }; + + let input: &[u8; SHA_HASH_LEN] = hash.as_ref(); + let mut output = [0; HASH_LEN]; + + output.copy_from_slice(&input[..HASH_LEN]); + IbcTokenHash(output) +} + +/// Obtain the IbcToken with the hash from the given denom +pub fn ibc_token(trace: impl AsRef) -> Address { + let hash = calc_ibc_token_hash(&trace); + Address::Internal(InternalAddress::IbcToken(hash)) +} + +/// Obtain the IbcToken with the hash from the given NFT class ID and NFT ID +pub fn ibc_token_for_nft( + class_id: &PrefixedClassId, + token_id: &TokenId, +) -> Address { + ibc_token(ibc_trace_for_nft(class_id, token_id)) +} + +/// Obtain the IBC trace from the given NFT class ID and NFT ID +pub fn ibc_trace_for_nft( + class_id: &PrefixedClassId, + token_id: &TokenId, +) -> String { + format!("{class_id}/{token_id}") +} + +/// Convert the given IBC trace to [`Address`] +pub fn convert_to_address( + ibc_trace: impl AsRef, +) -> Result { + // validation + if is_ibc_denom(&ibc_trace).is_none() && is_nft_trace(&ibc_trace).is_none() + { + return Err(Error::InvalidIbcTrace(format!( + "Invalid IBC trace: {}", + ibc_trace.as_ref() + ))); + } + + if ibc_trace.as_ref().contains('/') { + Ok(ibc_token(ibc_trace.as_ref())) + } else { + Address::decode(ibc_trace.as_ref()) + .map_err(|e| Error::InvalidIbcTrace(e.to_string())) + } +} + +/// Returns the trace path and the token string if the denom is an IBC +/// denom. +pub fn is_ibc_denom(denom: impl AsRef) -> Option<(TracePath, String)> { + let prefixed_denom = PrefixedDenom::from_str(denom.as_ref()).ok()?; + let base_denom = prefixed_denom.base_denom.to_string(); + if prefixed_denom.trace_path.is_empty() || base_denom.contains('/') { + // The denom is just a token or an NFT trace + return None; + } + // The base token isn't decoded because it could be non Namada token + Some((prefixed_denom.trace_path, base_denom)) +} + +/// Returns the trace path and the token string if the trace is an NFT one +pub fn is_nft_trace( + trace: impl AsRef, +) -> Option<(NftTracePath, String, String)> { + // The trace should be {port}/{channel}/.../{class_id}/{token_id} + if let Some((class_id, token_id)) = trace.as_ref().rsplit_once('/') { + let prefixed_class_id = PrefixedClassId::from_str(class_id).ok()?; + // The base token isn't decoded because it could be non Namada token + Some(( + prefixed_class_id.trace_path, + prefixed_class_id.base_class_id.to_string(), + token_id.to_string(), + )) + } else { + None + } +} + +/// Return true if the source of the given IBC trace is this chain +pub fn is_sender_chain_source( + trace: impl AsRef, + src_port_id: &PortId, + src_channel_id: &ChannelId, +) -> bool { + !trace + .as_ref() + .starts_with(&format!("{src_port_id}/{src_channel_id}")) +} From fb19c254eb5564acbe681bbdf698522cc53528fd Mon Sep 17 00:00:00 2001 From: yito88 Date: Fri, 21 Jun 2024 15:20:25 +0200 Subject: [PATCH 24/39] fix convert_to_address --- crates/ibc/src/trace.rs | 18 ++--- crates/namada/src/ledger/native_vp/masp.rs | 88 +++++++++++++--------- 2 files changed, 60 insertions(+), 46 deletions(-) diff --git a/crates/ibc/src/trace.rs b/crates/ibc/src/trace.rs index 41e0552cc9..6bb9d3bea8 100644 --- a/crates/ibc/src/trace.rs +++ b/crates/ibc/src/trace.rs @@ -60,16 +60,16 @@ pub fn ibc_trace_for_nft( pub fn convert_to_address( ibc_trace: impl AsRef, ) -> Result { - // validation - if is_ibc_denom(&ibc_trace).is_none() && is_nft_trace(&ibc_trace).is_none() - { - return Err(Error::InvalidIbcTrace(format!( - "Invalid IBC trace: {}", - ibc_trace.as_ref() - ))); - } - if ibc_trace.as_ref().contains('/') { + // validation + if is_ibc_denom(&ibc_trace).is_none() + && is_nft_trace(&ibc_trace).is_none() + { + return Err(Error::InvalidIbcTrace(format!( + "This is not IBC denom and NFT trace: {}", + ibc_trace.as_ref() + ))); + } Ok(ibc_token(ibc_trace.as_ref())) } else { Address::decode(ibc_trace.as_ref()) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 81dec19de7..84d56591d4 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -405,7 +405,12 @@ where let actual: PacketCommitment = self .ctx .read_bytes_post(&commitment_key)? - .expect("Commitment should exist") + .ok_or(Error::NativeVpError(native_vp::Error::AllocMessage( + format!( + "Packet commitment doesn't exist: Port ID {src_port_id}, \ + Channel ID {src_channel_id}, Sequence {sequence}" + ), + )))? .into(); let expected = compute_packet_commitment( packet_data, @@ -525,7 +530,7 @@ where &self, mut acc: ChangedBalances, msg: &IbcMsgRecvPacket, - ibc_trace: impl AsRef, + ibc_traces: Vec, amount: Amount, keys_changed: &BTreeSet, ) -> Result { @@ -538,29 +543,34 @@ where &msg.packet.chan_id_on_a, msg.packet.seq_on_a, )? { - // Mirror how the IBC token is derived in - // gen_ibc_shielded_transfer in the non-refund case - let token = namada_ibc::received_ibc_token( - ibc_trace, - &msg.packet.port_id_on_a, - &msg.packet.chan_id_on_a, - &msg.packet.port_id_on_b, - &msg.packet.chan_id_on_b, - ) - .into_storage_result() - .map_err(Error::NativeVpError)?; - let delta = ValueSum::from_pair(token.clone(), amount); - // Enable funds to be taken from the IBC internal - // address and be deposited elsewhere - // Required for the IBC internal Address to release - // funds - let ibc_taddr = addr_taddr(IBC); - let pre_entry = - acc.pre.get(&ibc_taddr).cloned().unwrap_or(ValueSum::zero()); - acc.pre.insert( - ibc_taddr, - checked!(pre_entry + &delta).map_err(native_vp::Error::new)?, - ); + for ibc_trace in ibc_traces { + // Get the received token + let token = namada_ibc::received_ibc_token( + ibc_trace, + &msg.packet.port_id_on_a, + &msg.packet.chan_id_on_a, + &msg.packet.port_id_on_b, + &msg.packet.chan_id_on_b, + ) + .into_storage_result() + .map_err(Error::NativeVpError)?; + let delta = ValueSum::from_pair(token.clone(), amount); + // Enable funds to be taken from the IBC internal + // address and be deposited elsewhere + // Required for the IBC internal Address to release + // funds + let ibc_taddr = addr_taddr(IBC); + let pre_entry = acc + .pre + .get(&ibc_taddr) + .cloned() + .unwrap_or(ValueSum::zero()); + acc.pre.insert( + ibc_taddr, + checked!(pre_entry + &delta) + .map_err(native_vp::Error::new)?, + ); + } } Ok(acc) } @@ -611,7 +621,7 @@ where acc = self.apply_recv_msg( acc, &msg.message, - ibc_denom, + vec![ibc_denom], amount, keys_changed, )?; @@ -623,17 +633,21 @@ where let receiver = packet_data.receiver.to_string(); let addr = TAddrData::Ibc(receiver.clone()); acc.decoder.insert(ibc_taddr(receiver), addr); - for token_id in &packet_data.token_ids.0 { - let ibc_trace = - ibc_trace_for_nft(&packet_data.class_id, token_id); - acc = self.apply_recv_msg( - acc, - &msg.message, - ibc_trace, - Amount::from_u64(1), - keys_changed, - )?; - } + let ibc_traces = packet_data + .token_ids + .0 + .iter() + .map(|token_id| { + ibc_trace_for_nft(&packet_data.class_id, token_id) + }) + .collect(); + acc = self.apply_recv_msg( + acc, + &msg.message, + ibc_traces, + Amount::from_u64(1), + keys_changed, + )?; } } // Ignore all other IBC events From 210f34bf807ea825767e0e96ddb28d238ca62f9f Mon Sep 17 00:00:00 2001 From: yito88 Date: Sat, 22 Jun 2024 01:43:28 +0200 Subject: [PATCH 25/39] fix tests --- crates/sdk/src/rpc.rs | 55 ++----------------------------- crates/tests/src/e2e/ibc_tests.rs | 41 +++-------------------- 2 files changed, 8 insertions(+), 88 deletions(-) diff --git a/crates/sdk/src/rpc.rs b/crates/sdk/src/rpc.rs index 94b1653698..52f079c5ad 100644 --- a/crates/sdk/src/rpc.rs +++ b/crates/sdk/src/rpc.rs @@ -35,7 +35,6 @@ use namada_governance::utils::{ use namada_ibc::storage::{ ibc_trace_key, ibc_trace_key_prefix, is_ibc_trace_key, }; -use namada_ibc::trace::is_ibc_denom; use namada_parameters::{storage as params_storage, EpochDuration}; use namada_proof_of_stake::parameters::PosParams; use namada_proof_of_stake::types::{ @@ -1167,25 +1166,9 @@ pub async fn validate_amount( InputAmount::Unvalidated(amt) => amt.canonical(), InputAmount::Validated(amt) => return Ok(amt), }; - let base_token = - if let Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) = - token - { - extract_base_token(context, ibc_token_hash.clone(), None).await - } else { - Some(token.clone()) - }; - let denom = if let Some(token) = base_token { - convert_response::>( - RPC.vp() - .token() - .denomination(context.client(), &token) - .await, - )? - } else { - None - }; - let denom = match denom { + let denom = match convert_response::>( + RPC.vp().token().denomination(context.client(), token).await, + )? { Some(denom) => Ok(denom), None => { if force { @@ -1371,38 +1354,6 @@ pub async fn query_ibc_tokens( Ok(tokens) } -/// Obtain the base token of the given IBC token hash -pub async fn extract_base_token( - context: &N, - ibc_token_hash: IbcTokenHash, - owner: Option<&Address>, -) -> Option
{ - // First obtain the IBC denomination - let ibc_denom = query_ibc_denom( - context, - Address::Internal(InternalAddress::IbcToken(ibc_token_hash)) - .to_string(), - owner, - ) - .await; - // Then try to extract the base token - if let Some((_trace_path, base_token)) = is_ibc_denom(ibc_denom) { - match Address::decode(&base_token) { - // If the base token successfully decoded into an Address - Ok(base_token) => Some(base_token), - // Otherwise find the Address associated with the base token's alias - Err(_) => context - .wallet() - .await - .find_address(&base_token) - .map(|x| x.into_owned()), - } - } else { - // Otherwise the base token Address is unknown to this client - None - } -} - /// Look up the IBC denomination from a IbcToken. pub async fn query_ibc_denom( context: &N, diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 4e8dc13a2a..26006b3243 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -159,7 +159,6 @@ fn run_ledger_ibc() -> Result<()> { token, 50000, BERTHA_KEY, - true, )?; check_balances_after_non_ibc(&port_id_b, &channel_id_b, &test_b)?; @@ -234,7 +233,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, None, false, @@ -250,9 +248,8 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { BERTHA, ALBERT, token, - 50000, + 50_000_000_000, BERTHA_KEY, - true, )?; check_balances_after_non_ibc(&port_id_b, &channel_id_b, &test_b)?; @@ -268,11 +265,10 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { BERTHA, receiver.to_string(), ibc_denom, - 50000.0, + 50_000_000_000.0, BERTHA_KEY, &port_id_b, &channel_id_b, - true, None, None, false, @@ -289,7 +285,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { BTC, 100, ALBERT_KEY, - false, )?; shielded_sync(&test_a, AA_VIEWING_KEY)?; // Shieded transfer from Chain A to Chain B @@ -302,7 +297,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, None, false, @@ -320,7 +314,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, None, false, @@ -343,7 +336,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, Some(Duration::new(10, 0)), None, false, @@ -409,7 +401,6 @@ fn ibc_namada_gaia() -> Result<()> { ALBERT_KEY, &port_id_namada, &channel_id_namada, - false, None, None, false, @@ -465,7 +456,6 @@ fn ibc_namada_gaia() -> Result<()> { ALBERT_KEY, &port_id_namada, &channel_id_namada, - true, None, None, false, @@ -499,7 +489,6 @@ fn ibc_namada_gaia() -> Result<()> { &ibc_denom, 50, ALBERT_KEY, - true, )?; check_balance(&test, AA_VIEWING_KEY, &ibc_denom, 50)?; check_balance(&test, AB_VIEWING_KEY, &ibc_denom, 50)?; @@ -514,7 +503,6 @@ fn ibc_namada_gaia() -> Result<()> { BERTHA_KEY, &port_id_namada, &channel_id_namada, - true, None, None, false, @@ -572,7 +560,6 @@ fn pgf_over_ibc_with_hermes() -> Result<()> { NAM, 100, ALBERT_KEY, - false, )?; // Proposal on Chain A @@ -676,7 +663,6 @@ fn proposal_ibc_token_inflation() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, None, false, @@ -744,7 +730,6 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, None, false, @@ -760,7 +745,6 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, // expect an error of the throughput limit Some( @@ -787,7 +771,6 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, None, None, false, @@ -812,7 +795,6 @@ fn ibc_rate_limit() -> Result<()> { ALBERT_KEY, &port_id_a, &channel_id_a, - false, Some(Duration::new(20, 0)), None, false, @@ -1579,7 +1561,6 @@ fn transfer_token( ALBERT_KEY, port_id_a, channel_id_a, - false, None, None, false, @@ -1657,7 +1638,6 @@ fn try_invalid_transfers( ALBERT_KEY, &"port".parse().unwrap(), channel_id_a, - false, None, // the IBC denom can't be parsed when using an invalid port Some(&format!("Invalid IBC denom: {nam_addr}")), @@ -1674,7 +1654,6 @@ fn try_invalid_transfers( ALBERT_KEY, port_id_a, &"channel-42".parse().unwrap(), - false, None, Some("IBC token transfer error: context error: `ICS04 Channel error"), false, @@ -1692,12 +1671,11 @@ fn transfer_on_chain( token: impl AsRef, amount: u64, signer: impl AsRef, - force: bool, ) -> Result<()> { std::env::set_var(ENV_VAR_CHAIN_ID, test.net.chain_id.to_string()); let rpc = get_actor_rpc(test, Who::Validator(0)); let amount = amount.to_string(); - let mut tx_args = vec![ + let tx_args = vec![ kind.as_ref(), "--source", sender.as_ref(), @@ -1712,9 +1690,6 @@ fn transfer_on_chain( "--node", &rpc, ]; - if force { - tx_args.push("--force"); - } let mut client = run!(test, Bin::Client, tx_args, Some(120))?; client.exp_string(TX_APPLIED_SUCCESS)?; client.assert_success(); @@ -1742,11 +1717,10 @@ fn transfer_back( BERTHA, receiver.to_string(), ibc_denom, - 50000.0, + 50_000_000_000.0, BERTHA_KEY, port_id_b, channel_id_b, - true, None, None, false, @@ -1820,7 +1794,6 @@ fn transfer_timeout( ALBERT_KEY, port_id_a, channel_id_a, - false, Some(Duration::new(5, 0)), None, false, @@ -1955,7 +1928,6 @@ fn transfer( signer: impl AsRef, port_id: &PortId, channel_id: &ChannelId, - force: bool, timeout_sec: Option, expected_err: Option<&str>, wait_reveal_pk: bool, @@ -1985,9 +1957,6 @@ fn transfer( "--node", &rpc, ]; - if force { - tx_args.push("--force"); - } let timeout = timeout_sec.unwrap_or_default().as_secs().to_string(); if timeout_sec.is_some() { @@ -2479,7 +2448,7 @@ fn check_shielded_balances( // Check the shielded balance on Chain B let ibc_denom = format!("{dest_port_id}/{dest_channel_id}/btc"); - check_balance(test_b, AB_VIEWING_KEY, ibc_denom, 10)?; + check_balance(test_b, AB_VIEWING_KEY, ibc_denom, 1_000_000_000)?; Ok(()) } From 5c3b3ab70af77ccdbf7eedec60aa4cc4d3b2d1dd Mon Sep 17 00:00:00 2001 From: yito88 Date: Mon, 24 Jun 2024 16:32:19 +0200 Subject: [PATCH 26/39] fix the port and channel for is_receiving_success --- crates/namada/src/ledger/native_vp/masp.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 84d56591d4..a02902b80c 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -505,12 +505,12 @@ where // Check if IBC message was received successfully in this state transition fn is_receiving_success( &self, - src_port_id: &PortId, - src_channel_id: &ChannelId, + dst_port_id: &PortId, + dst_channel_id: &ChannelId, sequence: Sequence, ) -> Result { // Ensure that the event corresponds to the current changes to storage - let ack_key = storage::ack_key(src_port_id, src_channel_id, sequence); + let ack_key = storage::ack_key(dst_port_id, dst_channel_id, sequence); // If the receive is a success, then the commitment is unique let succ_ack_commitment = compute_ack_commitment( &AcknowledgementStatus::success(ack_success_b64()).into(), @@ -539,8 +539,8 @@ where // If the transfer was a failure, then enable funds to // be withdrawn from the IBC internal address if self.is_receiving_success( - &msg.packet.port_id_on_a, - &msg.packet.chan_id_on_a, + &msg.packet.port_id_on_b, + &msg.packet.chan_id_on_b, msg.packet.seq_on_a, )? { for ibc_trace in ibc_traces { From 8d23661bad8152b5a1b1f78a90654f110681bb9f Mon Sep 17 00:00:00 2001 From: yito88 Date: Wed, 26 Jun 2024 11:17:02 +0200 Subject: [PATCH 27/39] memo for masp tx --- Cargo.lock | 1 + crates/ibc/Cargo.toml | 1 + crates/ibc/src/lib.rs | 116 ++++++++++---------------- crates/ibc/src/msg.rs | 166 +++++++++++++++----------------------- wasm/Cargo.lock | 1 + wasm/tx_ibc/src/lib.rs | 40 +++++---- wasm_for_tests/Cargo.lock | 1 + 7 files changed, 134 insertions(+), 192 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c2d7a8224..50e9895f0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5010,6 +5010,7 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.2.1", + "data-encoding", "ibc", "ibc-derive", "ibc-testkit", diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 9d15fa70ce..e73160983f 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -32,6 +32,7 @@ namada_storage = { path = "../storage" } namada_token = { path = "../token" } borsh.workspace = true +data-encoding.workspace = true konst.workspace = true linkme = {workspace = true, optional = true} ibc.workspace = true diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index 05b095de70..d06422df06 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -71,6 +71,7 @@ use ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; use ibc::core::router::types::error::RouterError; use ibc::primitives::proto::Any; pub use ibc::*; +use masp_primitives::transaction::Transaction as MaspTransaction; pub use msg::*; use namada_core::address::{self, Address}; use namada_core::arith::checked; @@ -151,7 +152,8 @@ where pub fn execute( &mut self, tx_data: &[u8], - ) -> Result, Error> { + ) -> Result<(Option, Option), Error> + { let message = decode_message(tx_data)?; match &message { IbcMessage::Transfer(msg) => { @@ -166,7 +168,7 @@ where msg.message.clone(), ) .map_err(Error::TokenTransfer)?; - Ok(msg.transfer.clone()) + Ok((msg.transfer.clone(), None)) } IbcMessage::NftTransfer(msg) => { let mut nft_transfer_ctx = @@ -177,47 +179,45 @@ where msg.message.clone(), ) .map_err(Error::NftTransfer)?; - Ok(msg.transfer.clone()) - } - IbcMessage::RecvPacket(msg) => { - let envelope = - MsgEnvelope::Packet(PacketMsg::Recv(msg.message.clone())); - execute(&mut self.ctx, &mut self.router, envelope) - .map_err(|e| Error::Context(Box::new(e)))?; - let transfer = if self.is_receiving_success(&msg.message)? { - // For receiving the token to a shielded address - msg.transfer.clone() - } else { - None - }; - Ok(transfer) - } - IbcMessage::AckPacket(msg) => { - let envelope = - MsgEnvelope::Packet(PacketMsg::Ack(msg.message.clone())); - execute(&mut self.ctx, &mut self.router, envelope) - .map_err(|e| Error::Context(Box::new(e)))?; - let transfer = - if !is_ack_successful(&msg.message.acknowledgement)? { - // For refunding the token to a shielded address - msg.transfer.clone() - } else { - None - }; - Ok(transfer) - } - IbcMessage::Timeout(msg) => { - let envelope = MsgEnvelope::Packet(PacketMsg::Timeout( - msg.message.clone(), - )); - execute(&mut self.ctx, &mut self.router, envelope) - .map_err(|e| Error::Context(Box::new(e)))?; - Ok(msg.transfer.clone()) + Ok((msg.transfer.clone(), None)) } IbcMessage::Envelope(envelope) => { - execute(&mut self.ctx, &mut self.router, *envelope.clone()) + execute(&mut self.ctx, &mut self.router, envelope.clone()) .map_err(|e| Error::Context(Box::new(e)))?; - Ok(None) + // Extract MASP tx from the memo in the packet if needed + let masp_tx = match envelope { + MsgEnvelope::Packet(packet_msg) => { + match packet_msg { + PacketMsg::Recv(msg) => { + if self.is_receiving_success(msg)? { + extract_masp_tx_from_packet( + &msg.packet, + false, + ) + } else { + None + } + } + PacketMsg::Ack(msg) => { + if is_ack_successful(&msg.acknowledgement)? { + // No refund + None + } else { + extract_masp_tx_from_packet( + &msg.packet, + true, + ) + } + } + PacketMsg::Timeout(msg) => { + extract_masp_tx_from_packet(&msg.packet, true) + } + _ => None, + } + } + _ => None, + }; + Ok((None, masp_tx)) } } } @@ -275,26 +275,8 @@ where ) .map_err(Error::NftTransfer) } - IbcMessage::RecvPacket(msg) => validate( - &self.ctx, - &self.router, - MsgEnvelope::Packet(PacketMsg::Recv(msg.message)), - ) - .map_err(|e| Error::Context(Box::new(e))), - IbcMessage::AckPacket(msg) => validate( - &self.ctx, - &self.router, - MsgEnvelope::Packet(PacketMsg::Ack(msg.message)), - ) - .map_err(|e| Error::Context(Box::new(e))), - IbcMessage::Timeout(msg) => validate( - &self.ctx, - &self.router, - MsgEnvelope::Packet(PacketMsg::Timeout(msg.message)), - ) - .map_err(|e| Error::Context(Box::new(e))), IbcMessage::Envelope(envelope) => { - validate(&self.ctx, &self.router, *envelope) + validate(&self.ctx, &self.router, envelope) .map_err(|e| Error::Context(Box::new(e))) } } @@ -326,7 +308,7 @@ pub fn decode_message(tx_data: &[u8]) -> Result { // ibc-rs message if let Ok(any_msg) = Any::decode(tx_data) { if let Ok(envelope) = MsgEnvelope::try_from(any_msg) { - return Ok(IbcMessage::Envelope(Box::new(envelope))); + return Ok(IbcMessage::Envelope(envelope)); } } @@ -340,20 +322,6 @@ pub fn decode_message(tx_data: &[u8]) -> Result { return Ok(IbcMessage::NftTransfer(msg)); } - // Receiving packet message with `IbcShieldedTransfer` - if let Ok(msg) = MsgRecvPacket::try_from_slice(tx_data) { - return Ok(IbcMessage::RecvPacket(msg)); - } - - // Acknowledge packet message with `IbcShieldedTransfer` - if let Ok(msg) = MsgAcknowledgement::try_from_slice(tx_data) { - return Ok(IbcMessage::AckPacket(msg)); - } - // Timeout packet message with `IbcShieldedTransfer` - if let Ok(msg) = MsgTimeout::try_from_slice(tx_data) { - return Ok(IbcMessage::Timeout(msg)); - } - Err(Error::DecodingData) } diff --git a/crates/ibc/src/msg.rs b/crates/ibc/src/msg.rs index 4d382cf2d4..df0edfd29b 100644 --- a/crates/ibc/src/msg.rs +++ b/crates/ibc/src/msg.rs @@ -1,29 +1,29 @@ use borsh::{BorshDeserialize, BorshSerialize}; +use data_encoding::HEXUPPER; use ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as IbcMsgNftTransfer; +use ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; +use ibc::apps::nft_transfer::types::Memo as NftMemo; use ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; -use ibc::core::channel::types::msgs::{ - MsgAcknowledgement as IbcMsgAcknowledgement, - MsgRecvPacket as IbcMsgRecvPacket, MsgTimeout as IbcMsgTimeout, -}; +use ibc::apps::transfer::types::packet::PacketData; +use ibc::apps::transfer::types::Memo; +use ibc::core::channel::types::msgs::PacketMsg; +use ibc::core::channel::types::packet::Packet; use ibc::core::handler::types::msgs::MsgEnvelope; +use ibc::core::host::types::identifiers::PortId; use ibc::primitives::proto::Protobuf; +use masp_primitives::transaction::Transaction as MaspTransaction; +use namada_core::borsh::BorshSerializeExt; use namada_token::ShieldingTransfer; /// The different variants of an Ibc message #[derive(Debug, Clone)] pub enum IbcMessage { /// Ibc Envelop - Envelope(Box), + Envelope(MsgEnvelope), /// Ibc transaprent transfer Transfer(MsgTransfer), /// NFT transfer NftTransfer(MsgNftTransfer), - /// Receiving a packet - RecvPacket(MsgRecvPacket), - /// Acknowledgement - AckPacket(MsgAcknowledgement), - /// Timeout - Timeout(MsgTimeout), } /// IBC transfer message with `Transfer` @@ -92,103 +92,65 @@ impl BorshDeserialize for MsgNftTransfer { } } -/// IBC receiving packet message with `Transfer` -#[derive(Debug, Clone)] -pub struct MsgRecvPacket { - /// IBC receiving packet message - pub message: IbcMsgRecvPacket, - /// Shieleded transfer for MASP transaction - pub transfer: Option, -} - -impl BorshSerialize for MsgRecvPacket { - fn serialize( - &self, - writer: &mut W, - ) -> std::io::Result<()> { - let encoded_msg = self.message.clone().encode_vec(); - let members = (encoded_msg, self.transfer.clone()); - BorshSerialize::serialize(&members, writer) - } -} - -impl BorshDeserialize for MsgRecvPacket { - fn deserialize_reader( - reader: &mut R, - ) -> std::io::Result { - use std::io::{Error, ErrorKind}; - let (msg, transfer): (Vec, Option) = - BorshDeserialize::deserialize_reader(reader)?; - let message = IbcMsgRecvPacket::decode_vec(&msg) - .map_err(|err| Error::new(ErrorKind::InvalidData, err))?; - Ok(Self { message, transfer }) - } -} - -/// IBC acknowledgement message with `Transfer` for refunding to a shielded -/// address -#[derive(Debug, Clone)] -pub struct MsgAcknowledgement { - /// IBC acknowledgement message - pub message: IbcMsgAcknowledgement, - /// Shieleded transfer for MASP transaction - pub transfer: Option, -} - -impl BorshSerialize for MsgAcknowledgement { - fn serialize( - &self, - writer: &mut W, - ) -> std::io::Result<()> { - let encoded_msg = self.message.clone().encode_vec(); - let members = (encoded_msg, self.transfer.clone()); - BorshSerialize::serialize(&members, writer) +/// Extract MASP Transaction from IBC envelope +pub fn extract_masp_tx_from_envelope( + envelope: &MsgEnvelope, +) -> Option { + match envelope { + MsgEnvelope::Packet(packet_msg) => match packet_msg { + PacketMsg::Recv(msg) => { + extract_masp_tx_from_packet(&msg.packet, false) + } + PacketMsg::Ack(msg) => { + extract_masp_tx_from_packet(&msg.packet, true) + } + PacketMsg::Timeout(msg) => { + extract_masp_tx_from_packet(&msg.packet, true) + } + _ => None, + }, + _ => None, } } -impl BorshDeserialize for MsgAcknowledgement { - fn deserialize_reader( - reader: &mut R, - ) -> std::io::Result { - use std::io::{Error, ErrorKind}; - let (msg, transfer): (Vec, Option) = - BorshDeserialize::deserialize_reader(reader)?; - let message = IbcMsgAcknowledgement::decode_vec(&msg) - .map_err(|err| Error::new(ErrorKind::InvalidData, err))?; - Ok(Self { message, transfer }) +/// Extract MASP Transaction from IBC packet +pub fn extract_masp_tx_from_packet( + packet: &Packet, + is_sender: bool, +) -> Option { + let is_ft_packet = if is_sender { + packet.port_id_on_a == PortId::transfer() + } else { + packet.port_id_on_b == PortId::transfer() + }; + + if is_ft_packet { + let packet_data = + serde_json::from_slice::(&packet.data).ok()?; + if packet_data.memo.as_ref().is_empty() { + return None; + } + let bytes = + HEXUPPER.decode(packet_data.memo.as_ref().as_bytes()).ok()?; + MaspTransaction::try_from_slice(&bytes).ok() + } else { + let packet_data = + serde_json::from_slice::(&packet.data).ok()?; + let bytes = HEXUPPER + .decode(packet_data.memo?.as_ref().as_bytes()) + .ok()?; + MaspTransaction::try_from_slice(&bytes).ok() } } -/// IBC timeout packet message with `Transfer` for refunding to a shielded -/// address -#[derive(Debug, Clone)] -pub struct MsgTimeout { - /// IBC timeout message - pub message: IbcMsgTimeout, - /// Shieleded transfer for MASP transaction - pub transfer: Option, -} - -impl BorshSerialize for MsgTimeout { - fn serialize( - &self, - writer: &mut W, - ) -> std::io::Result<()> { - let encoded_msg = self.message.clone().encode_vec(); - let members = (encoded_msg, self.transfer.clone()); - BorshSerialize::serialize(&members, writer) - } +/// Get MASP Transaction as a memo for an FT packet +pub fn memo_from_masp_tx(masp_tx: &MaspTransaction) -> Memo { + let bytes = masp_tx.serialize_to_vec(); + HEXUPPER.encode(&bytes).into() } -impl BorshDeserialize for MsgTimeout { - fn deserialize_reader( - reader: &mut R, - ) -> std::io::Result { - use std::io::{Error, ErrorKind}; - let (msg, transfer): (Vec, Option) = - BorshDeserialize::deserialize_reader(reader)?; - let message = IbcMsgTimeout::decode_vec(&msg) - .map_err(|err| Error::new(ErrorKind::InvalidData, err))?; - Ok(Self { message, transfer }) - } +/// Get MASP Transaction as a memo for an NFT packet +pub fn nft_memo_from_masp_tx(masp_tx: &MaspTransaction) -> NftMemo { + let bytes = masp_tx.serialize_to_vec(); + HEXUPPER.encode(&bytes).into() } diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 0648d060fb..09e355b33f 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -3872,6 +3872,7 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.4.0", + "data-encoding", "ibc", "ibc-derive", "ibc-testkit", diff --git a/wasm/tx_ibc/src/lib.rs b/wasm/tx_ibc/src/lib.rs index e131a90c9a..a8fa109bd9 100644 --- a/wasm/tx_ibc/src/lib.rs +++ b/wasm/tx_ibc/src/lib.rs @@ -9,28 +9,36 @@ use namada_tx_prelude::*; #[transaction] fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { let data = ctx.get_tx_data(&tx_data)?; - let transfer = + let (transfer, masp_tx) = ibc::ibc_actions(ctx).execute(&data).into_storage_result()?; - if let Some(masp_section_ref) = - transfer.map(|transfer| transfer.shielded_section_hash) - { - let shielded = tx_data - .tx - .get_section(&masp_section_ref) - .and_then(|x| x.as_ref().masp_tx()) - .ok_or_err_msg( - "Unable to find required shielded section in tx data", - ) - .map_err(|err| { - ctx.set_commitment_sentinel(); - err - })?; + let masp_section_ref = + transfer.map(|transfer| transfer.shielded_section_hash); + let shielded = if let Some(masp_section_ref) = masp_section_ref { + Some( + tx_data + .tx + .get_section(&masp_section_ref) + .and_then(|x| x.as_ref().masp_tx()) + .ok_or_err_msg( + "Unable to find required shielded section in tx data", + ) + .map_err(|err| { + ctx.set_commitment_sentinel(); + err + })?, + ) + } else { + masp_tx + }; + if let Some(shielded) = shielded { token::utils::handle_masp_tx(ctx, &shielded) .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; + ctx.push_action(Action::Masp(MaspAction { + masp_section_ref: masp_section_ref.unwrap_or_default(), + }))?; } Ok(()) diff --git a/wasm_for_tests/Cargo.lock b/wasm_for_tests/Cargo.lock index 90fb2acbfd..5ae2cfc36a 100644 --- a/wasm_for_tests/Cargo.lock +++ b/wasm_for_tests/Cargo.lock @@ -3939,6 +3939,7 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.2.1", + "data-encoding", "ibc", "ibc-derive", "ibc-testkit", From 5c0c4249f6674de1fd1b6e53c1feab3db0039242 Mon Sep 17 00:00:00 2001 From: yito88 Date: Wed, 26 Jun 2024 11:51:49 +0200 Subject: [PATCH 28/39] extract masp_tx in MASP VP --- crates/namada/src/ledger/native_vp/masp.rs | 152 ++++++++++++--------- 1 file changed, 84 insertions(+), 68 deletions(-) diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index a02902b80c..68c859e48a 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -26,14 +26,19 @@ use namada_governance::storage::is_proposal_accepted; use namada_ibc::core::channel::types::commitment::{ compute_packet_commitment, PacketCommitment, }; -use namada_ibc::core::channel::types::msgs::MsgRecvPacket as IbcMsgRecvPacket; +use namada_ibc::core::channel::types::msgs::{ + MsgRecvPacket as IbcMsgRecvPacket, PacketMsg, +}; use namada_ibc::core::channel::types::timeout::TimeoutHeight; +use namada_ibc::core::handler::types::msgs::MsgEnvelope; use namada_ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; use namada_ibc::primitives::Timestamp; use namada_ibc::trace::{ convert_to_address, ibc_trace_for_nft, is_sender_chain_source, }; -use namada_ibc::{get_last_sequence_send, IbcMessage}; +use namada_ibc::{ + extract_masp_tx_from_envelope, get_last_sequence_send, IbcMessage, +}; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; use namada_token::read_denom; @@ -603,55 +608,59 @@ where self.apply_transfer_msg(acc, &ibc_transfer, keys_changed)?; } // This event is emitted on the receiver - IbcMessage::RecvPacket(msg) => { - if msg.message.packet.port_id_on_b.as_str() == PORT_ID_STR { - let packet_data = serde_json::from_slice::( - &msg.message.packet.data, - ) - .map_err(native_vp::Error::new)?; - let receiver = packet_data.receiver.to_string(); - let addr = TAddrData::Ibc(receiver.clone()); - acc.decoder.insert(ibc_taddr(receiver), addr); - let ibc_denom = packet_data.token.denom.to_string(); - let amount = packet_data - .token - .amount - .try_into() - .into_storage_result()?; - acc = self.apply_recv_msg( - acc, - &msg.message, - vec![ibc_denom], - amount, - keys_changed, - )?; - } else { - let packet_data = serde_json::from_slice::( - &msg.message.packet.data, - ) - .map_err(native_vp::Error::new)?; - let receiver = packet_data.receiver.to_string(); - let addr = TAddrData::Ibc(receiver.clone()); - acc.decoder.insert(ibc_taddr(receiver), addr); - let ibc_traces = packet_data - .token_ids - .0 - .iter() - .map(|token_id| { - ibc_trace_for_nft(&packet_data.class_id, token_id) - }) - .collect(); - acc = self.apply_recv_msg( - acc, - &msg.message, - ibc_traces, - Amount::from_u64(1), - keys_changed, - )?; + IbcMessage::Envelope(envelope) => { + if let MsgEnvelope::Packet(PacketMsg::Recv(msg)) = envelope { + if msg.packet.port_id_on_b.as_str() == PORT_ID_STR { + let packet_data = serde_json::from_slice::( + &msg.packet.data, + ) + .map_err(native_vp::Error::new)?; + let receiver = packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver), addr); + let ibc_denom = packet_data.token.denom.to_string(); + let amount = packet_data + .token + .amount + .try_into() + .into_storage_result()?; + acc = self.apply_recv_msg( + acc, + &msg, + vec![ibc_denom], + amount, + keys_changed, + )?; + } else { + let packet_data = + serde_json::from_slice::( + &msg.packet.data, + ) + .map_err(native_vp::Error::new)?; + let receiver = packet_data.receiver.to_string(); + let addr = TAddrData::Ibc(receiver.clone()); + acc.decoder.insert(ibc_taddr(receiver), addr); + let ibc_traces = packet_data + .token_ids + .0 + .iter() + .map(|token_id| { + ibc_trace_for_nft( + &packet_data.class_id, + token_id, + ) + }) + .collect(); + acc = self.apply_recv_msg( + acc, + &msg, + ibc_traces, + Amount::from_u64(1), + keys_changed, + )?; + } } } - // Ignore all other IBC events - _ => {} } Result::<_>::Ok(acc) } @@ -761,25 +770,32 @@ where })?; let conversion_state = self.ctx.state.in_mem().get_conversion_state(); let ibc_msg = self.ctx.get_ibc_message(tx_data).ok(); - - // Get the Transaction object from the actions - let masp_section_ref = namada_tx::action::get_masp_section_ref( - &self.ctx, - )? - .ok_or_else(|| { - native_vp::Error::new_const( - "Missing MASP section reference in action", - ) - })?; - let shielded_tx = tx_data - .tx - .get_section(&masp_section_ref) - .and_then(|section| section.masp_tx()) - .ok_or_else(|| { - native_vp::Error::new_const( - "Missing MASP section in transaction", - ) - })?; + let shielded_tx = + if let Some(IbcMessage::Envelope(ref envelope)) = ibc_msg { + extract_masp_tx_from_envelope(envelope).ok_or_else(|| { + native_vp::Error::new_const( + "Missing MASP transaction in IBC message", + ) + })? + } else { + // Get the Transaction object from the actions + let masp_section_ref = + namada_tx::action::get_masp_section_ref(&self.ctx)? + .ok_or_else(|| { + native_vp::Error::new_const( + "Missing MASP section reference in action", + ) + })?; + tx_data + .tx + .get_section(&masp_section_ref) + .and_then(|section| section.masp_tx()) + .ok_or_else(|| { + native_vp::Error::new_const( + "Missing MASP section in transaction", + ) + })? + }; if u64::from(self.ctx.get_block_height()?) > u64::from(shielded_tx.expiry_height()) From 6520631e67f2ae59dc926fbcbf48f0167b408314 Mon Sep 17 00:00:00 2001 From: yito88 Date: Wed, 26 Jun 2024 16:06:50 +0200 Subject: [PATCH 29/39] add CLI ibc-gen-shielding --- Cargo.lock | 1 - crates/apps_lib/src/cli.rs | 40 +++++++++++++--- crates/apps_lib/src/cli/client.rs | 14 ++++++ crates/apps_lib/src/client/tx.rs | 31 ++++++++++++ crates/core/src/masp.rs | 21 +++++++- crates/ibc/Cargo.toml | 1 - crates/ibc/src/lib.rs | 16 ++----- crates/ibc/src/msg.rs | 46 ++++-------------- crates/namada/src/ledger/native_vp/masp.rs | 17 +++++-- crates/sdk/src/args.rs | 6 +-- crates/sdk/src/tx.rs | 18 ++----- wasm/Cargo.lock | 1 - wasm/checksums.json | 56 +++++++++++----------- wasm/tx_ibc/src/lib.rs | 4 +- wasm_for_tests/Cargo.lock | 1 - 15 files changed, 162 insertions(+), 111 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50e9895f0b..9c2d7a8224 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5010,7 +5010,6 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.2.1", - "data-encoding", "ibc", "ibc-derive", "ibc-testkit", diff --git a/crates/apps_lib/src/cli.rs b/crates/apps_lib/src/cli.rs index eadf78063a..2d23bce83c 100644 --- a/crates/apps_lib/src/cli.rs +++ b/crates/apps_lib/src/cli.rs @@ -292,6 +292,7 @@ pub mod cmds { // Actions .subcommand(SignTx::def().display_order(6)) .subcommand(ShieldedSync::def().display_order(6)) + .subcommand(GenIbcShieldingTransfer::def().display_order(6)) // Utils .subcommand(ClientUtils::def().display_order(7)) } @@ -380,6 +381,8 @@ pub mod cmds { Self::parse_with_ctx(matches, AddToEthBridgePool); let sign_tx = Self::parse_with_ctx(matches, SignTx); let shielded_sync = Self::parse_with_ctx(matches, ShieldedSync); + let gen_ibc_shielding = + Self::parse_with_ctx(matches, GenIbcShieldingTransfer); let utils = SubCmd::parse(matches).map(Self::WithoutContext); tx_custom .or(tx_transparent_transfer) @@ -434,6 +437,7 @@ pub mod cmds { .or(query_account) .or(sign_tx) .or(shielded_sync) + .or(gen_ibc_shielding) .or(utils) } } @@ -524,6 +528,7 @@ pub mod cmds { QueryRewards(QueryRewards), SignTx(SignTx), ShieldedSync(ShieldedSync), + GenIbcShieldingTransfer(GenIbcShieldingTransfer), } #[allow(clippy::large_enum_variant)] @@ -2259,6 +2264,29 @@ pub mod cmds { } } + #[derive(Clone, Debug)] + pub struct GenIbcShieldingTransfer( + pub args::GenIbcShieldingTransfer, + ); + + impl SubCmd for GenIbcShieldingTransfer { + const CMD: &'static str = "ibc-gen-shielding"; + + fn parse(matches: &ArgMatches) -> Option { + matches.subcommand_matches(Self::CMD).map(|matches| { + GenIbcShieldingTransfer(args::GenIbcShieldingTransfer::parse( + matches, + )) + }) + } + + fn def() -> App { + App::new(Self::CMD) + .about("Generate shielding transfer for IBC.") + .add_args::>() + } + } + #[derive(Clone, Debug)] pub struct EpochSleep(pub args::Query); @@ -6432,19 +6460,19 @@ pub mod args { } } - impl CliToSdk> - for GenIbcShieldedTransfer + impl CliToSdk> + for GenIbcShieldingTransfer { type Error = std::convert::Infallible; fn to_sdk( self, ctx: &mut Context, - ) -> Result, Self::Error> { + ) -> Result, Self::Error> { let query = self.query.to_sdk(ctx)?; let chain_ctx = ctx.borrow_chain_or_exit(); - Ok(GenIbcShieldedTransfer:: { + Ok(GenIbcShieldingTransfer:: { query, output_folder: self.output_folder, target: chain_ctx.get(&self.target), @@ -6457,7 +6485,7 @@ pub mod args { } } - impl Args for GenIbcShieldedTransfer { + impl Args for GenIbcShieldingTransfer { fn parse(matches: &ArgMatches) -> Self { let query = Query::parse(matches); let output_folder = OUTPUT_FOLDER_PATH.parse(matches); @@ -6498,7 +6526,7 @@ pub mod args { "The channel ID via which the token is received." ))) .arg(REFUND.def().help(wrap!( - "Generate the shielded transfer for refunding." + "Generate the shielding transfer for refunding." ))) } } diff --git a/crates/apps_lib/src/cli/client.rs b/crates/apps_lib/src/cli/client.rs index 79103a9f3d..d71cb5f898 100644 --- a/crates/apps_lib/src/cli/client.rs +++ b/crates/apps_lib/src/cli/client.rs @@ -370,6 +370,20 @@ impl CliApi { ) .await?; } + Sub::GenIbcShieldingTransfer(GenIbcShieldingTransfer( + args, + )) => { + let chain_ctx = ctx.borrow_mut_chain_or_exit(); + let ledger_address = + chain_ctx.get(&args.query.ledger_address); + let client = client.unwrap_or_else(|| { + C::from_tendermint_address(&ledger_address) + }); + client.wait_until_node_is_synced(&io).await?; + let args = args.to_sdk(&mut ctx)?; + let namada = ctx.to_sdk(client, io); + tx::gen_ibc_shielding_transfer(&namada, args).await?; + } #[cfg(feature = "namada-eth-bridge")] Sub::AddToEthBridgePool(args) => { let args = args.0; diff --git a/crates/apps_lib/src/client/tx.rs b/crates/apps_lib/src/client/tx.rs index 80e6e52e09..1ea130a798 100644 --- a/crates/apps_lib/src/client/tx.rs +++ b/crates/apps_lib/src/client/tx.rs @@ -1,4 +1,5 @@ use std::fs::File; +use std::io::Write; use borsh::BorshDeserialize; use borsh_ext::BorshSerializeExt; @@ -12,6 +13,7 @@ use namada::governance::cli::onchain::{ DefaultProposal, PgfFundingProposal, PgfStewardProposal, }; use namada::io::Io; +use namada::masp::convert_masp_tx_to_ibc_memo; use namada::state::EPOCH_SWITCH_BLOCKS_DELAY; use namada::tx::{CompressedAuthorization, Section, Signer, Tx}; use namada_sdk::args::TxBecomeValidator; @@ -1352,3 +1354,32 @@ pub async fn submit_tx( ) -> Result { tx::submit_tx(namada, to_broadcast).await } + +/// Generate MASP transaction and output it +pub async fn gen_ibc_shielding_transfer( + context: &impl Namada, + args: args::GenIbcShieldingTransfer, +) -> Result<(), error::Error> { + if let Some(masp_tx) = + tx::gen_ibc_shielding_transfer(context, args.clone()).await? + { + let tx_id = masp_tx.txid().to_string(); + let filename = format!("ibc_masp_tx_{}.memo", tx_id); + let output_path = match &args.output_folder { + Some(path) => path.join(filename), + None => filename.into(), + }; + let mut out = File::create(&output_path) + .expect("Creating a new file for IBC MASP transaction failed."); + let bytes = convert_masp_tx_to_ibc_memo(&masp_tx); + out.write_all(bytes.as_bytes()) + .expect("Writing IBC MASP transaction file failed."); + println!( + "Output IBC shielding transfer for {tx_id} to {}", + output_path.to_string_lossy() + ); + } else { + eprintln!("No shielded transfer for this IBC transfer.") + } + Ok(()) +} diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index 7b8b65e5cc..b2c74d3a1f 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -8,7 +8,7 @@ use std::str::FromStr; use borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; use borsh_ext::BorshSerializeExt; use masp_primitives::asset_type::AssetType; -use masp_primitives::transaction::TransparentAddress; +use masp_primitives::transaction::{Transaction, TransparentAddress}; use namada_macros::BorshDeserializer; #[cfg(feature = "migrations")] use namada_migrations::*; @@ -697,3 +697,22 @@ impl FromStr for MaspTxRefs { serde_json::from_str(s) } } + +/// Get Transaction from IBC memo string +pub fn convert_ibc_memo_to_masp_tx(memo: &str) -> std::io::Result { + let bytes = + data_encoding::HEXUPPER + .decode(memo.as_bytes()) + .map_err(|_| { + std::io::Error::new( + std::io::ErrorKind::Other, + "unable to create asset type".to_string(), + ) + })?; + Transaction::try_from_slice(&bytes) +} + +/// Get IBC memo string from Transaction +pub fn convert_masp_tx_to_ibc_memo(transaction: &Transaction) -> String { + data_encoding::HEXUPPER.encode(&transaction.serialize_to_vec()) +} diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index e73160983f..9d15fa70ce 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -32,7 +32,6 @@ namada_storage = { path = "../storage" } namada_token = { path = "../token" } borsh.workspace = true -data-encoding.workspace = true konst.workspace = true linkme = {workspace = true, optional = true} ibc.workspace = true diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index d06422df06..523d5da3bc 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -71,7 +71,6 @@ use ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; use ibc::core::router::types::error::RouterError; use ibc::primitives::proto::Any; pub use ibc::*; -use masp_primitives::transaction::Transaction as MaspTransaction; pub use msg::*; use namada_core::address::{self, Address}; use namada_core::arith::checked; @@ -152,8 +151,7 @@ where pub fn execute( &mut self, tx_data: &[u8], - ) -> Result<(Option, Option), Error> - { + ) -> Result<(Option, Option), Error> { let message = decode_message(tx_data)?; match &message { IbcMessage::Transfer(msg) => { @@ -190,10 +188,7 @@ where match packet_msg { PacketMsg::Recv(msg) => { if self.is_receiving_success(msg)? { - extract_masp_tx_from_packet( - &msg.packet, - false, - ) + extract_memo_from_packet(&msg.packet, false) } else { None } @@ -203,14 +198,11 @@ where // No refund None } else { - extract_masp_tx_from_packet( - &msg.packet, - true, - ) + extract_memo_from_packet(&msg.packet, true) } } PacketMsg::Timeout(msg) => { - extract_masp_tx_from_packet(&msg.packet, true) + extract_memo_from_packet(&msg.packet, true) } _ => None, } diff --git a/crates/ibc/src/msg.rs b/crates/ibc/src/msg.rs index df0edfd29b..20b27a0b2c 100644 --- a/crates/ibc/src/msg.rs +++ b/crates/ibc/src/msg.rs @@ -1,18 +1,13 @@ use borsh::{BorshDeserialize, BorshSerialize}; -use data_encoding::HEXUPPER; use ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as IbcMsgNftTransfer; use ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; -use ibc::apps::nft_transfer::types::Memo as NftMemo; use ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use ibc::apps::transfer::types::packet::PacketData; -use ibc::apps::transfer::types::Memo; use ibc::core::channel::types::msgs::PacketMsg; use ibc::core::channel::types::packet::Packet; use ibc::core::handler::types::msgs::MsgEnvelope; use ibc::core::host::types::identifiers::PortId; use ibc::primitives::proto::Protobuf; -use masp_primitives::transaction::Transaction as MaspTransaction; -use namada_core::borsh::BorshSerializeExt; use namada_token::ShieldingTransfer; /// The different variants of an Ibc message @@ -92,20 +87,16 @@ impl BorshDeserialize for MsgNftTransfer { } } -/// Extract MASP Transaction from IBC envelope -pub fn extract_masp_tx_from_envelope( - envelope: &MsgEnvelope, -) -> Option { +/// Extract the memo string from IBC envelope +pub fn extract_memo_from_envelope(envelope: &MsgEnvelope) -> Option { match envelope { MsgEnvelope::Packet(packet_msg) => match packet_msg { PacketMsg::Recv(msg) => { - extract_masp_tx_from_packet(&msg.packet, false) - } - PacketMsg::Ack(msg) => { - extract_masp_tx_from_packet(&msg.packet, true) + extract_memo_from_packet(&msg.packet, false) } + PacketMsg::Ack(msg) => extract_memo_from_packet(&msg.packet, true), PacketMsg::Timeout(msg) => { - extract_masp_tx_from_packet(&msg.packet, true) + extract_memo_from_packet(&msg.packet, true) } _ => None, }, @@ -113,11 +104,11 @@ pub fn extract_masp_tx_from_envelope( } } -/// Extract MASP Transaction from IBC packet -pub fn extract_masp_tx_from_packet( +/// Extract the memo string from IBC packet +pub fn extract_memo_from_packet( packet: &Packet, is_sender: bool, -) -> Option { +) -> Option { let is_ft_packet = if is_sender { packet.port_id_on_a == PortId::transfer() } else { @@ -130,27 +121,10 @@ pub fn extract_masp_tx_from_packet( if packet_data.memo.as_ref().is_empty() { return None; } - let bytes = - HEXUPPER.decode(packet_data.memo.as_ref().as_bytes()).ok()?; - MaspTransaction::try_from_slice(&bytes).ok() + Some(packet_data.memo.as_ref().to_string()) } else { let packet_data = serde_json::from_slice::(&packet.data).ok()?; - let bytes = HEXUPPER - .decode(packet_data.memo?.as_ref().as_bytes()) - .ok()?; - MaspTransaction::try_from_slice(&bytes).ok() + packet_data.memo.map(|s| s.as_ref().to_string()) } } - -/// Get MASP Transaction as a memo for an FT packet -pub fn memo_from_masp_tx(masp_tx: &MaspTransaction) -> Memo { - let bytes = masp_tx.serialize_to_vec(); - HEXUPPER.encode(&bytes).into() -} - -/// Get MASP Transaction as a memo for an NFT packet -pub fn nft_memo_from_masp_tx(masp_tx: &MaspTransaction) -> NftMemo { - let bytes = masp_tx.serialize_to_vec(); - HEXUPPER.encode(&bytes).into() -} diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 68c859e48a..3bc7156ed7 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -19,7 +19,10 @@ use namada_core::ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as use namada_core::ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; use namada_core::ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use namada_core::ibc::apps::transfer::types::packet::PacketData; -use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; +use namada_core::masp::{ + addr_taddr, convert_ibc_memo_to_masp_tx, encode_asset_type, ibc_taddr, + MaspEpoch, +}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; @@ -37,7 +40,7 @@ use namada_ibc::trace::{ convert_to_address, ibc_trace_for_nft, is_sender_chain_source, }; use namada_ibc::{ - extract_masp_tx_from_envelope, get_last_sequence_send, IbcMessage, + extract_memo_from_envelope, get_last_sequence_send, IbcMessage, }; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; @@ -772,9 +775,15 @@ where let ibc_msg = self.ctx.get_ibc_message(tx_data).ok(); let shielded_tx = if let Some(IbcMessage::Envelope(ref envelope)) = ibc_msg { - extract_masp_tx_from_envelope(envelope).ok_or_else(|| { + let memo = + extract_memo_from_envelope(envelope).ok_or_else(|| { + native_vp::Error::new_const( + "Missing MASP transaction in IBC message", + ) + })?; + convert_ibc_memo_to_masp_tx(&memo).map_err(|_| { native_vp::Error::new_const( - "Missing MASP transaction in IBC message", + "Decoding MASP transaction in IBC message failed", ) })? } else { diff --git a/crates/sdk/src/args.rs b/crates/sdk/src/args.rs index 8db6155e6f..f4dab15085 100644 --- a/crates/sdk/src/args.rs +++ b/crates/sdk/src/args.rs @@ -2645,9 +2645,9 @@ pub struct ValidatorSetUpdateRelay { pub safe_mode: bool, } -/// IBC shielded transfer generation arguments +/// IBC shielding transfer generation arguments #[derive(Clone, Debug)] -pub struct GenIbcShieldedTransfer { +pub struct GenIbcShieldingTransfer { /// The query parameters. pub query: Query, /// The output directory path to where serialize the data @@ -2662,6 +2662,6 @@ pub struct GenIbcShieldedTransfer { pub port_id: PortId, /// Channel ID via which the token is received pub channel_id: ChannelId, - /// Generate the shielded transfer for refunding + /// Generate the shielding transfer for refunding pub refund: bool, } diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index d123f04456..135fe948bc 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -3480,8 +3480,8 @@ pub async fn build_custom( /// Generate IBC shielded transfer pub async fn gen_ibc_shielding_transfer( context: &N, - args: args::GenIbcShieldedTransfer, -) -> Result> { + args: args::GenIbcShieldingTransfer, +) -> Result> { let source = Address::Internal(InternalAddress::Ibc); let (src_port_id, src_channel_id) = get_ibc_src_port_channel(context, &args.port_id, &args.channel_id) @@ -3528,19 +3528,7 @@ pub async fn gen_ibc_shielding_transfer( .await .map_err(|err| TxSubmitError::MaspError(err.to_string()))?; - if let Some(shielded_transfer) = shielded_transfer { - let masp_tx_hash = - Section::MaspTx(shielded_transfer.masp_tx.clone()).get_hash(); - let transfer = token::ShieldingTransfer { - source: source.clone(), - token: token.clone(), - amount: validated_amount, - shielded_section_hash: masp_tx_hash, - }; - Ok(Some((transfer, shielded_transfer.masp_tx))) - } else { - Ok(None) - } + Ok(shielded_transfer.map(|st| st.masp_tx)) } async fn get_ibc_src_port_channel( diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 09e355b33f..0648d060fb 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -3872,7 +3872,6 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.4.0", - "data-encoding", "ibc", "ibc-derive", "ibc-testkit", diff --git a/wasm/checksums.json b/wasm/checksums.json index 7a7cf8ba13..7a966335b1 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,30 +1,30 @@ { - "tx_become_validator.wasm": "tx_become_validator.e7df6f1c325ee806fee95c30a11246b3e2330c6002783074bd04b6a5998f245d.wasm", - "tx_bond.wasm": "tx_bond.8a6d2ae51d45d1158698771c30a17082940fce2b9a78f6a7f923b5f7e868673b.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.15accaf56e6fbd893148f79d4221bb0fdca4a87d9b0c19cdc68ede9851deb579.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.28bea8969a729109dceae5297aa1bbd10f2737db01a0cb99689e325eeac4c616.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.9d3eac2909df762cad56f5637071b1176d997b346bb5b9241cb2bd848f0435e8.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.d5a7c0758911deb50dd4a0c0ee30cd2f012c4f2298f265b81c8a5a3099ca0cd1.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.7ce4a02d2975d0fce0184928514c9c367dea215fc85c5a57ee97eaf210e1e96e.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.8f6f5656532d1d48e458d7bddf1f426e8560a86c2e91fc44847bb95f181269b2.wasm", - "tx_ibc.wasm": "tx_ibc.6b21da1fdb95f1c98cb85b2c3345476c14ff487010cc3f3bcc3cdf30c0dffc93.wasm", - "tx_init_account.wasm": "tx_init_account.60291c66452b637dbe886ee6389ac730a13b36d6839e7328be8d7addd7ef562d.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.53564391242ecdab3a0b205b6bae743bc1bccbb300a68bd1e12eab0c98c9aebd.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.c5dbeb071983ea2b7b87179771e65b845efa2552239437407716c21e328a470f.wasm", - "tx_redelegate.wasm": "tx_redelegate.6f65111cb6c8277a0709c204f3cd85f84cea8c07869efe4c7c821fc4341871c1.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.8791257f6474e6dd759161c202cd25943ae1f464dbaf6533fa4e7f7b1ebfd99f.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.a86d975548a13167f095223764d690aceafe9faad797bc2004d9bd5185ca4307.wasm", - "tx_shielded_transfer.wasm": "tx_shielded_transfer.2c2dccc5c5925580bf955fdbff0e8724e8381645ab76584d52fd8515fa3d8805.wasm", - "tx_shielding_transfer.wasm": "tx_shielding_transfer.6ad3817afe35fc5d1cc0f124a4bc6f02a8ec0802b97d606555c839d45a4bf1b4.wasm", - "tx_transfer.wasm": "tx_transfer.8acfe426d01adc17018c07b1c9f2eb3f77ddff4a6e452c8d5ae16832a0e79c85.wasm", - "tx_transparent_transfer.wasm": "tx_transparent_transfer.2f18f3a8895625fcd69be2aa587e9fc82eb5fd3cb7df305f70e915eb040899bd.wasm", - "tx_unbond.wasm": "tx_unbond.4f88701b831ca58847ee9d03f15a92a641781a4f3142f61648a840a43c9de59c.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.4ebc6c6dedd6587b033eaebd69725cce91f02ac47b695479d3a96eadd6b1f831.wasm", - "tx_unshielding_transfer.wasm": "tx_unshielding_transfer.e238a486605d9c38ca483f34efd8f8cf62156662adba3e9f82f63424eb749413.wasm", - "tx_update_account.wasm": "tx_update_account.26daf5e95aae1417decc5553b555e4eea80d0f66148718c23d8afc0a80b94649.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.e39ba50d5329a190812bcda5e511f357fa87e9cc53ab12598e09ed777c5e9222.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.abd17ec3f379f6255819c6a1f375e135f8e5c91a7cfa04cf655953f2e7a69553.wasm", - "tx_withdraw.wasm": "tx_withdraw.f58f27408ce18ce9cf4e1fe0f8a0acd16533bb431aa64913776acc36bbd91d2f.wasm", - "vp_implicit.wasm": "vp_implicit.6432b1d7ae9dcd3c17b7643f0ac4f799e6366a5fb08d483e369ba0994568596d.wasm", - "vp_user.wasm": "vp_user.6b9e7d5eb43e69281728376855790e0a893a9c6d39d4451f286f0d1f83a662f5.wasm" + "tx_become_validator.wasm": "tx_become_validator.4f1e76ec5da525948d9575796b0c6683eff9689b22255de249207c849cc6f0d0.wasm", + "tx_bond.wasm": "tx_bond.f6d899fe2cbb41e0a135b517710b4c2e068952c54e82b73ef8ddb77412ea2088.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.8739c0dac4096a046033fca1c3340177ac4f1043fa9dda085d65f0a4e5f31243.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.f101256403ee7b9a38a2de4a71c588c376d68e95032eeb7f7994ee17e06774a6.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.5469034fd42d44538e6c2cd2b895e34df04f0f596da80ce54501dbdf9cf44e1f.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.cb15bd04dea7ca315a24d67b55713a9fe89dc16dd62260915f84042e747412cc.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.59d81b5e7eb568c42c153e9091b17e28a1772d2f33916814840454a327fef42b.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.ae5bf0233d15e2f0bdbb14cd2907304ae04c4419b16d7bc44610e79415105924.wasm", + "tx_ibc.wasm": "tx_ibc.6d07e866d2cdbeab69686bc0410cba928545ae9986119d34a3e2d8d71f77e1a0.wasm", + "tx_init_account.wasm": "tx_init_account.81d928b7f96e26ec5b18765dc5f16968b7c1d71a4e48481b293da76bf222249d.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.d06e14567907b0f277a2d1c66930bb0a394e6a0b2f169bb65abbfd3b7ee89282.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.8cb3d5f049406fa7d406d5896822a11ef550301f61509b7cb8450aac1350e529.wasm", + "tx_redelegate.wasm": "tx_redelegate.eb53fecae6cfda6c3b57acff30dec1bf4f904d94574dab78dbad82c778f935df.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.deba9e96ac15d2c0fd860dfe7e1d06c87a429f4284b3c07d69e7a4fc3eefe911.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.06f2adf6a14ec4abb3bf2d2684c38a2392f5bb4210856889b21963df01e4e4b8.wasm", + "tx_shielded_transfer.wasm": "tx_shielded_transfer.66725082d1d9d46cd3a25f16eacd58173d57e6819c77514a18ee8ecf196b8d82.wasm", + "tx_shielding_transfer.wasm": "tx_shielding_transfer.8ac5661d62d4e2d3a974fa71754b623db7e86d68f5e78154db1d1dc239a57b74.wasm", + "tx_transfer.wasm": "tx_transfer.bdcefbc0bd9b6ace1d4ae9fb2f794374c6ca70f5eb87792a0b6eaae3a7fea25f.wasm", + "tx_transparent_transfer.wasm": "tx_transparent_transfer.8c0d274a690da55e0c44fd6e7e8167928f0fd83ae622eb3d838a99c3db571975.wasm", + "tx_unbond.wasm": "tx_unbond.af4554a4b89cbedbec509bd5aa7526c3fcf1707465116e7d51bb06e2523cecf3.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.c01f6f4cb29616c5d88524dd9ce7ba1b79b98eb7c4f83082f083d3d24402a797.wasm", + "tx_unshielding_transfer.wasm": "tx_unshielding_transfer.a4b197bbe47cf9e5954741fb7cbee0b1713fd35016b8dbd1a209be5ec95c2938.wasm", + "tx_update_account.wasm": "tx_update_account.15036b8968aed2ece5bbbbf8d0da29076d240caefe023fe61d011d42e7a90947.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.c872eefca45074de9347aae3ac19acdc92cd0d81ea6731a218280fe3dd8d6042.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.6a63dffdeddb8ef403f195aa21e366c24477f812a4494c2d8b371bce0b75fe6b.wasm", + "tx_withdraw.wasm": "tx_withdraw.4e27b4f77263929757f11ab99cbfe59fd19e12f9decd597077391b6f9b768f43.wasm", + "vp_implicit.wasm": "vp_implicit.b968ab508c184e93c7d8cca6ec117b69aa563488aae1f3489e943ef403f480bd.wasm", + "vp_user.wasm": "vp_user.daa69b1953ff737253457d8b3ac133ba984d032c2e00c52e87cdd1647e719625.wasm" } \ No newline at end of file diff --git a/wasm/tx_ibc/src/lib.rs b/wasm/tx_ibc/src/lib.rs index a8fa109bd9..3d7e49f06f 100644 --- a/wasm/tx_ibc/src/lib.rs +++ b/wasm/tx_ibc/src/lib.rs @@ -9,7 +9,7 @@ use namada_tx_prelude::*; #[transaction] fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { let data = ctx.get_tx_data(&tx_data)?; - let (transfer, masp_tx) = + let (transfer, memo_str) = ibc::ibc_actions(ctx).execute(&data).into_storage_result()?; let masp_section_ref = @@ -29,7 +29,7 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { })?, ) } else { - masp_tx + memo_str.and_then(|memo| masp::convert_ibc_memo_to_masp_tx(&memo).ok()) }; if let Some(shielded) = shielded { token::utils::handle_masp_tx(ctx, &shielded) diff --git a/wasm_for_tests/Cargo.lock b/wasm_for_tests/Cargo.lock index 5ae2cfc36a..90fb2acbfd 100644 --- a/wasm_for_tests/Cargo.lock +++ b/wasm_for_tests/Cargo.lock @@ -3939,7 +3939,6 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.2.1", - "data-encoding", "ibc", "ibc-derive", "ibc-testkit", From c74c583c7f11e0483088b034e721c7bee001f13c Mon Sep 17 00:00:00 2001 From: yito88 Date: Fri, 28 Jun 2024 12:19:17 +0200 Subject: [PATCH 30/39] fix e2e tests --- crates/tests/src/e2e/ibc_tests.rs | 133 +++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 3 deletions(-) diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 26006b3243..2eede607e7 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -235,6 +235,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &channel_id_a, None, None, + None, false, )?; wait_for_packet_relay(&port_id_a, &channel_id_a, &test_a)?; @@ -271,6 +272,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &channel_id_b, None, None, + None, false, )?; wait_for_packet_relay(&port_id_a, &channel_id_a, &test_a)?; @@ -288,6 +290,17 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { )?; shielded_sync(&test_a, AA_VIEWING_KEY)?; // Shieded transfer from Chain A to Chain B + std::env::set_var(ENV_VAR_CHAIN_ID, test_a.net.chain_id.to_string()); + let token_addr = find_address(&test_a, BTC)?; + let memo_path = gen_masp_tx( + &test_b, + AB_PAYMENT_ADDRESS, + token_addr.to_string(), + 100_000_000, + &port_id_b, + &channel_id_b, + false, + )?; transfer( &test_a, A_SPENDING_KEY, @@ -298,6 +311,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &port_id_a, &channel_id_a, None, + Some(memo_path), None, false, )?; @@ -305,6 +319,15 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { check_shielded_balances(&port_id_b, &channel_id_b, &test_a, &test_b)?; // Shielded transfer to an invalid receiver address (refund) + let memo_path = gen_masp_tx( + &test_a, + AA_PAYMENT_ADDRESS, + BTC, + 10, + &port_id_a, + &channel_id_a, + true, + )?; transfer( &test_a, A_SPENDING_KEY, @@ -315,6 +338,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &port_id_a, &channel_id_a, None, + Some(memo_path), None, false, )?; @@ -327,6 +351,15 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { hermes.interrupt()?; // Send transfer will be timed out (refund) + let memo_path = gen_masp_tx( + &test_a, + AA_PAYMENT_ADDRESS, + BTC, + 10, + &port_id_a, + &channel_id_a, + true, + )?; transfer( &test_a, A_SPENDING_KEY, @@ -337,6 +370,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &port_id_a, &channel_id_a, Some(Duration::new(10, 0)), + Some(memo_path), None, false, )?; @@ -403,6 +437,7 @@ fn ibc_namada_gaia() -> Result<()> { &channel_id_namada, None, None, + None, false, )?; wait_for_packet_relay(&port_id_namada, &channel_id_namada, &test)?; @@ -422,6 +457,7 @@ fn ibc_namada_gaia() -> Result<()> { 100000000, &port_id_gaia, &channel_id_gaia, + None, )?; wait_for_packet_relay(&port_id_gaia, &channel_id_gaia, &test)?; @@ -438,6 +474,7 @@ fn ibc_namada_gaia() -> Result<()> { 200, &port_id_gaia, &channel_id_gaia, + None, )?; wait_for_packet_relay(&port_id_gaia, &channel_id_gaia, &test)?; @@ -458,6 +495,7 @@ fn ibc_namada_gaia() -> Result<()> { &channel_id_namada, None, None, + None, false, )?; wait_for_packet_relay(&port_id_namada, &channel_id_namada, &test)?; @@ -465,6 +503,15 @@ fn ibc_namada_gaia() -> Result<()> { check_gaia_balance(&test_gaia, GAIA_USER, GAIA_COIN, 900)?; // Shielding transfer from Gaia to Namada + let memo_path = gen_masp_tx( + &test, + AA_PAYMENT_ADDRESS, + GAIA_COIN, + 100, + &port_id_namada, + &channel_id_namada, + false, + )?; transfer_from_gaia( &test_gaia, GAIA_USER, @@ -473,6 +520,7 @@ fn ibc_namada_gaia() -> Result<()> { 100, &port_id_gaia, &channel_id_gaia, + Some(memo_path), )?; wait_for_packet_relay(&port_id_gaia, &channel_id_gaia, &test_gaia)?; @@ -505,6 +553,7 @@ fn ibc_namada_gaia() -> Result<()> { &channel_id_namada, None, None, + None, false, )?; wait_for_packet_relay(&port_id_namada, &channel_id_namada, &test)?; @@ -665,6 +714,7 @@ fn proposal_ibc_token_inflation() -> Result<()> { &channel_id_a, None, None, + None, false, )?; wait_for_packet_relay(&port_id_a, &channel_id_a, &test_a)?; @@ -732,6 +782,7 @@ fn ibc_rate_limit() -> Result<()> { &channel_id_a, None, None, + None, false, )?; @@ -746,6 +797,7 @@ fn ibc_rate_limit() -> Result<()> { &port_id_a, &channel_id_a, None, + None, // expect an error of the throughput limit Some( "Transfer exceeding the per-epoch throughput limit is not allowed", @@ -773,6 +825,7 @@ fn ibc_rate_limit() -> Result<()> { &channel_id_a, None, None, + None, false, )?; @@ -797,6 +850,7 @@ fn ibc_rate_limit() -> Result<()> { &channel_id_a, Some(Duration::new(20, 0)), None, + None, false, )?; wait_for_packet_relay(&port_id_a, &channel_id_a, &test_a)?; @@ -1563,6 +1617,7 @@ fn transfer_token( channel_id_a, None, None, + None, false, )?; let events = get_events(test_a, height)?; @@ -1639,6 +1694,7 @@ fn try_invalid_transfers( &"port".parse().unwrap(), channel_id_a, None, + None, // the IBC denom can't be parsed when using an invalid port Some(&format!("Invalid IBC denom: {nam_addr}")), false, @@ -1655,6 +1711,7 @@ fn try_invalid_transfers( port_id_a, &"channel-42".parse().unwrap(), None, + None, Some("IBC token transfer error: context error: `ICS04 Channel error"), false, )?; @@ -1723,6 +1780,7 @@ fn transfer_back( channel_id_b, None, None, + None, false, )?; let events = get_events(test_b, height)?; @@ -1796,6 +1854,7 @@ fn transfer_timeout( channel_id_a, Some(Duration::new(5, 0)), None, + None, false, )?; let events = get_events(test_a, height)?; @@ -1929,6 +1988,7 @@ fn transfer( port_id: &PortId, channel_id: &ChannelId, timeout_sec: Option, + memo_path: Option, expected_err: Option<&str>, wait_reveal_pk: bool, ) -> Result { @@ -1964,6 +2024,15 @@ fn transfer( tx_args.push(&timeout); } + let memo = memo_path + .as_ref() + .map(|path| path.to_string_lossy().to_string()) + .unwrap_or_default(); + if memo_path.is_some() { + tx_args.push("--memo-path"); + tx_args.push(&memo); + } + let mut client = run!(test, Bin::Client, tx_args, Some(300))?; match expected_err { Some(err) => { @@ -2151,12 +2220,13 @@ fn transfer_from_gaia( amount: u64, port_id: &PortId, channel_id: &ChannelId, + memo_path: Option, ) -> Result<()> { let port_id = port_id.to_string(); let channel_id = channel_id.to_string(); let amount = format!("{}{}", amount, token.as_ref()); let rpc = format!("tcp://{GAIA_RPC}"); - let args = vec![ + let mut args = vec![ "tx", "ibc-transfer", "transfer", @@ -2177,6 +2247,17 @@ fn transfer_from_gaia( "--yes", ]; + let memo = memo_path + .as_ref() + .map(|path| { + std::fs::read_to_string(path).expect("Reading memo file failed") + }) + .unwrap_or_default(); + if memo_path.is_some() { + args.push("--memo"); + args.push(&memo); + } + let mut gaia = run_gaia_cmd(test, args, Some(40))?; gaia.assert_success(); Ok(()) @@ -2362,7 +2443,7 @@ fn check_balances( // Check the balance on Chain B let ibc_denom = format!("{dest_port_id}/{dest_channel_id}/nam"); - check_balance(test_b, BERTHA, ibc_denom, 100000)?; + check_balance(test_b, BERTHA, ibc_denom, 100_000_000_000)?; Ok(()) } @@ -2448,7 +2529,7 @@ fn check_shielded_balances( // Check the shielded balance on Chain B let ibc_denom = format!("{dest_port_id}/{dest_channel_id}/btc"); - check_balance(test_b, AB_VIEWING_KEY, ibc_denom, 1_000_000_000)?; + check_balance(test_b, AB_VIEWING_KEY, ibc_denom, 10_000_000_000)?; Ok(()) } @@ -2601,3 +2682,49 @@ fn shielded_sync(test: &Test, viewing_key: impl AsRef) -> Result<()> { client.assert_success(); Ok(()) } + +/// Get masp proof for the following IBC transfer from the destination chain +fn gen_masp_tx( + dst_test: &Test, + receiver: impl AsRef, + token: impl AsRef, + amount: u64, + port_id: &PortId, + channel_id: &ChannelId, + is_refund: bool, +) -> Result { + std::env::set_var(ENV_VAR_CHAIN_ID, dst_test.net.chain_id.to_string()); + let rpc = get_actor_rpc(dst_test, Who::Validator(0)); + let output_folder = dst_test.test_dir.path().to_string_lossy(); + + let amount = amount.to_string(); + let mut args = vec![ + "ibc-gen-shielding", + "--output-folder-path", + &output_folder, + "--target", + receiver.as_ref(), + "--token", + token.as_ref(), + "--amount", + &amount, + "--port-id", + port_id.as_ref(), + "--channel-id", + channel_id.as_ref(), + "--node", + &rpc, + ]; + + if is_refund { + args.push("--refund"); + } + + let mut client = run!(dst_test, Bin::Client, args, Some(120))?; + let (_unread, matched) = + client.exp_regex("Output IBC shielded transfer .*")?; + let file_path = matched.trim().split(' ').last().expect("invalid output"); + client.assert_success(); + + Ok(PathBuf::from_str(file_path).expect("invalid file path")) +} From 3176b0191361ff4534c44e027d003fb1446aee14 Mon Sep 17 00:00:00 2001 From: yito88 Date: Mon, 1 Jul 2024 10:51:36 +0200 Subject: [PATCH 31/39] fix gen_masp_tx in test --- crates/tests/src/e2e/ibc_tests.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 2eede607e7..30ce44d10c 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -2489,10 +2489,10 @@ fn check_balances_after_non_ibc( ) -> Result<()> { // Check the source on Chain B let ibc_denom = format!("{port_id}/{channel_id}/nam"); - check_balance(test_b, BERTHA, &ibc_denom, 50000)?; + check_balance(test_b, BERTHA, &ibc_denom, 50_000_000_000)?; // Check the traget on Chain B - check_balance(test_b, ALBERT, &ibc_denom, 50000)?; + check_balance(test_b, ALBERT, &ibc_denom, 50_000_000_000)?; Ok(()) } @@ -2722,7 +2722,7 @@ fn gen_masp_tx( let mut client = run!(dst_test, Bin::Client, args, Some(120))?; let (_unread, matched) = - client.exp_regex("Output IBC shielded transfer .*")?; + client.exp_regex("Output IBC shielding transfer .*")?; let file_path = matched.trim().split(' ').last().expect("invalid output"); client.assert_success(); From d6fc2f2e1472898b33b7072ef98312ce8b5e9d31 Mon Sep 17 00:00:00 2001 From: yito88 Date: Mon, 1 Jul 2024 12:31:49 +0200 Subject: [PATCH 32/39] workaround wasm compilation error --- Cargo.lock | 1 + crates/apps_lib/src/client/tx.rs | 2 +- crates/core/src/masp.rs | 21 +----------- crates/ibc/Cargo.toml | 1 + crates/ibc/src/lib.rs | 16 +++++++--- crates/ibc/src/msg.rs | 37 ++++++++++++++++------ crates/namada/src/ledger/native_vp/masp.rs | 17 +++------- crates/tx/src/action.rs | 4 +-- wasm/Cargo.lock | 1 + wasm/tx_ibc/src/lib.rs | 8 ++--- wasm/tx_shielded_transfer/src/lib.rs | 4 ++- wasm/tx_shielding_transfer/src/lib.rs | 4 ++- wasm/tx_unshielding_transfer/src/lib.rs | 4 ++- wasm_for_tests/Cargo.lock | 1 + 14 files changed, 63 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c2d7a8224..50e9895f0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5010,6 +5010,7 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.2.1", + "data-encoding", "ibc", "ibc-derive", "ibc-testkit", diff --git a/crates/apps_lib/src/client/tx.rs b/crates/apps_lib/src/client/tx.rs index 1ea130a798..59a55bffb3 100644 --- a/crates/apps_lib/src/client/tx.rs +++ b/crates/apps_lib/src/client/tx.rs @@ -12,8 +12,8 @@ use namada::core::key::*; use namada::governance::cli::onchain::{ DefaultProposal, PgfFundingProposal, PgfStewardProposal, }; +use namada::ibc::convert_masp_tx_to_ibc_memo; use namada::io::Io; -use namada::masp::convert_masp_tx_to_ibc_memo; use namada::state::EPOCH_SWITCH_BLOCKS_DELAY; use namada::tx::{CompressedAuthorization, Section, Signer, Tx}; use namada_sdk::args::TxBecomeValidator; diff --git a/crates/core/src/masp.rs b/crates/core/src/masp.rs index b2c74d3a1f..7b8b65e5cc 100644 --- a/crates/core/src/masp.rs +++ b/crates/core/src/masp.rs @@ -8,7 +8,7 @@ use std::str::FromStr; use borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; use borsh_ext::BorshSerializeExt; use masp_primitives::asset_type::AssetType; -use masp_primitives::transaction::{Transaction, TransparentAddress}; +use masp_primitives::transaction::TransparentAddress; use namada_macros::BorshDeserializer; #[cfg(feature = "migrations")] use namada_migrations::*; @@ -697,22 +697,3 @@ impl FromStr for MaspTxRefs { serde_json::from_str(s) } } - -/// Get Transaction from IBC memo string -pub fn convert_ibc_memo_to_masp_tx(memo: &str) -> std::io::Result { - let bytes = - data_encoding::HEXUPPER - .decode(memo.as_bytes()) - .map_err(|_| { - std::io::Error::new( - std::io::ErrorKind::Other, - "unable to create asset type".to_string(), - ) - })?; - Transaction::try_from_slice(&bytes) -} - -/// Get IBC memo string from Transaction -pub fn convert_masp_tx_to_ibc_memo(transaction: &Transaction) -> String { - data_encoding::HEXUPPER.encode(&transaction.serialize_to_vec()) -} diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 9d15fa70ce..e73160983f 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -32,6 +32,7 @@ namada_storage = { path = "../storage" } namada_token = { path = "../token" } borsh.workspace = true +data-encoding.workspace = true konst.workspace = true linkme = {workspace = true, optional = true} ibc.workspace = true diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index 523d5da3bc..d06422df06 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -71,6 +71,7 @@ use ibc::core::host::types::identifiers::{ChannelId, PortId, Sequence}; use ibc::core::router::types::error::RouterError; use ibc::primitives::proto::Any; pub use ibc::*; +use masp_primitives::transaction::Transaction as MaspTransaction; pub use msg::*; use namada_core::address::{self, Address}; use namada_core::arith::checked; @@ -151,7 +152,8 @@ where pub fn execute( &mut self, tx_data: &[u8], - ) -> Result<(Option, Option), Error> { + ) -> Result<(Option, Option), Error> + { let message = decode_message(tx_data)?; match &message { IbcMessage::Transfer(msg) => { @@ -188,7 +190,10 @@ where match packet_msg { PacketMsg::Recv(msg) => { if self.is_receiving_success(msg)? { - extract_memo_from_packet(&msg.packet, false) + extract_masp_tx_from_packet( + &msg.packet, + false, + ) } else { None } @@ -198,11 +203,14 @@ where // No refund None } else { - extract_memo_from_packet(&msg.packet, true) + extract_masp_tx_from_packet( + &msg.packet, + true, + ) } } PacketMsg::Timeout(msg) => { - extract_memo_from_packet(&msg.packet, true) + extract_masp_tx_from_packet(&msg.packet, true) } _ => None, } diff --git a/crates/ibc/src/msg.rs b/crates/ibc/src/msg.rs index 20b27a0b2c..3ade437e84 100644 --- a/crates/ibc/src/msg.rs +++ b/crates/ibc/src/msg.rs @@ -1,4 +1,5 @@ use borsh::{BorshDeserialize, BorshSerialize}; +use data_encoding::HEXUPPER; use ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as IbcMsgNftTransfer; use ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; use ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; @@ -8,6 +9,8 @@ use ibc::core::channel::types::packet::Packet; use ibc::core::handler::types::msgs::MsgEnvelope; use ibc::core::host::types::identifiers::PortId; use ibc::primitives::proto::Protobuf; +use masp_primitives::transaction::Transaction as MaspTransaction; +use namada_core::borsh::BorshSerializeExt; use namada_token::ShieldingTransfer; /// The different variants of an Ibc message @@ -87,16 +90,20 @@ impl BorshDeserialize for MsgNftTransfer { } } -/// Extract the memo string from IBC envelope -pub fn extract_memo_from_envelope(envelope: &MsgEnvelope) -> Option { +/// Extract MASP transaction from IBC envelope +pub fn extract_masp_tx_from_envelope( + envelope: &MsgEnvelope, +) -> Option { match envelope { MsgEnvelope::Packet(packet_msg) => match packet_msg { PacketMsg::Recv(msg) => { - extract_memo_from_packet(&msg.packet, false) + extract_masp_tx_from_packet(&msg.packet, false) + } + PacketMsg::Ack(msg) => { + extract_masp_tx_from_packet(&msg.packet, true) } - PacketMsg::Ack(msg) => extract_memo_from_packet(&msg.packet, true), PacketMsg::Timeout(msg) => { - extract_memo_from_packet(&msg.packet, true) + extract_masp_tx_from_packet(&msg.packet, true) } _ => None, }, @@ -104,11 +111,11 @@ pub fn extract_memo_from_envelope(envelope: &MsgEnvelope) -> Option { } } -/// Extract the memo string from IBC packet -pub fn extract_memo_from_packet( +/// Extract MASP transaction from IBC packet memo +pub fn extract_masp_tx_from_packet( packet: &Packet, is_sender: bool, -) -> Option { +) -> Option { let is_ft_packet = if is_sender { packet.port_id_on_a == PortId::transfer() } else { @@ -121,10 +128,20 @@ pub fn extract_memo_from_packet( if packet_data.memo.as_ref().is_empty() { return None; } - Some(packet_data.memo.as_ref().to_string()) + let bytes = + HEXUPPER.decode(packet_data.memo.as_ref().as_bytes()).ok()?; + MaspTransaction::try_from_slice(&bytes).ok() } else { let packet_data = serde_json::from_slice::(&packet.data).ok()?; - packet_data.memo.map(|s| s.as_ref().to_string()) + let bytes = HEXUPPER + .decode(packet_data.memo?.as_ref().as_bytes()) + .ok()?; + MaspTransaction::try_from_slice(&bytes).ok() } } + +/// Get IBC memo string from Transaction +pub fn convert_masp_tx_to_ibc_memo(transaction: &MaspTransaction) -> String { + HEXUPPER.encode(&transaction.serialize_to_vec()) +} diff --git a/crates/namada/src/ledger/native_vp/masp.rs b/crates/namada/src/ledger/native_vp/masp.rs index 3bc7156ed7..68c859e48a 100644 --- a/crates/namada/src/ledger/native_vp/masp.rs +++ b/crates/namada/src/ledger/native_vp/masp.rs @@ -19,10 +19,7 @@ use namada_core::ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as use namada_core::ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; use namada_core::ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use namada_core::ibc::apps::transfer::types::packet::PacketData; -use namada_core::masp::{ - addr_taddr, convert_ibc_memo_to_masp_tx, encode_asset_type, ibc_taddr, - MaspEpoch, -}; +use namada_core::masp::{addr_taddr, encode_asset_type, ibc_taddr, MaspEpoch}; use namada_core::storage::Key; use namada_gas::GasMetering; use namada_governance::storage::is_proposal_accepted; @@ -40,7 +37,7 @@ use namada_ibc::trace::{ convert_to_address, ibc_trace_for_nft, is_sender_chain_source, }; use namada_ibc::{ - extract_memo_from_envelope, get_last_sequence_send, IbcMessage, + extract_masp_tx_from_envelope, get_last_sequence_send, IbcMessage, }; use namada_sdk::masp::{verify_shielded_tx, TAddrData}; use namada_state::{ConversionState, OptionExt, ResultExt, StateRead}; @@ -775,15 +772,9 @@ where let ibc_msg = self.ctx.get_ibc_message(tx_data).ok(); let shielded_tx = if let Some(IbcMessage::Envelope(ref envelope)) = ibc_msg { - let memo = - extract_memo_from_envelope(envelope).ok_or_else(|| { - native_vp::Error::new_const( - "Missing MASP transaction in IBC message", - ) - })?; - convert_ibc_memo_to_masp_tx(&memo).map_err(|_| { + extract_masp_tx_from_envelope(envelope).ok_or_else(|| { native_vp::Error::new_const( - "Decoding MASP transaction in IBC message failed", + "Missing MASP transaction in IBC message", ) })? } else { diff --git a/crates/tx/src/action.rs b/crates/tx/src/action.rs index 6748e181aa..3d39874d74 100644 --- a/crates/tx/src/action.rs +++ b/crates/tx/src/action.rs @@ -67,7 +67,7 @@ pub enum PgfAction { #[derive(Clone, Debug, BorshDeserialize, BorshSerialize)] pub struct MaspAction { /// The hash of the masp [`crate::types::Section`] - pub masp_section_ref: Hash, + pub masp_section_ref: Option, } /// Read actions from temporary storage @@ -127,7 +127,7 @@ pub fn get_masp_section_ref( Ok(reader.read_actions()?.into_iter().find_map(|action| { // In case of multiple masp actions we get the first one if let Action::Masp(MaspAction { masp_section_ref }) = action { - Some(masp_section_ref) + masp_section_ref } else { None } diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 0648d060fb..09e355b33f 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -3872,6 +3872,7 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.4.0", + "data-encoding", "ibc", "ibc-derive", "ibc-testkit", diff --git a/wasm/tx_ibc/src/lib.rs b/wasm/tx_ibc/src/lib.rs index 3d7e49f06f..bd7b842c4b 100644 --- a/wasm/tx_ibc/src/lib.rs +++ b/wasm/tx_ibc/src/lib.rs @@ -9,7 +9,7 @@ use namada_tx_prelude::*; #[transaction] fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { let data = ctx.get_tx_data(&tx_data)?; - let (transfer, memo_str) = + let (transfer, masp_tx) = ibc::ibc_actions(ctx).execute(&data).into_storage_result()?; let masp_section_ref = @@ -29,16 +29,14 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { })?, ) } else { - memo_str.and_then(|memo| masp::convert_ibc_memo_to_masp_tx(&memo).ok()) + masp_tx }; if let Some(shielded) = shielded { token::utils::handle_masp_tx(ctx, &shielded) .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { - masp_section_ref: masp_section_ref.unwrap_or_default(), - }))?; + ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; } Ok(()) diff --git a/wasm/tx_shielded_transfer/src/lib.rs b/wasm/tx_shielded_transfer/src/lib.rs index cc9e70a638..d2518d0fce 100644 --- a/wasm/tx_shielded_transfer/src/lib.rs +++ b/wasm/tx_shielded_transfer/src/lib.rs @@ -24,6 +24,8 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; + ctx.push_action(Action::Masp(MaspAction { + masp_section_ref: Some(masp_section_ref), + }))?; Ok(()) } diff --git a/wasm/tx_shielding_transfer/src/lib.rs b/wasm/tx_shielding_transfer/src/lib.rs index 389942686b..b5494c597e 100644 --- a/wasm/tx_shielding_transfer/src/lib.rs +++ b/wasm/tx_shielding_transfer/src/lib.rs @@ -33,7 +33,9 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; + ctx.push_action(Action::Masp(MaspAction { + masp_section_ref: Some(masp_section_ref), + }))?; Ok(()) } diff --git a/wasm/tx_unshielding_transfer/src/lib.rs b/wasm/tx_unshielding_transfer/src/lib.rs index 79bdac0757..3a9023fd9d 100644 --- a/wasm/tx_unshielding_transfer/src/lib.rs +++ b/wasm/tx_unshielding_transfer/src/lib.rs @@ -33,7 +33,9 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; + ctx.push_action(Action::Masp(MaspAction { + masp_section_ref: Some(masp_section_ref), + }))?; Ok(()) } diff --git a/wasm_for_tests/Cargo.lock b/wasm_for_tests/Cargo.lock index 90fb2acbfd..5ae2cfc36a 100644 --- a/wasm_for_tests/Cargo.lock +++ b/wasm_for_tests/Cargo.lock @@ -3939,6 +3939,7 @@ name = "namada_ibc" version = "0.39.0" dependencies = [ "borsh 1.2.1", + "data-encoding", "ibc", "ibc-derive", "ibc-testkit", From a59131d0633b2bc321e7009fc5e374c3da51dfb8 Mon Sep 17 00:00:00 2001 From: yito88 Date: Mon, 1 Jul 2024 22:43:18 +0200 Subject: [PATCH 33/39] add IbcShielding action --- crates/namada/src/ledger/protocol/mod.rs | 3 ++ crates/node/src/shell/finalize_block.rs | 27 ++++++++++------- crates/sdk/src/masp.rs | 37 ++++++++++++++++++++++-- crates/tests/src/e2e/ibc_tests.rs | 10 +++---- crates/tx/src/action.rs | 15 ++++++++-- crates/tx/src/data/mod.rs | 4 +++ wasm/tx_ibc/src/lib.rs | 6 +++- wasm/tx_shielded_transfer/src/lib.rs | 4 +-- wasm/tx_shielding_transfer/src/lib.rs | 4 +-- wasm/tx_unshielding_transfer/src/lib.rs | 4 +-- wasm/vp_implicit/src/lib.rs | 1 + wasm/vp_user/src/lib.rs | 1 + 12 files changed, 86 insertions(+), 30 deletions(-) diff --git a/crates/namada/src/ledger/protocol/mod.rs b/crates/namada/src/ledger/protocol/mod.rs index b19098e18d..ebfb44060e 100644 --- a/crates/namada/src/ledger/protocol/mod.rs +++ b/crates/namada/src/ledger/protocol/mod.rs @@ -374,6 +374,9 @@ where .0 .push(masp_section_ref); } + extended_tx_result.is_ibc_shielding = + namada_tx::action::is_ibc_shielding_transfer(state) + .map_err(Error::StateError)?; state.write_log_mut().commit_tx_to_batch(); } else { state.write_log_mut().drop_tx(); diff --git a/crates/node/src/shell/finalize_block.rs b/crates/node/src/shell/finalize_block.rs index 7adbcd17ba..51a6a3590b 100644 --- a/crates/node/src/shell/finalize_block.rs +++ b/crates/node/src/shell/finalize_block.rs @@ -16,7 +16,6 @@ use namada::ledger::gas::GasMetering; use namada::ledger::ibc; use namada::ledger::pos::namada_proof_of_stake; use namada::ledger::protocol::{DispatchArgs, DispatchError}; -use namada::masp::MaspTxRefs; use namada::proof_of_stake; use namada::proof_of_stake::storage::{ find_validator_by_raw_hash, write_last_block_proposer_address, @@ -445,8 +444,7 @@ where commit_batch_hash, is_any_tx_invalid, } = temp_log.check_inner_results( - &extended_tx_result.tx_result, - extended_tx_result.masp_tx_refs, + &extended_tx_result, tx_data.tx_index, tx_data.height, ); @@ -508,8 +506,7 @@ where commit_batch_hash, is_any_tx_invalid: _, } = temp_log.check_inner_results( - &extended_tx_result.tx_result, - extended_tx_result.masp_tx_refs, + &extended_tx_result, tx_data.tx_index, tx_data.height, ); @@ -964,14 +961,17 @@ impl<'finalize> TempTxLogs { fn check_inner_results( &mut self, - tx_result: &namada::tx::data::TxResult, - masp_tx_refs: MaspTxRefs, + extended_tx_result: &namada::tx::data::ExtendedTxResult< + protocol::Error, + >, tx_index: usize, height: BlockHeight, ) -> ValidityFlags { let mut flags = ValidityFlags::default(); - for (cmt_hash, batched_result) in &tx_result.batch_results.0 { + for (cmt_hash, batched_result) in + &extended_tx_result.tx_result.batch_results.0 + { match batched_result { Ok(result) => { if result.is_accepted() { @@ -1034,10 +1034,17 @@ impl<'finalize> TempTxLogs { // If at least one of the inner transactions is a valid masp tx, update // the events - if !masp_tx_refs.0.is_empty() { + if !extended_tx_result.masp_tx_refs.0.is_empty() { + self.tx_event + .extend(MaspTxBlockIndex(TxIndex::must_from_usize(tx_index))); + self.tx_event.extend(MaspTxBatchRefs( + extended_tx_result.masp_tx_refs.clone(), + )); + } + + if extended_tx_result.is_ibc_shielding { self.tx_event .extend(MaspTxBlockIndex(TxIndex::must_from_usize(tx_index))); - self.tx_event.extend(MaspTxBatchRefs(masp_tx_refs)); } flags diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index b128c7da66..60e74e69e0 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -62,6 +62,7 @@ use namada_events::extend::{ MaspTxBatchRefs as MaspTxBatchRefsAttr, MaspTxBlockIndex as MaspTxBlockIndexAttr, ReadFromEventAttributes, }; +use namada_ibc::{decode_message, extract_masp_tx_from_envelope, IbcMessage}; use namada_macros::BorshDeserializer; #[cfg(feature = "migrations")] use namada_migrations::*; @@ -817,7 +818,11 @@ impl ShieldedContext { let tx = Tx::try_from(block[idx.0 as usize].as_ref()) .map_err(|e| Error::Other(e.to_string()))?; let extracted_masp_txs = - Self::extract_masp_tx(&tx, &masp_sections_refs).await?; + if let Some(masp_sections_refs) = masp_sections_refs { + Self::extract_masp_tx(&tx, &masp_sections_refs).await? + } else { + Self::extract_masp_tx_from_ibc_message(&tx)? + }; // Collect the current transactions shielded_txs.insert( IndexedTx { @@ -864,6 +869,32 @@ impl ShieldedContext { }) } + /// Extract the relevant shield portions from the IBC messages in [`Tx`] + fn extract_masp_tx_from_ibc_message( + tx: &Tx, + ) -> Result, Error> { + let mut masp_txs = Vec::new(); + for cmt in &tx.header.batch { + let tx_data = tx.data(cmt).ok_or_else(|| { + Error::Other("Missing expected masp transaction".to_string()) + })?; + let ibc_msg = decode_message(&tx_data) + .map_err(|_| Error::Other("Invalid IBC message".to_string()))?; + if let IbcMessage::Envelope(ref envelope) = ibc_msg { + if let Some(masp_tx) = extract_masp_tx_from_envelope(envelope) { + masp_txs.push(masp_tx); + } + } + } + if !masp_txs.is_empty() { + Ok(masp_txs) + } else { + Err(Error::Other( + "IBC meesage doesn't have masp transaction".to_string(), + )) + } + } + /// Applies the given transaction to the supplied context. More precisely, /// the shielded transaction's outputs are added to the commitment tree. /// Newly discovered notes are associated to the supplied viewing keys. Note @@ -1964,7 +1995,7 @@ async fn get_indexed_masp_events_at_height( client: &C, height: BlockHeight, first_idx_to_query: Option, -) -> Result>, Error> { +) -> Result)>>, Error> { let first_idx_to_query = first_idx_to_query.unwrap_or_default(); Ok(client @@ -1988,7 +2019,7 @@ async fn get_indexed_masp_events_at_height( MaspTxBatchRefsAttr::read_from_event_attributes( &event.attributes, ) - .ok()?; + .ok(); Some((tx_index, masp_section_refs)) } else { diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 30ce44d10c..fe53fa9d90 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -291,12 +291,12 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { shielded_sync(&test_a, AA_VIEWING_KEY)?; // Shieded transfer from Chain A to Chain B std::env::set_var(ENV_VAR_CHAIN_ID, test_a.net.chain_id.to_string()); - let token_addr = find_address(&test_a, BTC)?; + let token_addr = find_address(&test_a, BTC)?.to_string(); let memo_path = gen_masp_tx( &test_b, AB_PAYMENT_ADDRESS, - token_addr.to_string(), - 100_000_000, + &token_addr, + 1_000_000_000, &port_id_b, &channel_id_b, false, @@ -322,7 +322,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { let memo_path = gen_masp_tx( &test_a, AA_PAYMENT_ADDRESS, - BTC, + &token_addr, 10, &port_id_a, &channel_id_a, @@ -354,7 +354,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { let memo_path = gen_masp_tx( &test_a, AA_PAYMENT_ADDRESS, - BTC, + &token_addr, 10, &port_id_a, &channel_id_a, diff --git a/crates/tx/src/action.rs b/crates/tx/src/action.rs index 3d39874d74..2e502428d4 100644 --- a/crates/tx/src/action.rs +++ b/crates/tx/src/action.rs @@ -27,6 +27,7 @@ pub enum Action { Gov(GovAction), Pgf(PgfAction), Masp(MaspAction), + IbcShielding, } /// PoS tx actions. @@ -67,7 +68,7 @@ pub enum PgfAction { #[derive(Clone, Debug, BorshDeserialize, BorshSerialize)] pub struct MaspAction { /// The hash of the masp [`crate::types::Section`] - pub masp_section_ref: Option, + pub masp_section_ref: Hash, } /// Read actions from temporary storage @@ -127,9 +128,19 @@ pub fn get_masp_section_ref( Ok(reader.read_actions()?.into_iter().find_map(|action| { // In case of multiple masp actions we get the first one if let Action::Masp(MaspAction { masp_section_ref }) = action { - masp_section_ref + Some(masp_section_ref) } else { None } })) } + +/// Helper function to check if the action is IBC shielding transfer +pub fn is_ibc_shielding_transfer( + reader: &T, +) -> Result::Err> { + Ok(reader + .read_actions()? + .iter() + .any(|action| matches!(action, Action::IbcShielding))) +} diff --git a/crates/tx/src/data/mod.rs b/crates/tx/src/data/mod.rs index 20c4019fc2..ea7ad23872 100644 --- a/crates/tx/src/data/mod.rs +++ b/crates/tx/src/data/mod.rs @@ -246,6 +246,8 @@ pub struct ExtendedTxResult { pub tx_result: TxResult, /// The optional references to masp sections pub masp_tx_refs: MaspTxRefs, + /// The flag for IBC shielding transfer + pub is_ibc_shielding: bool, } impl Default for ExtendedTxResult { @@ -253,6 +255,7 @@ impl Default for ExtendedTxResult { Self { tx_result: Default::default(), masp_tx_refs: Default::default(), + is_ibc_shielding: Default::default(), } } } @@ -307,6 +310,7 @@ impl TxResult { ExtendedTxResult { tx_result: self, masp_tx_refs: masp_tx_refs.unwrap_or_default(), + is_ibc_shielding: false, } } } diff --git a/wasm/tx_ibc/src/lib.rs b/wasm/tx_ibc/src/lib.rs index bd7b842c4b..f3b01ad8dd 100644 --- a/wasm/tx_ibc/src/lib.rs +++ b/wasm/tx_ibc/src/lib.rs @@ -36,7 +36,11 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; + if let Some(masp_section_ref) = masp_section_ref { + ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; + } else { + ctx.push_action(Action::IbcShielding)?; + } } Ok(()) diff --git a/wasm/tx_shielded_transfer/src/lib.rs b/wasm/tx_shielded_transfer/src/lib.rs index d2518d0fce..cc9e70a638 100644 --- a/wasm/tx_shielded_transfer/src/lib.rs +++ b/wasm/tx_shielded_transfer/src/lib.rs @@ -24,8 +24,6 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { - masp_section_ref: Some(masp_section_ref), - }))?; + ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; Ok(()) } diff --git a/wasm/tx_shielding_transfer/src/lib.rs b/wasm/tx_shielding_transfer/src/lib.rs index b5494c597e..389942686b 100644 --- a/wasm/tx_shielding_transfer/src/lib.rs +++ b/wasm/tx_shielding_transfer/src/lib.rs @@ -33,9 +33,7 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { - masp_section_ref: Some(masp_section_ref), - }))?; + ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; Ok(()) } diff --git a/wasm/tx_unshielding_transfer/src/lib.rs b/wasm/tx_unshielding_transfer/src/lib.rs index 3a9023fd9d..79bdac0757 100644 --- a/wasm/tx_unshielding_transfer/src/lib.rs +++ b/wasm/tx_unshielding_transfer/src/lib.rs @@ -33,9 +33,7 @@ fn apply_tx(ctx: &mut Ctx, tx_data: BatchedTx) -> TxResult { .wrap_err("Encountered error while handling MASP transaction")?; update_masp_note_commitment_tree(&shielded) .wrap_err("Failed to update the MASP commitment tree")?; - ctx.push_action(Action::Masp(MaspAction { - masp_section_ref: Some(masp_section_ref), - }))?; + ctx.push_action(Action::Masp(MaspAction { masp_section_ref }))?; Ok(()) } diff --git a/wasm/vp_implicit/src/lib.rs b/wasm/vp_implicit/src/lib.rs index db89216caf..5049df4fc5 100644 --- a/wasm/vp_implicit/src/lib.rs +++ b/wasm/vp_implicit/src/lib.rs @@ -102,6 +102,7 @@ fn validate_tx( &addr, )?, Action::Masp(_) => (), + Action::IbcShielding => (), } } diff --git a/wasm/vp_user/src/lib.rs b/wasm/vp_user/src/lib.rs index 4071c6fdc5..5d3f3b76bf 100644 --- a/wasm/vp_user/src/lib.rs +++ b/wasm/vp_user/src/lib.rs @@ -102,6 +102,7 @@ fn validate_tx( &addr, )?, Action::Masp(_) => (), + Action::IbcShielding => (), } } From ad065b09e6fa0a8b3351e0dc35a2a884232c6e51 Mon Sep 17 00:00:00 2001 From: yito88 Date: Mon, 1 Jul 2024 23:42:47 +0200 Subject: [PATCH 34/39] add changelog --- .../unreleased/bug-fixes/3438-fix-ibc-shielding-transfer.md | 2 ++ crates/tests/src/e2e/ibc_tests.rs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 .changelog/unreleased/bug-fixes/3438-fix-ibc-shielding-transfer.md diff --git a/.changelog/unreleased/bug-fixes/3438-fix-ibc-shielding-transfer.md b/.changelog/unreleased/bug-fixes/3438-fix-ibc-shielding-transfer.md new file mode 100644 index 0000000000..021403bf57 --- /dev/null +++ b/.changelog/unreleased/bug-fixes/3438-fix-ibc-shielding-transfer.md @@ -0,0 +1,2 @@ +- Fix IBC shielding transfer for the receiver not to be replaced by a malicious + relayer ([\#3438](https://github.com/anoma/namada/issues/3438)) \ No newline at end of file diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index fe53fa9d90..9e2db303ef 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -2529,7 +2529,7 @@ fn check_shielded_balances( // Check the shielded balance on Chain B let ibc_denom = format!("{dest_port_id}/{dest_channel_id}/btc"); - check_balance(test_b, AB_VIEWING_KEY, ibc_denom, 10_000_000_000)?; + check_balance(test_b, AB_VIEWING_KEY, ibc_denom, 1_000_000_000)?; Ok(()) } From da7aff487fb7cd6d48c84e5c21192f8be52bf9bb Mon Sep 17 00:00:00 2001 From: yito88 Date: Tue, 2 Jul 2024 20:47:38 +0200 Subject: [PATCH 35/39] IbcShieldingData --- crates/ibc/src/msg.rs | 48 ++++++++++++++++++++++++++++++++++--------- crates/sdk/src/tx.rs | 42 +++++++++++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 12 deletions(-) diff --git a/crates/ibc/src/msg.rs b/crates/ibc/src/msg.rs index 3ade437e84..e75d29d00a 100644 --- a/crates/ibc/src/msg.rs +++ b/crates/ibc/src/msg.rs @@ -90,6 +90,21 @@ impl BorshDeserialize for MsgNftTransfer { } } +/// Shielding data in IBC packet memo +#[derive(Debug, Clone, BorshDeserialize, BorshSerialize)] +pub struct IbcShieldingData { + /// MASP transaction for receiving the token + pub shielding: Option, + /// MASP transaction for refunding the token + pub refund: Option, +} + +impl From for String { + fn from(data: IbcShieldingData) -> Self { + HEXUPPER.encode(&data.serialize_to_vec()) + } +} + /// Extract MASP transaction from IBC envelope pub fn extract_masp_tx_from_envelope( envelope: &MsgEnvelope, @@ -111,6 +126,14 @@ pub fn extract_masp_tx_from_envelope( } } +/// Decode IBC shielding data from the memo string +pub fn decode_masp_tx_from_memo( + memo: impl AsRef, +) -> Option { + let bytes = HEXUPPER.decode(memo.as_ref().as_bytes()).ok()?; + IbcShieldingData::try_from_slice(&bytes).ok() +} + /// Extract MASP transaction from IBC packet memo pub fn extract_masp_tx_from_packet( packet: &Packet, @@ -122,26 +145,31 @@ pub fn extract_masp_tx_from_packet( packet.port_id_on_b == PortId::transfer() }; - if is_ft_packet { + let shielding_data = if is_ft_packet { let packet_data = serde_json::from_slice::(&packet.data).ok()?; if packet_data.memo.as_ref().is_empty() { return None; } - let bytes = - HEXUPPER.decode(packet_data.memo.as_ref().as_bytes()).ok()?; - MaspTransaction::try_from_slice(&bytes).ok() + decode_masp_tx_from_memo(packet_data.memo) } else { let packet_data = serde_json::from_slice::(&packet.data).ok()?; - let bytes = HEXUPPER - .decode(packet_data.memo?.as_ref().as_bytes()) - .ok()?; - MaspTransaction::try_from_slice(&bytes).ok() + decode_masp_tx_from_memo(packet_data.memo?) + }?; + + if is_sender { + shielding_data.refund + } else { + shielding_data.shielding } } -/// Get IBC memo string from Transaction +/// Get IBC memo string from MASP transaction for receiving pub fn convert_masp_tx_to_ibc_memo(transaction: &MaspTransaction) -> String { - HEXUPPER.encode(&transaction.serialize_to_vec()) + let shielding_data = IbcShieldingData { + shielding: Some(transaction.clone()), + refund: None, + }; + shielding_data.into() } diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 135fe948bc..df58b5642f 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -52,7 +52,9 @@ use namada_governance::storage::proposal::{ use namada_governance::storage::vote::ProposalVote; use namada_ibc::storage::channel_key; use namada_ibc::trace::{convert_to_address, is_nft_trace}; -use namada_ibc::{MsgNftTransfer, MsgTransfer}; +use namada_ibc::{ + decode_masp_tx_from_memo, IbcShieldingData, MsgNftTransfer, MsgTransfer, +}; use namada_proof_of_stake::parameters::{ PosParams, MAX_VALIDATOR_METADATA_LEN, }; @@ -2589,6 +2591,42 @@ pub async fn build_ibc_transfer( (args.source.spending_key().is_some() && refund_target.is_some()) || (args.source.address().is_some() && refund_target.is_none()) ); + // Reconstruct the memo for refunding if needed + let memo = if let Some(refund_target) = refund_target { + // Generate MASP transaction for refunding the token + let masp_tx = construct_shielded_parts( + context, + &TransferSource::Address(MASP), + &TransferTarget::PaymentAddress(refund_target), + &args.token, + validated_amount, + !(args.tx.dry_run || args.tx.dry_run_wrapper), + ) + .await? + .map(|(shielded_transfer, _)| shielded_transfer.masp_tx); + let shielding_data = match &args.memo { + Some(memo) => { + if let Some(mut shielding_data) = decode_masp_tx_from_memo(memo) + { + shielding_data.refund = masp_tx; + shielding_data + } else { + return Err(Error::Other( + "The memo has been already set. The refunding for the \ + spending key can't be set" + .to_string(), + )); + } + } + None => IbcShieldingData { + shielding: None, + refund: masp_tx, + }, + }; + Some(shielding_data.into()) + } else { + args.memo.clone() + }; // If the refund address is given, set the refund address. It is used only // when refunding and won't affect the actual transfer because the actual // source will be the MASP address and the MASP transaction is generated by @@ -2609,7 +2647,7 @@ pub async fn build_ibc_transfer( token, sender, receiver: args.receiver.clone().into(), - memo: args.memo.clone().unwrap_or_default().into(), + memo: memo.unwrap_or_default().into(), }; let message = IbcMsgTransfer { port_id_on_a: args.port_id.clone(), From cbf27b1dfa96f511fd788725a4384d273b23097a Mon Sep 17 00:00:00 2001 From: yito88 Date: Tue, 2 Jul 2024 21:07:42 +0200 Subject: [PATCH 36/39] update Hermes --- .github/workflows/scripts/hermes.txt | 2 +- scripts/get_hermes.sh | 6 +-- wasm/checksums.json | 56 ++++++++++++++-------------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/scripts/hermes.txt b/.github/workflows/scripts/hermes.txt index b86c49b38e..462bc5f5b9 100644 --- a/.github/workflows/scripts/hermes.txt +++ b/.github/workflows/scripts/hermes.txt @@ -1 +1 @@ -1.8.2-namada-beta11-rc2 +1.9.0-namada-beta13-rc diff --git a/scripts/get_hermes.sh b/scripts/get_hermes.sh index 70ac00bf0a..23bf8669bc 100755 --- a/scripts/get_hermes.sh +++ b/scripts/get_hermes.sh @@ -2,9 +2,9 @@ set -Eo pipefail -HERMES_MAJORMINOR="1.8" -HERMES_PATCH="2" -HERMES_SUFFIX="-namada-beta11-rc2" +HERMES_MAJORMINOR="1.9" +HERMES_PATCH="0" +HERMES_SUFFIX="-namada-beta13-rc" HERMES_REPO="https://github.com/heliaxdev/hermes" diff --git a/wasm/checksums.json b/wasm/checksums.json index 7a966335b1..7a7cf8ba13 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,30 +1,30 @@ { - "tx_become_validator.wasm": "tx_become_validator.4f1e76ec5da525948d9575796b0c6683eff9689b22255de249207c849cc6f0d0.wasm", - "tx_bond.wasm": "tx_bond.f6d899fe2cbb41e0a135b517710b4c2e068952c54e82b73ef8ddb77412ea2088.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.8739c0dac4096a046033fca1c3340177ac4f1043fa9dda085d65f0a4e5f31243.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.f101256403ee7b9a38a2de4a71c588c376d68e95032eeb7f7994ee17e06774a6.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.5469034fd42d44538e6c2cd2b895e34df04f0f596da80ce54501dbdf9cf44e1f.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.cb15bd04dea7ca315a24d67b55713a9fe89dc16dd62260915f84042e747412cc.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.59d81b5e7eb568c42c153e9091b17e28a1772d2f33916814840454a327fef42b.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.ae5bf0233d15e2f0bdbb14cd2907304ae04c4419b16d7bc44610e79415105924.wasm", - "tx_ibc.wasm": "tx_ibc.6d07e866d2cdbeab69686bc0410cba928545ae9986119d34a3e2d8d71f77e1a0.wasm", - "tx_init_account.wasm": "tx_init_account.81d928b7f96e26ec5b18765dc5f16968b7c1d71a4e48481b293da76bf222249d.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.d06e14567907b0f277a2d1c66930bb0a394e6a0b2f169bb65abbfd3b7ee89282.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.8cb3d5f049406fa7d406d5896822a11ef550301f61509b7cb8450aac1350e529.wasm", - "tx_redelegate.wasm": "tx_redelegate.eb53fecae6cfda6c3b57acff30dec1bf4f904d94574dab78dbad82c778f935df.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.deba9e96ac15d2c0fd860dfe7e1d06c87a429f4284b3c07d69e7a4fc3eefe911.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.06f2adf6a14ec4abb3bf2d2684c38a2392f5bb4210856889b21963df01e4e4b8.wasm", - "tx_shielded_transfer.wasm": "tx_shielded_transfer.66725082d1d9d46cd3a25f16eacd58173d57e6819c77514a18ee8ecf196b8d82.wasm", - "tx_shielding_transfer.wasm": "tx_shielding_transfer.8ac5661d62d4e2d3a974fa71754b623db7e86d68f5e78154db1d1dc239a57b74.wasm", - "tx_transfer.wasm": "tx_transfer.bdcefbc0bd9b6ace1d4ae9fb2f794374c6ca70f5eb87792a0b6eaae3a7fea25f.wasm", - "tx_transparent_transfer.wasm": "tx_transparent_transfer.8c0d274a690da55e0c44fd6e7e8167928f0fd83ae622eb3d838a99c3db571975.wasm", - "tx_unbond.wasm": "tx_unbond.af4554a4b89cbedbec509bd5aa7526c3fcf1707465116e7d51bb06e2523cecf3.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.c01f6f4cb29616c5d88524dd9ce7ba1b79b98eb7c4f83082f083d3d24402a797.wasm", - "tx_unshielding_transfer.wasm": "tx_unshielding_transfer.a4b197bbe47cf9e5954741fb7cbee0b1713fd35016b8dbd1a209be5ec95c2938.wasm", - "tx_update_account.wasm": "tx_update_account.15036b8968aed2ece5bbbbf8d0da29076d240caefe023fe61d011d42e7a90947.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.c872eefca45074de9347aae3ac19acdc92cd0d81ea6731a218280fe3dd8d6042.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.6a63dffdeddb8ef403f195aa21e366c24477f812a4494c2d8b371bce0b75fe6b.wasm", - "tx_withdraw.wasm": "tx_withdraw.4e27b4f77263929757f11ab99cbfe59fd19e12f9decd597077391b6f9b768f43.wasm", - "vp_implicit.wasm": "vp_implicit.b968ab508c184e93c7d8cca6ec117b69aa563488aae1f3489e943ef403f480bd.wasm", - "vp_user.wasm": "vp_user.daa69b1953ff737253457d8b3ac133ba984d032c2e00c52e87cdd1647e719625.wasm" + "tx_become_validator.wasm": "tx_become_validator.e7df6f1c325ee806fee95c30a11246b3e2330c6002783074bd04b6a5998f245d.wasm", + "tx_bond.wasm": "tx_bond.8a6d2ae51d45d1158698771c30a17082940fce2b9a78f6a7f923b5f7e868673b.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.15accaf56e6fbd893148f79d4221bb0fdca4a87d9b0c19cdc68ede9851deb579.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.28bea8969a729109dceae5297aa1bbd10f2737db01a0cb99689e325eeac4c616.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.9d3eac2909df762cad56f5637071b1176d997b346bb5b9241cb2bd848f0435e8.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.d5a7c0758911deb50dd4a0c0ee30cd2f012c4f2298f265b81c8a5a3099ca0cd1.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.7ce4a02d2975d0fce0184928514c9c367dea215fc85c5a57ee97eaf210e1e96e.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.8f6f5656532d1d48e458d7bddf1f426e8560a86c2e91fc44847bb95f181269b2.wasm", + "tx_ibc.wasm": "tx_ibc.6b21da1fdb95f1c98cb85b2c3345476c14ff487010cc3f3bcc3cdf30c0dffc93.wasm", + "tx_init_account.wasm": "tx_init_account.60291c66452b637dbe886ee6389ac730a13b36d6839e7328be8d7addd7ef562d.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.53564391242ecdab3a0b205b6bae743bc1bccbb300a68bd1e12eab0c98c9aebd.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.c5dbeb071983ea2b7b87179771e65b845efa2552239437407716c21e328a470f.wasm", + "tx_redelegate.wasm": "tx_redelegate.6f65111cb6c8277a0709c204f3cd85f84cea8c07869efe4c7c821fc4341871c1.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.8791257f6474e6dd759161c202cd25943ae1f464dbaf6533fa4e7f7b1ebfd99f.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.a86d975548a13167f095223764d690aceafe9faad797bc2004d9bd5185ca4307.wasm", + "tx_shielded_transfer.wasm": "tx_shielded_transfer.2c2dccc5c5925580bf955fdbff0e8724e8381645ab76584d52fd8515fa3d8805.wasm", + "tx_shielding_transfer.wasm": "tx_shielding_transfer.6ad3817afe35fc5d1cc0f124a4bc6f02a8ec0802b97d606555c839d45a4bf1b4.wasm", + "tx_transfer.wasm": "tx_transfer.8acfe426d01adc17018c07b1c9f2eb3f77ddff4a6e452c8d5ae16832a0e79c85.wasm", + "tx_transparent_transfer.wasm": "tx_transparent_transfer.2f18f3a8895625fcd69be2aa587e9fc82eb5fd3cb7df305f70e915eb040899bd.wasm", + "tx_unbond.wasm": "tx_unbond.4f88701b831ca58847ee9d03f15a92a641781a4f3142f61648a840a43c9de59c.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.4ebc6c6dedd6587b033eaebd69725cce91f02ac47b695479d3a96eadd6b1f831.wasm", + "tx_unshielding_transfer.wasm": "tx_unshielding_transfer.e238a486605d9c38ca483f34efd8f8cf62156662adba3e9f82f63424eb749413.wasm", + "tx_update_account.wasm": "tx_update_account.26daf5e95aae1417decc5553b555e4eea80d0f66148718c23d8afc0a80b94649.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.e39ba50d5329a190812bcda5e511f357fa87e9cc53ab12598e09ed777c5e9222.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.abd17ec3f379f6255819c6a1f375e135f8e5c91a7cfa04cf655953f2e7a69553.wasm", + "tx_withdraw.wasm": "tx_withdraw.f58f27408ce18ce9cf4e1fe0f8a0acd16533bb431aa64913776acc36bbd91d2f.wasm", + "vp_implicit.wasm": "vp_implicit.6432b1d7ae9dcd3c17b7643f0ac4f799e6366a5fb08d483e369ba0994568596d.wasm", + "vp_user.wasm": "vp_user.6b9e7d5eb43e69281728376855790e0a893a9c6d39d4451f286f0d1f83a662f5.wasm" } \ No newline at end of file From be2e7df3d99ec1d5e2f686a89b04baa93d7dbf28 Mon Sep 17 00:00:00 2001 From: yito88 Date: Tue, 2 Jul 2024 23:35:27 +0200 Subject: [PATCH 37/39] fix refund source --- crates/sdk/src/tx.rs | 6 ++--- crates/tests/src/e2e/ibc_tests.rs | 42 +++++++++++++------------------ 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index df58b5642f..6612af1251 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -20,7 +20,7 @@ use masp_primitives::transaction::components::I128Sum; use masp_primitives::transaction::{builder, Transaction as MaspTransaction}; use masp_primitives::zip32::ExtendedFullViewingKey; use namada_account::{InitAccount, UpdateAccount}; -use namada_core::address::{Address, InternalAddress, MASP}; +use namada_core::address::{Address, IBC, MASP}; use namada_core::arith::checked; use namada_core::collections::HashSet; use namada_core::dec::Dec; @@ -2596,7 +2596,7 @@ pub async fn build_ibc_transfer( // Generate MASP transaction for refunding the token let masp_tx = construct_shielded_parts( context, - &TransferSource::Address(MASP), + &TransferSource::Address(IBC), &TransferTarget::PaymentAddress(refund_target), &args.token, validated_amount, @@ -3520,7 +3520,7 @@ pub async fn gen_ibc_shielding_transfer( context: &N, args: args::GenIbcShieldingTransfer, ) -> Result> { - let source = Address::Internal(InternalAddress::Ibc); + let source = IBC; let (src_port_id, src_channel_id) = get_ibc_src_port_channel(context, &args.port_id, &args.channel_id) .await?; diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 9e2db303ef..724b56cf85 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -157,7 +157,7 @@ fn run_ledger_ibc() -> Result<()> { BERTHA, ALBERT, token, - 50000, + 50_000_000_000, BERTHA_KEY, )?; check_balances_after_non_ibc(&port_id_b, &channel_id_b, &test_b)?; @@ -295,7 +295,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { let memo_path = gen_masp_tx( &test_b, AB_PAYMENT_ADDRESS, - &token_addr, + token_addr, 1_000_000_000, &port_id_b, &channel_id_b, @@ -319,15 +319,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { check_shielded_balances(&port_id_b, &channel_id_b, &test_a, &test_b)?; // Shielded transfer to an invalid receiver address (refund) - let memo_path = gen_masp_tx( - &test_a, - AA_PAYMENT_ADDRESS, - &token_addr, - 10, - &port_id_a, - &channel_id_a, - true, - )?; transfer( &test_a, A_SPENDING_KEY, @@ -338,7 +329,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &port_id_a, &channel_id_a, None, - Some(memo_path), + None, None, false, )?; @@ -351,15 +342,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { hermes.interrupt()?; // Send transfer will be timed out (refund) - let memo_path = gen_masp_tx( - &test_a, - AA_PAYMENT_ADDRESS, - &token_addr, - 10, - &port_id_a, - &channel_id_a, - true, - )?; transfer( &test_a, A_SPENDING_KEY, @@ -370,7 +352,7 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { &port_id_a, &channel_id_a, Some(Duration::new(10, 0)), - Some(memo_path), + None, None, false, )?; @@ -692,7 +674,8 @@ fn proposal_ibc_token_inflation() -> Result<()> { setup_hermes(&test_a, &test_b)?; let port_id_a = "transfer".parse().unwrap(); - let (channel_id_a, _channel_id_b) = + let port_id_b = "transfer".parse().unwrap(); + let (channel_id_a, channel_id_b) = create_channel_with_hermes(&test_a, &test_b)?; // Start relaying @@ -703,6 +686,17 @@ fn proposal_ibc_token_inflation() -> Result<()> { wait_epochs(&test_b, 1)?; // Transfer 1 from Chain A to a z-address on Chain B + std::env::set_var(ENV_VAR_CHAIN_ID, test_a.net.chain_id.to_string()); + let token_addr = find_address(&test_a, APFEL)?.to_string(); + let memo_path = gen_masp_tx( + &test_b, + AB_PAYMENT_ADDRESS, + token_addr, + 1_000_000, + &port_id_b, + &channel_id_b, + false, + )?; transfer( &test_a, ALBERT, @@ -713,7 +707,7 @@ fn proposal_ibc_token_inflation() -> Result<()> { &port_id_a, &channel_id_a, None, - None, + Some(memo_path), None, false, )?; From ca795542d1b2dfe1b4d3b4fea8f3dfd751672db1 Mon Sep 17 00:00:00 2001 From: yito88 Date: Wed, 3 Jul 2024 10:57:34 +0200 Subject: [PATCH 38/39] extract_memo_from_packet --- crates/ibc/src/msg.rs | 53 +++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/crates/ibc/src/msg.rs b/crates/ibc/src/msg.rs index e75d29d00a..454f4b82c2 100644 --- a/crates/ibc/src/msg.rs +++ b/crates/ibc/src/msg.rs @@ -2,8 +2,10 @@ use borsh::{BorshDeserialize, BorshSerialize}; use data_encoding::HEXUPPER; use ibc::apps::nft_transfer::types::msgs::transfer::MsgTransfer as IbcMsgNftTransfer; use ibc::apps::nft_transfer::types::packet::PacketData as NftPacketData; +use ibc::apps::nft_transfer::types::PORT_ID_STR as NFT_PORT_ID_STR; use ibc::apps::transfer::types::msgs::transfer::MsgTransfer as IbcMsgTransfer; use ibc::apps::transfer::types::packet::PacketData; +use ibc::apps::transfer::types::PORT_ID_STR as FT_PORT_ID_STR; use ibc::core::channel::types::msgs::PacketMsg; use ibc::core::channel::types::packet::Packet; use ibc::core::handler::types::msgs::MsgEnvelope; @@ -139,25 +141,13 @@ pub fn extract_masp_tx_from_packet( packet: &Packet, is_sender: bool, ) -> Option { - let is_ft_packet = if is_sender { - packet.port_id_on_a == PortId::transfer() + let port_id = if is_sender { + &packet.port_id_on_a } else { - packet.port_id_on_b == PortId::transfer() + &packet.port_id_on_b }; - - let shielding_data = if is_ft_packet { - let packet_data = - serde_json::from_slice::(&packet.data).ok()?; - if packet_data.memo.as_ref().is_empty() { - return None; - } - decode_masp_tx_from_memo(packet_data.memo) - } else { - let packet_data = - serde_json::from_slice::(&packet.data).ok()?; - decode_masp_tx_from_memo(packet_data.memo?) - }?; - + let memo = extract_memo_from_packet(packet, port_id)?; + let shielding_data = decode_masp_tx_from_memo(memo)?; if is_sender { shielding_data.refund } else { @@ -165,6 +155,35 @@ pub fn extract_masp_tx_from_packet( } } +fn extract_memo_from_packet( + packet: &Packet, + port_id: &PortId, +) -> Option { + match port_id.as_str() { + FT_PORT_ID_STR => { + let packet_data = + serde_json::from_slice::(&packet.data).ok()?; + if packet_data.memo.as_ref().is_empty() { + None + } else { + Some(packet_data.memo.as_ref().to_string()) + } + } + NFT_PORT_ID_STR => { + let packet_data = + serde_json::from_slice::(&packet.data).ok()?; + Some(packet_data.memo?.as_ref().to_string()) + } + _ => { + tracing::warn!( + "Memo couldn't be extracted from the unsupported IBC packet \ + data for Port ID {port_id}" + ); + None + } + } +} + /// Get IBC memo string from MASP transaction for receiving pub fn convert_masp_tx_to_ibc_memo(transaction: &MaspTransaction) -> String { let shielding_data = IbcShieldingData { From 7212f7e13be52c32d563cf2e012fa6ec4e6e5eeb Mon Sep 17 00:00:00 2001 From: yito88 Date: Thu, 4 Jul 2024 10:43:45 +0200 Subject: [PATCH 39/39] remove --refund --- crates/apps_lib/src/cli.rs | 7 ------- crates/sdk/src/args.rs | 2 -- crates/sdk/src/masp.rs | 4 ++-- crates/sdk/src/tx.rs | 29 ++++++++++++----------------- crates/tests/src/e2e/ibc_tests.rs | 10 +--------- 5 files changed, 15 insertions(+), 37 deletions(-) diff --git a/crates/apps_lib/src/cli.rs b/crates/apps_lib/src/cli.rs index 2d23bce83c..f4574b993c 100644 --- a/crates/apps_lib/src/cli.rs +++ b/crates/apps_lib/src/cli.rs @@ -3349,7 +3349,6 @@ pub mod args { pub const RAW_PUBLIC_KEY_HASH_OPT: ArgOpt = RAW_PUBLIC_KEY_HASH.opt(); pub const RECEIVER: Arg = arg("receiver"); - pub const REFUND: ArgFlag = flag("refund"); pub const REFUND_TARGET: ArgOpt = arg_opt("refund-target"); pub const RELAYER: Arg
= arg("relayer"); @@ -6480,7 +6479,6 @@ pub mod args { amount: self.amount, port_id: self.port_id, channel_id: self.channel_id, - refund: self.refund, }) } } @@ -6494,7 +6492,6 @@ pub mod args { let amount = InputAmount::Unvalidated(AMOUNT.parse(matches)); let port_id = PORT_ID.parse(matches); let channel_id = CHANNEL_ID.parse(matches); - let refund = REFUND.parse(matches); Self { query, output_folder, @@ -6503,7 +6500,6 @@ pub mod args { amount, port_id, channel_id, - refund, } } @@ -6525,9 +6521,6 @@ pub mod args { .arg(CHANNEL_ID.def().help(wrap!( "The channel ID via which the token is received." ))) - .arg(REFUND.def().help(wrap!( - "Generate the shielding transfer for refunding." - ))) } } diff --git a/crates/sdk/src/args.rs b/crates/sdk/src/args.rs index f4dab15085..f8c81d1a76 100644 --- a/crates/sdk/src/args.rs +++ b/crates/sdk/src/args.rs @@ -2662,6 +2662,4 @@ pub struct GenIbcShieldingTransfer { pub port_id: PortId, /// Channel ID via which the token is received pub channel_id: ChannelId, - /// Generate the shielding transfer for refunding - pub refund: bool, } diff --git a/crates/sdk/src/masp.rs b/crates/sdk/src/masp.rs index 60e74e69e0..a3798355cb 100644 --- a/crates/sdk/src/masp.rs +++ b/crates/sdk/src/masp.rs @@ -876,7 +876,7 @@ impl ShieldedContext { let mut masp_txs = Vec::new(); for cmt in &tx.header.batch { let tx_data = tx.data(cmt).ok_or_else(|| { - Error::Other("Missing expected masp transaction".to_string()) + Error::Other("Missing transaction data".to_string()) })?; let ibc_msg = decode_message(&tx_data) .map_err(|_| Error::Other("Invalid IBC message".to_string()))?; @@ -890,7 +890,7 @@ impl ShieldedContext { Ok(masp_txs) } else { Err(Error::Other( - "IBC meesage doesn't have masp transaction".to_string(), + "IBC message doesn't have masp transaction".to_string(), )) } } diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 6612af1251..c7e11e5058 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -51,7 +51,7 @@ use namada_governance::storage::proposal::{ }; use namada_governance::storage::vote::ProposalVote; use namada_ibc::storage::channel_key; -use namada_ibc::trace::{convert_to_address, is_nft_trace}; +use namada_ibc::trace::is_nft_trace; use namada_ibc::{ decode_masp_tx_from_memo, IbcShieldingData, MsgNftTransfer, MsgTransfer, }; @@ -3526,22 +3526,17 @@ pub async fn gen_ibc_shielding_transfer( .await?; let ibc_denom = rpc::query_ibc_denom(context, &args.token, Some(&source)).await; - let token = if args.refund { - convert_to_address(ibc_denom) - .map_err(|e| Error::Other(format!("Invalid token: {e}")))? - } else { - // Need to check the prefix - namada_ibc::received_ibc_token( - &ibc_denom, - &src_port_id, - &src_channel_id, - &args.port_id, - &args.channel_id, - ) - .map_err(|e| { - Error::Other(format!("Getting IBC Token failed: error {e}")) - })? - }; + // Need to check the prefix + let token = namada_ibc::received_ibc_token( + &ibc_denom, + &src_port_id, + &src_channel_id, + &args.port_id, + &args.channel_id, + ) + .map_err(|e| { + Error::Other(format!("Getting IBC Token failed: error {e}")) + })?; let validated_amount = validate_amount(context, args.amount, &token, false).await?; diff --git a/crates/tests/src/e2e/ibc_tests.rs b/crates/tests/src/e2e/ibc_tests.rs index 724b56cf85..51513d83d1 100644 --- a/crates/tests/src/e2e/ibc_tests.rs +++ b/crates/tests/src/e2e/ibc_tests.rs @@ -299,7 +299,6 @@ fn run_ledger_ibc_with_hermes() -> Result<()> { 1_000_000_000, &port_id_b, &channel_id_b, - false, )?; transfer( &test_a, @@ -492,7 +491,6 @@ fn ibc_namada_gaia() -> Result<()> { 100, &port_id_namada, &channel_id_namada, - false, )?; transfer_from_gaia( &test_gaia, @@ -695,7 +693,6 @@ fn proposal_ibc_token_inflation() -> Result<()> { 1_000_000, &port_id_b, &channel_id_b, - false, )?; transfer( &test_a, @@ -2685,14 +2682,13 @@ fn gen_masp_tx( amount: u64, port_id: &PortId, channel_id: &ChannelId, - is_refund: bool, ) -> Result { std::env::set_var(ENV_VAR_CHAIN_ID, dst_test.net.chain_id.to_string()); let rpc = get_actor_rpc(dst_test, Who::Validator(0)); let output_folder = dst_test.test_dir.path().to_string_lossy(); let amount = amount.to_string(); - let mut args = vec![ + let args = vec![ "ibc-gen-shielding", "--output-folder-path", &output_folder, @@ -2710,10 +2706,6 @@ fn gen_masp_tx( &rpc, ]; - if is_refund { - args.push("--refund"); - } - let mut client = run!(dst_test, Bin::Client, args, Some(120))?; let (_unread, matched) = client.exp_regex("Output IBC shielding transfer .*")?;

@TIS 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 Rg-gP}`uNwDUmvbD`9GDZgM0u0 delta 19485 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 HqBZ+Jor^33 diff --git a/wasm_for_tests/tx_proposal_code.wasm b/wasm_for_tests/tx_proposal_code.wasm index cf6fcb32f98b178cbd9aceb35661330df32822d4..b5caf73670bb08ad44d79a58103e25680e8cd1b8 100755 GIT binary patch delta 36067 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 VoyXsG{QZQ#`}li=zrXSK{{X2>+HwE@ delta 36412 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°N6PQGdL8Wq{jeU3_Wub_Mh>3xeha0jaSgA9t?s5=*oJKqjUddeo8XKu zp+}p~MXjubG;Oo^-1#Z6P|R3N zN*|<&!2g(4Q`5vM`=_%hd5h@mb(7?_C>%Gr;YGK%i1YX%MQa1npMKmbx}tL%ri;4X zV?_vwN@C@&sxPN$>FD+&o{i~Z7-Q!tW;@)h^VEC?!uBh+i|}0gABVRC(kgQ9fR~W7 zHBuVCUS}57uHem;(p2X+bqp<9t6;U`hbTsvp0kOvc86$EaDwVyDJOU~Q|Zqgm_Uw@ z+k@q;+MbK2#yg=J-_WC-2={zLt#%2Woua9`M0>x}DN^Ex=;|&p0`6g_-B=2qp{2V; zQNO+Fhlvi+{@tPhivHd$-f6jWvIMv9Ob&Jl-ON!Nz|voghZl?8Fr4&|uRY`i$8T8L z;Iwy-n1a307JEh2_`FcicpFMe07!9>j$DA^b+M&;;qhe9uDzJ^)==+#m;pD_wS8E& zZKdG-h_F{C@Ec2KSB!R5*3|0nrohSKmH>!0S}%l_6pZDnH32 zHyD=>PS1b=PNl6GqGZUp++v-UOc@zC{`@FI1mnF}zk_13U-nc}c63lQ&a*d-xQF>e z@Ge}{>D`-JnElUrOzxm@kuV-gIadUm4qsG`9JGmHR^gq$oGlfJR-`5Jy4O#0x%JIWNLyGl6hkS?LHzZ z2F#K<^0*uQaYWSj)IKW8M>)@;uZ^-NO48)-(Z%TL@5S3O$K{-AA1r(N<_1sAA4Eby z-hBiuy(?af?LIBIUJEHO+|hal_Y#K^XYl}H?gcYZd-|X*;&16 z#AwaY4RC$9!x4a|o!;zpI7;S9r`u`z;ALlv0ybDS!W;vg5z&2zy#3Zltj?==5uEn1 z5YFr5Y=YLBc5>DZwW}5LbvS}0cAD17xdf#ZIy;}kV_;|J5O&mauCw!$2+bU$IeG#p z9HdpoGt;y8Rc9N)HhBDdI0G5I(#Kh<$lRft1HU5WsD{7l_>ztLR7u4vqj>lw>3v4 z(6AbRMe%2+H|9%k&6oD%OYhB>{ybm$1k#1@XX8I;mM3~MzRp+S+kELu`O@F#OJC2I zzLhV1H(&a1qzgH;9EyHd0G^utoh4Z4EAMEIy2$7ZDHgz!lU~pnR&3PJp1lVR8uHGd zH%5#^ZaMrx&(vQR>NUXGo(>FfCQ;wlopYfb4_|jS^s3NiTVbi?Kxb`~CJj`2cGyfk zHXk+KaF+L0>5s;xjw4p`hVzxWrQX*Z#gXjWduZ>zZ;Tx6lIk!3)F7`d%0lsM^;WH~fU6Ibyx$1Nz zKy$Q1@;UG+?bS}VM7mh6bStDKadvrYq)X>YcR*SaXqV4Gx>2t5Hl$@ccKIQsJ45b{ zFdF!#^SMwvzaq>O|B=1zO=rV+J9{CrRJKL#a-?JM_r_bJdJlS|pKBHs8{{mBnWxbp zXJTm9hvp#E&+3y>lsU*bf_0~+gJI8^v~94ncECT@zk&2{uya!AnncafLAK&&4h2nV z)>}?uO%d5}jtD-Jq^b7q%O|<+W7TnBh_g{>sj-^lCDf{jKRG;=B5kO%FNTbfL!F7t z=f&|F#uNn}GThlAbR^P!0JaE(!Qpa@q@lx|-3mQKb}J;)p%7K^d^nyi4|n!q{ix9h zXE#JF7maY1uU~3{=7>hA6#LO+&Cv$W2l#`I=SfE(-4ErGuABIal4){|boMPY4Jckl zvI3+pdm9an9_g$W<(R19hXG~UBqSlw)J&9rHqyBpzu1!WwzDS&N%@a1zwNxj{5^X| xIsN<#3Jfs+Z=yh~4#eiA(=XPsC@Ji05@0wC#Aku{8W7(F;-^6T28h1`F#yUHJ+}Y= diff --git a/wasm_for_tests/tx_proposal_ibc_token_inflation.wasm b/wasm_for_tests/tx_proposal_ibc_token_inflation.wasm index c22dede5731d25b3c8e2ad56728545e0e28c5ff7..5681f5ccd1e0cb5bc5188c3379ffd585c5f34570 100755 GIT binary patch delta 30683 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 delta 29421 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 diff --git a/wasm_for_tests/tx_read_storage_key.wasm b/wasm_for_tests/tx_read_storage_key.wasm index f06fc1839748e3949daf8d1f5c4eb2a400b118c8..ff32c6c6e68de6cde9557e803db6034412a9ba30 100755 GIT binary patch delta 13888 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 diff --git a/wasm_for_tests/tx_write.wasm b/wasm_for_tests/tx_write.wasm index bae7cf9216874b465eeb641b3dda76c31a43e1e8..7204ab109e7f7d23671d58d3deb8352922d8d17e 100755 GIT binary patch delta 40919 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

Lzj`+{+>n^>E|JBG|7L8L;J!98ZG7*uA9sucJg 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 diff --git a/wasm_for_tests/vp_always_false.wasm b/wasm_for_tests/vp_always_false.wasm index 86dac8f4623ffe1bbe7f1f6f1cda3c064f781d38..31b3b0e3ed4f059c767c822098883adc912886d5 100755 GIT binary patch delta 43835 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%0D%oqKaHa4(Y4hhZb&t3(AAWI9u}fH) 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 E7mF|FhyVZp delta 43969 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